Haskell中的类型问题。 我尝试从Prolog移动到Haskel。 我必须从字符串表示中计算算术表达式。我在Haskel上编写了与Prolog程序相匹配的递归算法。原因Haskel要求列表中的所有元素必须是一种类型,不可能像Prolog中那样混合操作符号和数字,所以我使用[String]类型来表示算术表达式。为了执行计算,必须将数字的符号表示转换为整型,但将结果类型推断为浮点型。每个操作的结果必须反向转换为字符串,因为它是字符串元素的类型。Haskell编译器(HUGS 98)阻止我的程序。 我的错误是什么? 。Haskell中的函数类型
cc :: (String b) => [String] -> b
cc (a:"*":b:t) = cc(c:t)
where c=show(read a * read b)
cc (a:"/":b:t) = cc(c1:t)
where c1=show(read a/read b)
cc (a:"-":t) = show(read a - read(cc t))
cc (a:"+":t) = show(read a + read (cc t))
cc (a:[]) = a
cc [] = 0
错误文件:\ e3.hs:18 - 未定义类“字符串”
字符串确实不是一个类。你想用'(String b)=> [String] - > b'表达什么? –
请记住,在'a:'+':b:t'中,a和b都是单个字符,所以在计算10 + 12时会遇到一些困难。 –
@ n.m。 ...这不会是一个问题,因为它不是“+”而是“+”';) – Carsten