签名
val chooser: string list * string list -> string list
和这个实现
let rec chooser (inputList, trueList) = match inputList with
[] -> []
| iH::iT -> if (List.hd trueList)="True"
then iH::(chooser iT List.tl trueList)
我收到以下错误:
错误:此变体表达式应具有类型单位 构造函数::不属于单位
我做错了什么?
答案 0 :(得分:1)
else
部分没有明确定义 - 所以当条件不满足时,else部分是()(即单位)。
编译器将iH::(chooser iT List.tl trueList)
标记为unit
,但情况并非如此:
if cond
then A
else B
A
和B
具有相同的类型。
答案 1 :(得分:1)
if ... then
没有else
的结果必须是unit
,因为当值为()
时,unit
的值为else
表达是错误的。
换句话说,您if
需要implementation 'com.android.support:design:27.1.1'
部分才能获得所需类型。当比较为假时,该值应该是多少?