2014-10-16 58 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,它總是成功。