2006-07-17
■ パターンマッチ
フツケル 168頁
id :: a -> a id x = x 仮引数の「x」が変数パターンです。 変数パターンはどんな値に対してもマッチし、その値に変数を束縛します。
--変数パターンのサンプルコード hoge x = print x main = do hoge 1 hoge 10
最初引用した変数パターンの説明に出てくる、「その値に変数を束縛します」を以下のように勘違いしていました。
hoge xの変数xを値に束縛するということは、hoge 10はhoge xにマッチするから、xを10に束縛する。Haskellは再代入は出来ない。
従ってhogeメソッドを抜けてもxの値は10であるはず(?)ということで以下のようなコードを書いていました。結果は「Not in scope: `x'」とエラーが表示されて実行出来ません。
xは仮引数ですから、メソッドを抜けたら値を消失するからエラーが出て当たり前と言えば当たり前なのですが、束縛しますと書いてあったのでメソッドを抜けても10にxが束縛されているのかと思ってしまいました(^_^;)
hoge x = x main = do print $ hoge 1 print x
コメントを書く
トラックバック - http://haskell.g.hatena.ne.jp/NobiNobiKota/20060717