2014-10-16 59 views
0

我在做课程作业。任何人都可以解释为什么此代码的工作原理:sml模式看不到绑定变量

fun remove_card(cs: card list, c: card, except:exn)= 
case cs of []=>raise except 
| x::xs =>(case (x=c) of true=> xs 
       | _ => x::remove_card(xs,c,except)) 

但这里它说“模式冗余”好像c是未定义的?

fun remove_card(cs: card list, c: card, except:exn)= 
case cs of []=>raise except 
| x::xs =>(case x of c=> xs 
       | _ => x::remove_card(xs,c,except)) 

另一件有用的事情是在函数声明中改为“cs as x :: xs”,但为什么它有帮助?

回答

0

cs as x::xs绑定cs并假定它是非空的,将cs的头部绑定到x,将尾部绑定到xs。这只是一个方便的简写。

您的例子一个错字,但如果你的意思是

case x of c => xs 

那么傻冒结合C到X,它总是成功。