Data.Typeable
を使用して、関数タイプのコンポーネントタイプを検査しようとしています。まず、typeRepArgs
は完璧に見えるが、私はそれが仕事を得るように見えることはできません。分割タイプ適用されたコンストラクタのリピート
Prelude Data.Typeable> typeRepArgs (typeOf2 (id :: Integer -> Integer))
[]
Prelude Data.Typeable> length $ typeRepArgs (typeOf2 (id :: Integer -> Integer))
0
私は基本的にこれが動作するようになっているか誤解だろうか?明らかに、(->)
コンストラクタが2つの引数に適用されているので、なぜそれらを見ることができないのですか?私は実際にはかなり困惑して
Prelude Data.Typeable> funResultTy (typeOf2 (id :: Integer -> Integer)) (typeOf (0 :: Integer))
Nothing
:私はData.Dynamic
からdynApply
の方法で機能タイプをつついてみた場合、私は同様に不可解な結果を得ることができます。
私が役に立ったら、私はGHC 7.0.4を使用しています。
D'oh。これは私が 'typeOf2'がやるべきことを期待したものです。私は '* - > * - > *'コンストラクタの正しい選択であると期待して、バットを直ちに使用しました。しかし、私が調べている値が実際には '*'の値であることを忘れてしまいました。 – acfoltzer