在Scala中它是可能的,所以我想知道这在SML中是否可行,考虑这样的代码:
fun in_list(elem,coll) =
case coll of
[] => false
| elem :: tail => true
| head :: tail => in_list(elem,tail);
在case
的第二行中,我想从参数中使用elem
,但SML将其视为占位符并在冗余大小写(第三行)上抛出错误。
那么 - 是否可以在这里使用elem
,如果可以,如何使用?
答案 0 :(得分:3)
不,这是不可能的。您必须使用if
:
fun in_list(elem,coll) =
case coll of
[] => false
| head :: tail =>
if head = elem
then true
else in_list(elem,tail)
或者,在这种情况下,您也可以使用逻辑运算符而不是if
:
fun in_list(elem,coll) =
case coll of
[] => false
| head :: tail =>
head = elem orelse in_list(elem,tail)