与Data.Data.toConstr混淆

时间:2018-09-20 15:49:48

标签: haskell

我很困惑为什么要使用给定的数据类型

import Data.Data
data T a = T1 a | T2 deriving Data

表达式

toConstr (Just ()) == toConstr (T2 :: T Int)

返回True,而

toConstr (Just ()) == toConstr (T1 ())

返回False

相关的question

1 个答案:

答案 0 :(得分:3)

引用the documentation-

  

请注意,不同类型的构造函数上的相等性可能无法工作-即False和Nothing的构造函数可能比较相等。

Traceback (most recent call last): File "trigger_hub.py", line 23, in <module> device_id = get_device_by_cad_id("page1", config) File "trigger_hub.py", line 13, in get_device_by_cad_id print(device['cad_id']) KeyError: 'cad_id' Just ()的构造函数-不一定与Maybe ()的构造函数比较false。