我想了解Constr類型的Data.Data包。考慮下面的會議。 dataTypeConstrs
返回一列Constr
,這是Maybe的零參數和單參數構造函數。由於明顯的類型錯誤,試圖重新創建列表失敗。 GHC關於Constr價值的特殊行爲是什麼?瞭解Constr類型的Data.Data包的Haskell
$ 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]
有趣的問題。在看Data.Data我看到有創建Constr實例的函數。像mkConstr。我猜測,Show for Constr的實例並沒有給你足夠的細節來實際構造一個Constr,因爲你試圖用i2 –