0

私はEralngの新人です。
関数が定義されていると仮定して、関数の適用に関する小さなクエリを取得します。

mysum(X) -> fun(Y)-> X + Y end.

次に、このように呼び出してみてください

mysum(32)(332) 

エラーが発生する

* 1: syntax error before: '('

だから私はしなければならなかった

apply(mysum(32),[333])

また

M = mysum(32), M(333)

しかし、私はもう少し知りたい、なぜそれがサポートされていないのか、欠点は何ですか

4

1 に答える 1

6

ご想像のとおり、 mysum は関数を返します。erlang パーサーを満たすために、評価を括弧で囲む必要があります。

(mysum(32))(332)

このスペルは明らかにあいまいではありません。

mysum(32) が関数であることを知っているため、式があいまいではないように見えますが、型は実行時に erlang で解決されるため、パーサーは mysum(32) が何であるかを知りません。それがしなければならないこと:括弧、適用または中間変数ですが、演算子または区切り記号である可能性があります。

于 2013-06-22T04:30:35.003 に答える