カリー化された関数についてどこかで読んでいましたが、混乱しているように聞こえました。この例は私をさらに混乱させました。関数があるとしましょう:
power :: (Int, Float) -> Float -- computes the nth power of b
power (n, b) =
if n == 0 then 1.0 else b * power (n-1, b)
powerc:: Int -> Float -> Float
ここで、次のような別の関数を定義します
powerc n b =
if n == 0 then 1.0 else b * powerc (n-1) b
powerc
関数のカリー化されたバージョンがどのように機能するかを誰かに説明してもらえますかpower
。