3
funktioniert kann ich nicht verstehen, warum die folgende Funktion mit zwei Argumenten funktioniert auch, wenn wir es mit einem param erklären:Warum ein Parameter Ocaml Funktion mit zwei Argumenten
let rec removeFromList e = function
h :: t -> if h=e then h
else h :: removeFromList e t
| _ -> [];;
removeFromList 1 [1;2;3];;
** (1) ** Die Funktion 'removeFromList' gewonnen 't kompilieren, es sei denn, es ist in einem Kontext eingeschlossen, der eine andere Definition von 'removeFromList' enthält. Ich glaube, die Absicht war, es so zu definieren, "lass rec removeFromList ...". ** (2) ** Der Compiler sollte sich über den fehlenden '[]' case im Body der Funktion beschweren. –
danke, ich habe es falsch geschrieben; jetzt editiert, sollte es in Ordnung sein –
* Alle * Funktionen in OCaml nehmen immer genau ein Argument. Die Syntax 'removeFromList et' (die als '(removeFromList e) t'parst, weil die Funktionsanwendung linksassoziativ ist) wendet einfach' removeFromList' auf 'e' an und wendet dann das Ergebnis davon an (was zufällig eine Funktion ist). zu "t". – newacct