Ocaml Int und negative Werte
-
06-07-2019 - |
Frage
Dieser Code-Schnipsel von OCaml Code Gegeben:
let rec range a b =
if a > b then []
else a :: range (a+1) b
;;
Die Repl sagt mir, dass es Art ist:
val range : int -> int -> int list = <fun>
Giving es gibt wie:
range 0 4;;
gibt die Liste zurück:
- : int list = [0; 1; 2; 3; 4]
Jedoch die Eingabe bereitstellt
range -4 2;;
Gibt den Fehler:
Characters 0-5:
range -4 1;;
^^^^^
This expression has type int -> int -> int list but is here used with type int.
Was ist das versucht, mir zu sagen?
Lösung
Wenn Sie eingeben,
range -4 2;;
müssen Sie daran denken, dass die -
eine Funktion ist, ein Infix-Funktion, nicht eine einstellige Negation.
einstellige Negation tun Sie eines von zwei Dingen tun können, 1) preceede -. Zeichen mit einem ~, wie ~ -4 oder Klammern verwenden
Andere Tipps
Ich habe erkannt, dass ich die Notwendigkeit zu wickeln
-4 in parenthesis
dh Aufruf:
range (-4) 0;;
Gibt:
- : int list = [-4; -3; -2; -1; 0]
Ich werde diese Frage überlassen Incase jemand anderes über das gleiche Problem kommt.
Sie einfach die Frage zusammenfassen, dass -
als Funktion interpretiert wird und nicht als Zeichen des Tokens 4
.