Ich arbeite an einem Projekt mit OCaml und es gibt einige Probleme in Bezug auf Arrays, die ich nicht sicher bin. Ich darf das List-Modul nicht verwenden, also bitte geben Sie mir eine Idee oder einen Vorschlag mit meinen Arbeiten.Finden Sie einzigartige Elemente in einer Liste in OCaml
Zuerst habe ich realisiert bereits eine Funktion 'a list -> 'a list
uniq
genannt, die eine Liste der uniq Elemente in einem Array zurück, zum Beispiel uniq [5;6;5;4] => [6;5;4]
Hier meine Implementierung ist:
let rec uniq x =
let rec uniq_help l n =
match l with
[] -> []
| h :: t -> uniq_help t, n if (n = h) else (h :: (uniq_help(t, n)))
match x with
[] -> []
| h::t -> uniq_help t, h
;;
imot sicher, dass dies eine korrekte Implementierung, kann mir jemand einen Vorschlag oder eine Korrektheit geben?
Der Code wie angegeben kompiliert nicht für mich. Es sieht so aus als ob du irgendwo ein 'In' vermisst. Die Methode zur Definition eines lokalen Symbols wie 'uniq_help' ist' local = in '. –
Sie sind keine Arrays in OCaml, sie sind Listen. Arrays implizieren einen veränderlichen Zustand, der in ocaml nicht so funktioniert, wie die Listen, ohne explizit etwas aus dem Array-Modul zu verwenden. –