計算機科学のブログ

コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する <*>を使ってデータをコンテキスト内で作成する レコード構文、Maybe型、Nothing

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

結果はNothingになる。

実際に確認。

コード

data User = User
  { name :: String,
    gameId :: Int,
    score :: Int
  }
  deriving (Show)

userName :: Maybe String
userName = Nothing

userGameId :: Maybe Int
userGameId = Just 1337

userScore :: Maybe Int
userScore = Just 9001

user :: Maybe User
user = User <$> userName <*> userGameId <*> userScore

main :: IO ()
main = do
  print user

入出力結果(Terminal, Zsh)

% runghc sample05.hs 
Nothing
%