1
我声明一些数据类型如下:数据类型哈斯克尔错误
data TX_OR_TY = TX | TY data TX = X Int data TY = Y Float
现在我写的一些函数返回它们的数据类型:
funcTX :: TX funcTX = X 3 funcTY :: TY funcTY = Y 5 ordFuncTX :: TX -> Int -> Bool ordFuncTX (X a) b = (a > b) funcTX_TY :: TX_OR_TY funcTX_TY = if (ordFuncTX funcTX 4) then funcTX else funcTY
功能funcTX_TY将通过比较返回类型TX_OR_TY的TX值为4,如果大于则返回TX,如果小于则返回TY。但编译时,它宣布它不能匹配预期类型TX_OR_TY与TX。我该如何解决?
如果我声明像数据TX_OR_TY = X Int | Y Float。一切都会安好的。但是有时TX和TY我想单独声明它们以防TX和TY是一个非常复杂的类型,我不想在一行中声明 – chipbk10
@ chipbk10单独声明它们是可以的,我的示例仍然使用您的定义的TX和TY类型。 – Chris
数据TX_OR_TY = TX TX | TY TY --->这是什么意思?这让我更加困惑。 – chipbk10