1

Data.Data パッケージの Constr 型を理解しようとしています。以下のセッションを検討してください。Maybe の 0 引数コンストラクタと 1 引数コンストラクタの両方dataTypeConstrsのリストを返します。Constrリストを再作成しようとすると、明らかな型エラーが原因で失敗します。Constr 値に関する GHC の特別な動作ですか?

$ ghci
GHCi, version 7.10.2: http://www.haskell.org/ghc/  :? for help
Prelude> :set -XScopedTypeVariables
Prelude> :module +Data.Data
Prelude Data.Data> dataTypeConstrs (dataTypeOf (Nothing :: Maybe ()))
[Nothing,Just]
Prelude Data.Data> :i it
it :: [Constr]  -- Defined at <interactive>:4:1

Prelude Data.Data> let i2 :: [Constr] = [Nothing,Just]

<interactive>:6:23:
    Couldn't match expected type ‘Constr’ with actual type ‘Maybe a0’
    In the expression: Nothing
    In the expression: [Nothing, Just]
4

1 に答える 1