top page > computer > haskell > web_lecture > for_programmer > atpattern.html
更新日:
文責: 重城良国

構文: @パターン

先頭の要素を2つにする

先頭の要素を2つにする関数を考えよう。

できた

dupHead :: [a] -> [a]
dupHead (x : xs) = x : x : xs
dupHead _ = []

いいね。できた。でも...

二重化

気にいらない。パターンマッチ(x : xs)でxとxsにわけたものを再びリストにまとめている。わけたものをまたまとめるなんて無駄だ。

そこで@パターンですよ

@パターンを使えば変数を束縛したうえでその中身へのパターンマッチができる。

dupHead xa@(x : _) = x : xa

引数のリストで変数xaを束縛したうえでさらに(x : _)でマッチしている。

いいね

Haskellは理論的に美しいだけではなく表記も美しい。

「関数takeToの関数unfoldrによる定義」へもどる 「関数zipWithの紹介」へ

正当なCSSです! HTML5 Powered with CSS3 / styling, and Semantics