函数在预期bool时返回字符串

时间:2016-11-28 13:47:09

标签: sml ml

这段代码出了什么问题?

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

为什么会这样?

1 个答案:

答案 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