2016-11-09 2 views
0

저는 함수 합성을 사용하여 함수 f 인 f를 n의 거듭 제곱으로 계산하는 하스켈에서 힘 함수를 작성하려고합니다. 나는 그것이 기능 F (X) = X + 1 개 전원 기능을 전달하고 함수의 제곱을 반환 기대하고하스켈에서 함수를 계산하여 전력을 계산합니다.

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

:

이것은 내가 지금까지있는 것입니다. 나는 F (x)의 함수에 값이 전달하려고, 그래서 내가 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'를 두 번 올리면 '4'가됩니다. – Amadan