2013-01-23 31 views
0

在Scala中是可以的,所以我不知道这是可能在SML为好,考虑这样的代码:是否可以在SML中使用给定的值进行模式匹配?

fun in_list(elem,coll) = 
    case coll of 
     [] => false 
    | elem :: tail => true 
    | head :: tail => in_list(elem,tail); 

case第二行我想用elem从参数,但SML会将其作为占位符并在冗余案例(第三行)上抛出错误。

所以 - 在这里可以使用elem,如果是的话,怎么样?

回答

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) 
+1

谢谢!可惜,它感觉像半功率模式匹配:-) – greenoldman

相关问题