2015-01-02 1 views
1

변수 fun1 $ fun2 $ fun3이 변수 var에 적용되어 fun1 $ fun2 $ fun3 var으로 적용되었습니다. 이 파이프 fun1 $ fun2 $ fun3varfun var에 적용 할 수있는 독립 실행 형 함수 fun = (fun1 $ fun2 $ fun3)으로 어떻게 추출 할 수 있습니까?하스켈에서 함수 목록을 독립형 함수로 추출

예를 들어, 다음과 같은 기능 파이프가 있습니다 : BS.unpack $ JSON.encode var. 나는 let fun = BS.unpack . JSON.encode에 문 BS.unpack $ JSON.encode var에서 BS.unpack $ JSON.encode을 추출 할,하지만 난 오류 얻을 :

No instance for (JSON.ToJSON a0) 
    arising from a use of `JSON.encode' 
The type variable `a0' is ambiguous 

내 기능 추출에 어떤 문제가 있습니까?

+0

어떻게 이러한 함수가 변수에 적용됩니까? –

+1

편집과 관련하여 더 많은 문맥에서 코드를 제공 할 수 있습니까? –

답변

6

당신이 찾고있는 것은 함수 합성 연산자 인 .입니다. 이것은 다음과 같이 작동합니다.

(f . g) x = f (g x) = f $ g x 

따라서, fun = fun1 . fun2 . fun3이 당신이 원하는 것입니다.

관련 문제