2014-12-21 6 views
-3

I는 두 가지 기능을 가지고 : (F1)의 출력 F2에 대한 올바른 입력이므로내 함수를 다른 함수의 매개 변수로 사용하면 오류가 발생하는 이유는 무엇입니까? 하스켈

f1 :: Bool -> Int 
f1 x 
    | x == True  = 5 
    | x == False = 10 

f2 :: Int -> Int 
f2 x = x * 2 

을 어떻게

f2 f1 True 

오류 발생 올?

태그가 무엇인지 알지 못해 태그가 부적절 할 수 있습니다.

+0

'f2 (f1 True)'또는'f2 $ f1 True'를 시도하십시오. – Jubobs

+0

@Jubobs (f g) x가 잘 구성된 표현식이고 f와 g가 둘 다 함수가되는 예제를 줄 수 있습니까? – Arthur

+0

@Arthur'filter odd [1, 2, 3]'예를 들어. – sepp2k

답변

4

기능 응용 프로그램은 왼쪽 연관이므로 f2 f1 True(f2 f1) True이 아니라 f2 (f1 True)과 같습니다. f2의 인수가 Int인데 f1의 유형이 Bool -> Int이고 Int이 아니므로 (f2 f1) True은 분명히 잘못 입력되었습니다.