計算機科学のブログ

Haskell - コンテキストでの型の操作 - Applicative型クラス:関数をコンテキスト内で使用する - <*>を使ってデータをコンテキスト内で作成する

入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)の UNIT5(コンテキストでの型の操作)、LESSON 28(Applicative型クラス:関数をコンテキスト内で使用する)、28.3(<*>を使ってデータをコンテキスト内で作成する)、クイックチェック28-5の解答を求めてみる。

コード

sample5.hs

main :: IO ()
main = do
    print $ User <$> Just "Sue" <*> Just 1337 <*> Just 9001
    -- Nothing
    print $ User <$> Nothing <*> Just 1337 <*> Just 9001

data User = User
  { name :: String,
    gamerId :: Int,
    score :: Int
  } deriving Show

入出力結果(Terminal, Zsh)

% runghc sample5.hs
Just (User {name = "Sue", gamerId = 1337, score = 9001})
Nothing
%