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?

War es hilfreich?

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.

Sie sehen: OCaml Sprachprobleme für weitere Informationen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top