2017-11-13 2 views
0

Ich versuche, doppelte Elemente aus der bereits sortierten Liste in OCaml zu entfernen. Das ist mein Code:Entfernen von doppelten aus der sortierten Liste (OCaml)

let rec remove_dup = function 
    | [] -> [] 
    | hd :: [] -> hd :: [] 
    | hd :: hd2 :: tl -> if (hd == hd2) (remove_dup tl) :: hd else (remove_dup (h2 :: tl) :: hd;; 

Ich erhalte einen Syntaxfehler.

+0

Ein weiterer Kommentar: 'hd :: []' kann für zusätzliche Lesbarkeit '[hd]' geschrieben werden. :) – RichouHunter

Antwort

3

Die OCaml if sieht aus wie ifausdr1thenexpr2elseexpr3. Sie vermissen das Schlüsselwort then.

Sie haben auch unsymmetrische Klammern. Es sieht so aus, als ob Sie am Ende eine rechte Klammer benötigen.

Nach diesen Fixes haben Sie einige Typfehler, die Sie betrachten sollten.

Als Nebenkommentar, == nicht verwenden, um auf Gleichheit zu prüfen. Es ist ein Spezial-Operator für fortgeschrittene Anwendungen. Der tägliche Gleichheitsoperator ist =.

Verwandte Themen