紙媒体で管理するとなくなりがちなのでブログで進捗などを管理することにしました
※殆どの記事は自分自身のためだけにかいています.他人に見せられるレベルには至っていません...

【Haskell】 asパターン

asパターンは値をパターンに分解しつつ, パターンマチ位の対象となった値自体も参照できる.
xs@(x:y:ys)はx:y:ysと合致するものと同じものと合致しつつ, xsで元のリストそのものにもアクセスできる.

firstElement :: String -> String
firstElement "" = "empty"
firstElement all@(x:xs) = "the first element of" ++ all ++ "is" ++ [x]

最後の[x]は
そのままのxだとChar型だが, [x]にすると[Char]型 = String型となり, ++で連結できる.