1

ドット演算子について少し混乱しています。私は次のコードを持っています(テスト用):

test :: Int -> Int -> Int
test x y = f1 . f2 x y 
           where f1 n = n+1
                 f2 x' y' = x' * y'

そして、最初に (f2 xy) を実行し、次にその結果に対して f1 を実行すると考えましたが、代わりにエラーがスローされます。ドット演算子の正確な定義とf1 に等しいものを教えてください。f2xy ? (ドット演算子なしで記述した場合)

よろしく、スカイフ。

編集:ドット演算子が完全な新しい関数を生成する場合、次のコードが機能するはずだと考えました:

test :: Int -> Int -> Int
test x y = f1 . f2 x
           where f1 n = n+1
                 f2 x' y' = x' + y'

しかし、そのコードもエラーを返します。

4

3 に答える 3