« INFO401 : utilisation Caml » : différence entre les versions
Aller à la navigation
Aller à la recherche
m (→Définitions) |
|||
(5 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
=Quelques éléments de syntaxe pour Caml= |
=Quelques éléments de syntaxe pour Caml= |
||
==Commentaires== |
|||
En Caml, les commentaires sont entourés de "<tt>(*</tt>" et "<tt>*)</tt>" : |
|||
(* Ceci est un commentaire (* et ceci est un commentaire dans un commentaire *) |
|||
et ici, c'est toujours des commentaires *) |
|||
==Définitions== |
==Définitions== |
||
* '''définition''' |
|||
On peut définir une valeur et lui donner un nom avec la syntaxe |
|||
⚫ | |||
Par exemple : |
|||
let pi = 3.1415926536 |
let pi = 3.1415926536 |
||
* '''définition avec type explicite''' |
|||
Il est possible de préciser le type de la définition, même si cela est rarement nécessaires : |
|||
let x:float = pi /. 2.0 |
let x:float = pi /. 2.0 |
||
* '''définition multiple''' (les expressions sont évaluées en même temps) |
|||
let n = 1 and pi = p.1415926536 |
|||
* '''définition d'une fonction''' |
|||
⚫ | |||
⚫ | |||
ou bien |
|||
let valeurAbsolue = fun n -> if (n>0) then n |
let valeurAbsolue = fun n -> if (n>0) then n |
||
else (-n) |
else (-n) |
||
* '''définition d'une fonction''' deuxième méthode |
|||
⚫ | |||
⚫ | |||
* '''définition d'une fonction, avec types explicites''' |
|||
Ici aussi, on peut préciser les types : |
|||
⚫ | |||
⚫ | |||
⚫ | |||
let valeurAbsolue : int->int = fun n -> if (n>0) then n |
let valeurAbsolue : int->int = fun n -> if (n>0) then n |
||
else (-n) |
else (-n) |
||
⚫ | |||
⚫ | |||
⚫ | |||
* '''définition récursive''' |
|||
let rec fibonacci n = |
|||
if (n<1) then 1 |
|||
else (fibonacci (n-1)) + (fibonacci (n-2)) |
|||
* '''définition locale à une expression''' |
|||
Il possible de faire des définitions locales avec la syntaxe |
|||
... let x=... in ... |
|||
Par exemple, |
|||
let x:float = let pi = 3.14 in |
let x:float = let pi = 3.14 in |
||
pi /. 2.0 |
pi /. 2.0 |
||
Ligne 36 : | Ligne 44 : | ||
=Utilisation du toplevel= |
=Utilisation du toplevel= |
||
Pour utiliser l'interprète OCaml, il faut lancer la commande "<tt>ocaml</tt>" dans un terminal. <small>(Si vous voulez avoir un historique de vos commandes, il est conseillé de lancer la commande "<tt>ledit ocaml</tt>".)</small> |
|||
Vous vous retrouverez alors face à quelque chose comme : |
|||
$ ocaml |
|||
Objective Caml version 3.10.0 |
|||
# |
|||
et vous pouvez commencer à écrire des morceaux de Caml. |
|||
Pour demander à l'interprète Caml d'évaluer ce que vous avez écrit, il faut terminer votre expression (qui peut être sur plusieurs lignes) par deux points virgules et appuyer sur entrée : |
|||
$ ocaml |
|||
Objective Caml version 3.10.0 |
|||
# let pi = 3.14 ;; |
|||
val pi : float = 3.14 |
|||
# let valeurAbsolue n = if (n>0) then n |
|||
else -n ;; |
|||
val valeurAbsolue : int -> int = <fun> |
|||
# let un_nombre = 42 in valeurAbsolue un_nombre ;; |
|||
- : int = 42 |
|||
⚫ | |||
let b = a+1 ;; |
|||
val a : int = 1 |
|||
val b : int = 2 |
|||
# #quit ;; |
|||
Pour quitter l'interprète, vous pouvez : |
|||
* utiliser la commande "<tt>#quit;;</tt>" |
|||
* appuyer sur les touches "Control" et "d" en même temps. |
|||
=Utilisation d'Emacs et du mode tuareg= |
=Utilisation d'Emacs et du mode tuareg= |
Dernière version du 18 janvier 2009 à 17:53
Quelques éléments de syntaxe pour Caml
Commentaires
En Caml, les commentaires sont entourés de "(*" et "*)" :
(* Ceci est un commentaire (* et ceci est un commentaire dans un commentaire *) et ici, c'est toujours des commentaires *)
Définitions
- définition
let pi = 3.1415926536
- définition avec type explicite
let x:float = pi /. 2.0
- définition multiple (les expressions sont évaluées en même temps)
let n = 1 and pi = p.1415926536
- définition d'une fonction
let valeurAbsolue = fun n -> if (n>0) then n else (-n)
- définition d'une fonction deuxième méthode
let valeurAbsolue n = if (n>0) then n else (-n)
- définition d'une fonction, avec types explicites
let valeurAbsolue : int->int = fun n -> if (n>0) then n else (-n)
ou
let valeurAbsolue (n:int) : int = if (n>0) then n else (-n)
- définition récursive
let rec fibonacci n = if (n<1) then 1 else (fibonacci (n-1)) + (fibonacci (n-2))
- définition locale à une expression
let x:float = let pi = 3.14 in pi /. 2.0
Si une variable est définie plusieurs fois, c'est toujours la dernière définition qui est utilisée.
Utilisation du toplevel
Pour utiliser l'interprète OCaml, il faut lancer la commande "ocaml" dans un terminal. (Si vous voulez avoir un historique de vos commandes, il est conseillé de lancer la commande "ledit ocaml".)
Vous vous retrouverez alors face à quelque chose comme :
$ ocaml Objective Caml version 3.10.0 #
et vous pouvez commencer à écrire des morceaux de Caml.
Pour demander à l'interprète Caml d'évaluer ce que vous avez écrit, il faut terminer votre expression (qui peut être sur plusieurs lignes) par deux points virgules et appuyer sur entrée :
$ ocaml Objective Caml version 3.10.0 # let pi = 3.14 ;; val pi : float = 3.14 # let valeurAbsolue n = if (n>0) then n else -n ;; val valeurAbsolue : int -> int = <fun> # let un_nombre = 42 in valeurAbsolue un_nombre ;; - : int = 42 # let a = 1 let b = a+1 ;; val a : int = 1 val b : int = 2 # #quit ;;
Pour quitter l'interprète, vous pouvez :
- utiliser la commande "#quit;;"
- appuyer sur les touches "Control" et "d" en même temps.