Zoeken…


De verkeerde operator gebruiken

In OCaml zijn er verschillende rekenkundige operatoren voor drijvers en gehele getallen. Bovendien kunnen deze operators alleen worden gebruikt op 2 drijvers of 2 gehele getallen. Hier zijn ongeldige uitdrukkingen in OCaml

1.0 + 2.0
1 + 2.0
1 +. 2
1 +. 2.0

De juiste uitdrukking voor elk van deze respectievelijk

1. +. 2.
float_of_int 1 +. 2.
1 + 2
float_of_int 1 +. 2.

Er is geen automatisch casten van gehele getallen naar floats of vice versa in OCaml. Alles is expliciet. Hier is een lijst met de integer- en float-operators

Operatie Geheel getal operator Float-operator
toevoeging a + b c +. d
aftrekking a - b c -. d
Vermenigvuldiging a * b c *. c
Divisie a / b c /. d
modulus a mod b modfloat cd
machtsverheffen N / a c ** d

Waar a en b gehele getallen zijn en c en d drijvers zijn.

Haakjes vergeten rond functieargumenten

Een veel voorkomende fout is het omringen van samengestelde functieargumenten met haakjes, wat leidt tot typefouten.

# string_of_int 1+1;;

Error: This expression has type string but an expression was expected of type int

Dit komt door de voorrang. In feite komt het bovenstaande overeen met

# (string_of_int 1) + 1;;

wat verkeerd is. Een correcte syntaxis zou zijn

# string_of_int (1+1);;

- : string = "2"


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow