2016-11-09 17 views
0

私は、関数の構成を使って、関数fであるnのべき乗にfを計算する関数を関数haskellに書き込もうとしています。私はそれが機能F(X)= X + 1つのパワーに関数を渡すと、関数の四角を返すように期待していHaskellの関数の計算では、電力を計算する

let pow 0 f = (\x -> x) 
    pow n f = f . (pow (n-1) f) 
in 2 ((\x -> x+1) 2) 

は、これは私がこれまで持っているものです。私はf(x)が関数に値2を渡してみてください、私は、私は私が手haskell.org上でそれを実行すると、それは4

を返すだろうと思った:

:: (Num a, Num (a -> t)) => t 

答えて

2

あなたのラインが無効です:2 ((\x->x+1) 2)が不正です(2 3に相当)。

let pow 0 f = (\x->x); pow n f = f.(pow (n-1) f) in (pow 2 (\x -> x + 1)) 2 

は、4を生成する。

+0

ちょっと、 答えは実際に9ではありませんか?そのf^nおよびf = 2 + 1であるからである。 – Johnylikes3thirty

+0

@ Johnylikes332: 'f'は' 2 + 1'ではありません。 'f'はインクリメント関数であり、数値ではありません。 'f^2'は' 'f''を2回適用します。 「2」を2回増やすと「4」が生成されます。 – Amadan