Ich habe gerade angefangen zu lernen Ocaml und bin mit rekursiven Funktionen herumspielen. Ocaml Compiler sagt mir, dass rekursiv Aufruf Helper in "wenn h1 = h2 dann helfer t1 t2" verursacht einen Fehler: Dieser Ausdruck hat Typ 'eine Liste *' eine Liste -> bool, aber ein Ausdruck wurde vom Typ bool erwartet. Ich verstehe, dass es mir sagt, dass der Compiler einen booleschen Wert erwartet, aber stattdessen eine Funktion erhält, die den booleschen Wert zurückgibt. Aber ich habe keine Ahnung, wie ich das beheben kann. Jede Hilfe ist willkommenOcaml: Dieser Ausdruck hat Typ 'eine Liste *' eine Liste -> Bool aber ein Ausdruck wurde vom Typ erwartet bool
let rec a_func l =
let rec helper tmp l1 = function
| [], [] -> true
| _, [] -> false
| h1::t1, h2::t2 -> if h1=h2 then helper t1 t2 else helper [h2]@l1 t2
in helper [] l
Vielen Dank für die Erklärung! – user1848861