局所変数

こういう書き方も出来るんだ。case や let 〜 in ではよくやるけど、where でも出来るんだ。左辺は関数名と引数、右辺は式だとばかり思っていた。例示したコードは適当。

foo xs = h * (-1): ts
  where (h:ts) = xs   -- ここ

where でも出来るのならと思って Top-level で試したら、こちらも同様だった。使い道は? と尋ねられても困るけど。

(x:xs) = [1, 2, 3, 4]
-- x  -> 1
-- xs -> [2, 3, 4]