Haskell - 型によるプログラミング - パラメータ化された型 - 引数をとる型
入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)の UNIT3(型によるプログラミング)、LESSON 18(パラメータ化された型)、18.1(引数をとる型)、クイックチェック 18-1の解答を求めてみる。
コード
sample1.hs
main :: IO ()
main = do
print $ wrap (Box 'a') -- Box (Box 'a') :: Box (Box Char)
data Box a = Box a deriving Show
wrap :: a -> Box a
wrap x = Box x
unwrap :: Box a -> a
unwrap (Box a) = a
x :: Box (Box Char)
x = wrap (Box 'a')
入出力結果(Terminal, Zsh)
% runghc sample1.hs
Box (Box 'a')
%