2014-10-16 2 views
0

Я делаю домашнюю работу coursera. Может ли кто-нибудь объяснить мне, почему этот код работает:sml pattern не вижу связанной переменной

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 

затем your'e связывания с й, всегда преуспевает.

Смежные вопросы