計算機科学のブログ

コンテキストでの型の操作 コンテキストとしてのリスト:Applicative型クラスをさらに掘り下げる pure関数、<*>演算子

入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT5(コンテキストでの型の操作)、LESSON 29(コンテキストとしてのリスト:Applicative型クラスをさらに掘り下げる)、29.5(練習問題)Q29-2の解答を求めてみる。

コード

lesson/app/Main.hs

module Main (main) where

import Lib ()

example :: Int
example = (*) ((+) 2 4) 6

exampleMaybe :: Maybe Int
exampleMaybe =
  pure (*)
    <*> pure ((+) 2 4)
    <*> pure 6

exampleMaybe1 :: Maybe Int
exampleMaybe1 =
  pure (*)
    <*> ( pure (+)
            <*> pure 2
            <*> pure 4
        )
    <*> pure 6

main :: IO ()
main = do
  print example
  print exampleMaybe
  print exampleMaybe1