『ふつうのHaskellプログラミング』をテキストに、Haskellを学んでいます。
2007-05-23
■ 関数の仮引数は、じつは常にマッチするパターンマッチだった!

よく読むと、ちゃんと「ふつける」のパターンマッチのところに書いてありました(^^;
一方、「どんな値でもいい」というパターンもあります。これは単なる変数の場合で、上記のコードなら「c」が相当します。このパターンはどんな値に対しても常にマッチします。
関数定義で仮引数だとおもっていたのは、パターンだった、ということなのです。常にマッチするパターン。
パターンは複数指定でき、上から順に実行されるようです。
では、どこからどこまでが関数定義ということになるのでしょう。
空行をあけてみましたが、これはなにも問題ありませんでした。
閉じカッコなどがないので、レイアウトが関係しているのかもしれません。
31ページに、
do式は複数の文を束ねる構文です。Javaで言えばブロック構文に相当します。do式のように複数の式を束ねる構文では、複数の式のインデントを揃えることで式が同じブロックに属していることを表現するのです。この規則をレイアウト(layout)とかオフサイドルール(off-side rule)と言います。
とありました。
もしかしたら、ブロック構文はレイアウトで表現するのかもしれません。
関数定義にしてもおなじなのかも。
コメントを書く
トラックバック - http://haskell.g.hatena.ne.jp/codo/20070523