学習ログ

Recursive Types

data Tree a = Node a (Tree a) (Tree a)
            | Empty
              deriving(Show)

ツリーの定義が簡潔でいいな、と思った。


Wild Card, Pattern Matching, and Parameterized Types

-- MyThird.hs
tidyThird :: [a] -> Maybe a

tidyThird (_:_:x:_) = Just x
tidyThird _       = Nothing
> :load MyThird.hs
> tidyThird "ab"
Nothing
> tidyThird "abcd"
Just 'c'
> tidyThird [1,2,3,4]
Just 3

(_:_:x:_) Wild Cardを使って三番目要素をJustで包んで
マッチしなければ Nothing

MaybeはJavagenericsのような存在らしいが、よくわからんかった。
Maybeの関連キーワードは、JustとNothingだが、よくわからんかった。

Maybe is polymorphic, or generic, type. ....

Real World Haskell: Code You Can Believe In

Real World Haskell: Code You Can Believe In