IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

関数適用は最優先

下記のコンパイルエラーには嵌りました。

*Main> let foo xs = last .init sx

<interactive>:326:25:
    Not in scope: `sx'
    Perhaps you meant `xs' (line 326)
*Main> 

これは、
last . (init sx)
と解釈されているからでしょう。

関数合成してる部分を括弧に囲むとエラーになりません。

*Main> let foo xs = (last .init) xs

ポイントフリースタイルで書けば嵌ることはなかったかも。

*Main> let foo = last .init