Le langage haskell

jeudi 7 mai 2015

Salut,
Je voudrais savoir si certains d'entre vous connaissent/pratiquent le
langage Haskell.

Pour ceux qui ne connaissent pas :
    http://ift.tt/1AkOFzb

Et une minuscule introduction : Haskell est un langage purement
fonctionnel, ce qui veut dire que l'élément de base du langage est la
fonction et non l'instruction comme dans les langages impératifs.
Donc, on utilise la récursivité à la place des boucles. Les boucles
n'existent pas en Haskell, ni l'affectation.  En fait, il y a moyen de
simuler les boucles et les affectations, mais c'est une autre
histoire… La récursivité est la propriété qu'une fonction est définie
en fonction d'elle même, c'est à dire que dans le corps de la
fonction, la fonction s'appelle elle-même. Petit exemple, pour
comprendre. En python la fonction factorielle peut être écrite comme
suit (manière itérative) :


def fac(n)
    acc=1
    while n > 0:
        acc = acc * n
        n = n - 1
    return acc
 

Même si un adepte de python ne l'écrirait pas comme ça wink   
On peut réécrire cette fonction de manière récursive, toujours en
python :


def fac(n)
    if n == 0:
        return 1
    else:
        return (n * fac(n-1))
 

Évidemment, cette dernière version suppose que n >= 0.
La première version renvoie pour tout n <= 1.


En haskell, on peut l'écrire comme suit :


fac 0 = 1
fac n = n * fac (n-1)
 

Il y a beaucoup d'autre façon de l'écrire bien sûr, le langage est
assez riche en possibilités. Dans cet exemple, on voit que j'ai défini
la factorielle à l'aide d'équations, c'est très déclaratif comme
langage.

Note: La factorielle d'un nombre entier n est le produit des entiers
de 1 à n. Par exemple, factorielle de 3 est égale à 1 * 2 * 3 = 6.
En maths, on note cela,  3! = 6 wink



Le langage haskell

0 commentaires:

Enregistrer un commentaire

 

Lorem

Ipsum

Dolor