For faster navigation, this Iframe is preloading the Wikiwand page for Ocaml.

Ocaml

Uit Wikipedia, de vrije encyclopedie

Objective Caml
Ocaml
Paradigma Functioneel, objectgeoriënteerd
Verschenen 1996
Ontworpen door Xavier Leroy en anderen
Ontwikkeld door Inria (Frankrijk)
Huidige versie 3.10.2
Typesysteem strikt, statisch
Dialecten F#, JoCaml, MetaOCaml, OcamlP3l
Beïnvloed door Caml Light, ML
Invloed op Scala
Licentie compiler: QPL, libraries: LGPL
Website http://caml.inria.fr/
Portaal 
Portaalicoon
 
Informatica

Ocaml (Objective CAML) is de belangrijkste implementatie van de programmeertaal Caml (Categorical Abstract Machine Language), een dialect van ML, ontwikkeld op het Inria[1] en de École normale supérieure.[2]

Geschiedenis

Caml is statisch getypeerd, strikt geëvalueerd, en maakt gebruik van automatisch geheugenbeheer door middel van garbage collection.

De eerste Caml-implementatie in de jaren 80 was geschreven in Lisp en had, vanwege zijn zware geheugen- en CPU-gebruik, de bijnaam Heavy Caml. Zijn opvolger, Caml Light, werd geïmplementeerd in C door Xavier Leroy en Damien Doligez. Ook voegden die een krachtig modulesysteem toe.

OCaml

OCaml is de belangrijkste implementatie van Caml. OCaml biedt een aantal extra mogelijkheden, zoals de mogelijkheid tot objectgeoriënteerd programmeren.

OCaml bestaat uit een interactieve interpreter, een bytecode compiler en een zogenaamde native compiler die geoptimaliseerde executables produceert. OCaml heeft een uitgebreide verzameling standaardbibliotheken die de taal geschikt maken voor dezelfde soort taken als bijvoorbeeld Python of Perl.

Kenmerken

Zoals alle van ML afgeleide talen maakt OCaml gebruik van type-inferentie. Dit houdt in dat de compiler automatisch het type afleidt van alle expressies. In combinatie met statische typering (Engels: static typing) zorgt type-inferentie ervoor dat bepaalde soorten fouten die normaal pas tijdens de uitvoering van het programma aan het licht komen al tijdens het compileren ontdekt worden. Ook is het niet nodig om datatypes expliciet te specificeren (in tegenstelling tot bijvoorbeeld Java).

In tegenstelling tot andere functionele programmeertalen is OCaml erg efficiënt. Dit komt onder andere doordat de combinatie van type-inferentie en statische typering het controleren van typen tijdens de uitvoering grotendeels overbodig maakt. Ook maakt de OCaml-compiler gebruik van codeanalyse om verregaande optimalisaties te maken, en zijn de standaardbibliotheken erg efficiënt geïmplementeerd.

Naast de traditionele functionele manier van programmeren ondersteunt OCaml ook imperatief programmeren (OCaml is niet strikt functioneel: het is mogelijk om side-effects te creëren) en objectgeoriënteerd programmeren.

Verdere kenmerken:

Voorbeelden

Hello World

Een programma met de volgende inhoud, opgeslagen als hello.ml:

 print_endline "Hello world!";;

Dit kan als volgt gecompileerd worden:

$ ocamlc hello.ml -o hello

De opdracht om het uit te voeren luidt:

$ ./hello
Hello world!
$

Quicksort

Dit is een implementatie van quicksort:

 let rec quicksort = function
   | [] -> []
   | pivot :: rest ->
       let is_kleiner x = x < pivot in
       let links, rechts = List.partition is_kleiner rest in
       quicksort links @ [pivot] @ quicksort rechts

Zie ook

{{bottomLinkPreText}} {{bottomLinkText}}
Ocaml
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Wikiwand 2.0 is here 🎉! We've made some exciting updates - No worries, you can always revert later on