2017-03-28 4 views
0

Ich soll eine Funktion weniger (E, L) int * int Liste -> int Liste, die eine Liste aller Elemente in L zurückgibt, die kleiner als e sind. Ich schrieb dies:nicht erschöpfende Bindung Fehler in SML-Code

Ich bekomme einen verbindlichen Fehler, sicherlich in der eingelassenen Bit. Ich habe schon viele verschiedene Thins ausprobiert, und ich kann nicht verstehen, warum das falsch ist. Kann jemand Licht werfen?

Antwort

0
val x::xs = less (e, tl L) 

Dies ist der Fall nicht überein, wo das Ergebnis der less (e, t1 L) die leere Liste ist.

Eine korrekte Implementierung der Funktion, ist dies:

fun less (_, nil) = nil 
    | less (y, x::xs) = 
    let 
     val xs' = less (y, xs) 
    in 
     if x < y then x::xs' else xs' 
+0

Vielen Dank für die Unterstützung. Wenn ich fragen darf, was ist (y, xs)? –

+0

Tippfehler, sollte ein rekursiver Aufruf zu "weniger" sein –

Verwandte Themen