Concurrent Clean : カリー化と効率
add :: !Int !Int -> Int add x y = x + y
と
add :: !Int -> (Int -> Int) add x = \y = x + y
を区別する理由を書こうかと思ったのですが、ここを読んでいる人にとってはあたりまえのことになりそうだったので、省略。
要は、低レベルでの関数のアリティが知りたいということと、Cleanではエクスポートする関数は定義モジュールファイルに関数の型宣言だけを記述するというスタイルであるということがポイントでした。