早川です。

On Fri, 11 Apr 2003 22:08:05 +0900
Tanaka Akira <akr / m17n.org> wrote:
> > ↓はカリー化されていない定義と言えますよね??
> >
> > add :: (Int, Int) -> Int
> > add (x, y) = x + y
> 
> add は (Int, Int) を受け取る 1引数関数ですし、(,) は Int -> Int ->
> (Int, Int) なのでやっぱり 1引数なんじゃないでしょうか。
> 
> Prelude> (,) 1 2
> (1,2)

なるほどー。納得です。
失礼しました。
と、これだけではなんなので..


foo (x:xs)    = ...  はOKなのに
foo (xs++[x]) = ...  という定義がエラーになるのは何故だろうと
疑問に思っていました。

: と ++ は、同じくリストを生成しますが、後者はユニークに
定まらないのでリストコンストラクタになれないからだそうです。
当然といえば当然なのですが..感心してしまいました (^^;


--
SH
tetryl / tokyoprogrammer.com


--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/