2014-07-10 3 views
6

으로 수출하지 않는 유형을 필요로하고, 다음과 같은 기능이 매우 유용 할 것이라고 생각 : 나는 대한 GHCi를 물어 보면유형 서명 내가 아이손 라이브러리를 사용하던 라이브러리 그래서

v .:! f = liftM (fromMaybe mempty) (v .:? f) 

을 형, 내가 얻을 :

(.:!) 
    :: (Monoid r, FromJSON r) => 
    Object 
    -> T.Text -> aeson-0.7.0.6:Data.Aeson.Types.Internal.Parser r 

그러나 파서 자체는 실제로 Data.Aeson 또는 Data.Aeson.Types 중 하나를 내 보낸되지 않습니다. 내가 정의한 함수에 대한 형식 시그니처가 없도록해야합니까?

다른 방법으로 내가하려는 일을 더 잘 수행 할 수있는 방법을 아는 사람이라면 나는 당신의 제안에 관심을 가질 것입니다.

+3

[파서] (http://hackage.haskell.org/package/aeson-0.7.0.6/docs/Data-Aeson-Types.html#t:Parser)는'Data.Aeson.Types'에서 내보내집니다. – bennofs

+0

오 ... 그래. 당신 말이 맞아요. 나는 그걸 일찍 시도하고 그것이 효과가 없다고 생각했다. 뭔가 잘못 했어야 했어. – Emil

+1

그러나 질문은 여전히 ​​유효하다고 생각하십니까? 그렇지 않다면 무엇을 할 것입니까? – Emil

답변

3

현재, 하스켈에서는 코드를 알 수없는 기호로 인해 작성할 수없는 유추 한 유형의 코드를 작성할 수 있습니다. 2014 년 4 월 Haskell 도서관 메일 링리스트에 discussion about this이 있었지만 확고한 결론은 없었지만 일반적인 의미는 현재의 행동을 유지하는 것이 었습니다.

그러나 일반적으로 추측 할 수있는 유형 서명을 작성하려면 언어 확장이 필요할 경우 서명을 명시 적으로 포함하지 않아도 해당 확장을 사용 가능하게 설정해야합니다.

+0

기본 유형을 내 보내지 않고 유형 동의어를 내보내는 것이 의미가 있기 때문에 이럴 수 있습니까? – dfeuer

+0

네, 그게 논쟁이라고 생각합니다. 개인적으로 나는 완전하다고 생각합니다. –

+0

유형이 보이는 동의어로 표현 될 수 있는지 여부를 알아 내기가 어렵거나 불가능하다고 생각합니다. 기본 유형을 숨기고 실제로 유형 동의어를 내보내는 것이 실제로 의미있는 지 여부는 전혀 다른 질문입니다. 그렇다면,'pipes' 패키지는 그러한 것을 찾기에 좋은 장소 일 것입니다. – dfeuer

관련 문제