In OCaml gibt es keinen allgemeinen Typ-Casting-Mechanismus. Es gibt eine Funktion namens float
, die dasselbe tut wie float_of_int
. Sie können entweder einen mit oder ohne die zusätzlichen Klammern verwenden.
$ ocaml
OCaml version 4.03.0
# float 3;;
- : float = 3.
# float_of_int 3;;
- : float = 3.
# (float) 3;;
- : float = 3.
# (float_of_int) 3;;
- : float = 3.
Aber es gibt keine Funktion mit dem Namen (sagen wir) int
:
# int 3.1;;
Error: Unbound value int
# (int) 3.0;;
Error: Unbound value int
Typ Guss wie in C (und verwandte Sprachen) nicht wirklich mit dem starken Typsystem von OCaml kompatibel sein.
Interessant, wie '(float)' nicht zur (fehlerhaften) Anwendung von 'float' auf 0 Argumente führt (fehlerhaft, da ein' int' Argument erwartet wird). Ich sollte die Syntax noch einmal überprüfen. –
OCaml-Funktionen sind Werte der ersten Klasse, und Sie können sie immer mit weniger Argumenten verwenden als sie annehmen, einschließlich 0. Das Einschließen eines beliebigen Ausdrucks ist zulässig, und ein Funktionsname (ein Wert der ersten Klasse) ist ein Ausdruck. –
@HunanRostomyan Die Funktionsaufrufsyntax in OCaml ist einfach Ausdruckausdruck, wobei der erste Ausdruck zu einer Funktion ausgewertet werden muss. Beachten Sie, dass keine Klammern in dieser Syntax enthalten sind. Klammern werden einfach zum Gruppieren von Ausdrücken verwendet und können um jeden Ausdruck herum hinzugefügt werden (so wie Sie '(1) + (2)' schreiben könnten, wenn Sie das möchten. – sepp2k