OCaml
Gemeenschappelijke valkuilen
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