这段代码出了什么问题?
fun expd s:string = if size(s) > 0 then true else false;
我收到的错误:
- fun exnd s:string = if size(s) > a then true else false;
stdIn:657.1-837.8 Error: unbound variable or constructor: a
Error: right-hand-side of clause doesn't agree with function result type [tycon mismatch]
expression: bool
result type: string
为什么会这样?
答案 0 :(得分:4)
您需要s:string
左右的括号,因为现在string
被解释为函数的输出类型而不是参数s
的类型:
fun expd (s:string) = if size(s) > 0 then true else false
顺便说一句,编译器可以在这里推断出所有类型而没有任何类型的注释。请尝试以下方法:
fun expd s = if size(s) > 0 then true else false
当然,您可以将此定义简化为:
fun expd s = size(s) > 0