我正在尝试为后缀表达式计算器创建一种可以表示运算符(“ +”,“-”,“ *”,...)或操作数(1、2、3、4 ...)的类型。
我试着写:
data PostfixToken = String | Integer
但是然后说我有一个虚拟函数,像这样:
foo :: Bool -> PostfixToken
foo x = 3 :: Integer
我得到:
Couldn't match type ‘Integer’ with ‘PostfixToken’
尽管我明确定义了类型,为什么它不能将Integer与PostfixToken匹配?这样做的正确方法是什么?
总和类型必须标记为联合。在Haskell中,标签同时是数据构造函数。
data PostfixToken = Operator String | Operand Integer
foo :: Bool -> PostfixToken
foo x = Operand 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句