計算機科学のブログ

型の紹介 カスタム型の作成 typeキーワード

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

コード

type PatientName = (String, String)

firstName :: PatientName -> String
firstName = fst

lastName :: PatientName -> String
lastName = snd

patientInfo :: PatientName -> Int -> Int -> String
patientInfo name age height =
  let fname = firstName name
      lname = lastName name
      fullName = lname ++ ", " ++ fname
      ageHeight = "(" ++ show age ++ "yrs. " ++ show height ++ "in.)"
   in fullName ++ " " ++ ageHeight

name1 :: PatientName
name1 = ("John", "Doe")

name2 :: PatientName
name2 = ("Jane", "Smith")

main :: IO ()
main = do
  print $ patientInfo name1 43 74
  print $ patientInfo name2 25 62

入出力結果(Terminal, Zsh)

% runghc sample01.hs
"Doe, John (43yrs. 74in.)"
"Smith, Jane (25yrs. 62in.)"
%