Concurrent Clean(とHaskell)の結合力
Clean(やHaskell)は、2項演算子よりも関数適用の方が結合力が強いので、下のような記述はエラーになる。
Start w ... # f = fwrites "aaa" +++ "bbb" +++ "ccc" f
これは、
# f = fwrites ("aaa" +++ "bbb" +++ "ccc") f
と解釈されずに、
# f = (fwrites "aaa") +++ "bbb" +++ "ccc" f
と解釈されるからだ。これって、たいていの場合、直感と逆なんじゃないかと思う。要するに、関数適用の結合力が高すぎると思う。
-
-
- -
-
余談だが、smalltalkの場合、結合は次の順で、これの方が直感的だ。
- 単項メッセージ
- 二項メッセージ
- キーワードメッセージ
(book openAtPage: 1+2*3) print.
ただし、smalltalkの場合、「1+2*3」の部分は、「(1+2)*3」と解釈されてしまうという、別の意味での直感的でない解釈を含んでいるのだが・・・