Data.Typeable
을 사용하여 함수 유형의 구성 요소 유형을 검사하려고합니다. 처음에는 typeRepArgs
는 완벽한 외모,하지만 난 그것을 얻이 수없는 것 :분할 유형 적용된 구성 요소의 회수
Prelude Data.Typeable> typeRepArgs (typeOf2 (id :: Integer -> Integer))
[]
Prelude Data.Typeable> length $ typeRepArgs (typeOf2 (id :: Integer -> Integer))
0
내가 근본적으로 이것이 작동하도록되어 어떻게 오해 있습니까? 분명히 (->)
생성자가 두 개의 인수에 적용되는데 왜 내가 볼 수 없습니까?
Prelude Data.Typeable> funResultTy (typeOf2 (id :: Integer -> Integer)) (typeOf (0 :: Integer))
Nothing
정말 아주 난처한 상황에 빠진 해요 : 나는 Data.Dynamic
에서 dynApply
의 방법으로 함수 타입을 괴롭히는하려고하면, 나는 비슷한 수수께끼 결과를 얻을.
도움이된다면 GHC 7.0.4를 사용하고 있습니다.
D' oh. 이것은 정확히'typeOf2'가 기대했던 것입니다. 나는 그것을 방망이 바로 사용하여'* -> * -> *'생성자에 대해 올바른 선택이 될 것이라고 기대했지만, 실제로 검사하는 값이 사실'*'인 것을 잊었습니다. – acfoltzer