計算機科学のブログ

型の紹介 カスタム型の作成 レコード構文を使用する レコード構文を使用しない場合

入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT2(型の紹介)、LESSON12(カスタム型の作成)、12.3(レコード構文を使用する)、クイックチェック12-2の解答を求めてみる。

コード

type FirstName = String

type MiddleName = String

type LastName = String

-- 出力のためにまだ出てきてないけどderiving Showを追加
data Name
  = Name FirstName LastName
  | NameWithMiddle FirstName MiddleName LastName
  deriving (Show)

data Sex = Male | Female deriving (Show)

data ABOType = A | B | AB | O deriving (Show)

data RhType = Pos | Neg deriving (Show)

data BloodType = BloodType ABOType RhType deriving (Show)

data Patient = Patient Name Sex Int Int Int BloodType deriving (Show)

patient :: Patient
patient =
  Patient
    (NameWithMiddle "Jane" "Elizabeth" "Smith")
    Female
    30
    74
    200
    (BloodType AB Pos)

main :: IO ()
main = do
  print patient

入出力結果(Terminal, Zsh)

% runghc sample02.hs
Patient (NameWithMiddle "Jane" "Elizabeth" "Smith") Female 30 74 200 (BloodType AB Pos)
%