Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 07-05-2015 15:00:26

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(G)UI : openbox
Inscription : 26-08-2010

Le langage haskell

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

Pour ceux qui ne connaissent pas :
    https://www.haskell.org/

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 1 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

Dernière modification par enicar (07-05-2015 19:42:27)


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#2 08-05-2015 09:21:02

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(G)UI : openbox
Inscription : 26-08-2010

Re : Le langage haskell

J'ai trouvé un tutoriel en français sur Haskell. La documentation en français sur ce langage est assez rare. On trouve cette doc ici : Apprendre Haskell vous fera le plus grand bien

La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#3 08-05-2015 09:28:18

paskal
autobahn
Lieu : ailleurs
Inscription : 14-06-2011
Site Web

Re : Le langage haskell

big_smile

I'd love to change the world
But I don't know what to do
So I'll leave it up to you...

logo-sur-fond.png

Hors ligne

#4 10-05-2015 10:23:04

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(G)UI : openbox
Inscription : 26-08-2010

Re : Le langage haskell

Bon, je vais rajouter quelques autres ressources qui sont intéressantes.
Elles sont toutes en anglais. D'abord un livre d'Oreilly disponible en
ligne :
Real World Haskell


Ensuite le site qui centralise beaucoup de pacakges haskell.
Ces packages sont intallables avec cabal. Beaucoup ont un paquet
debian correspondant, mais pas tous.
Hackage::[Package]


Deux moteurs, de recherche spécialisé dans haskell. Vous ne savez pas
où se trouve une fonction, un module, une classe ? Hoogle et Hayoo
sont fait pour vous wink
Hoogle
Hayoo
Hayoo est un peu plus rusé, après je trouve que le look de Hoogle
est plus sympa (c'est une histoire de goût wink). Les deux fonctionnent
très bien en tous cas smile

Haskell a un wiki :
Le Wiki de Haskell.org


Des tutoriels pour des gens qui connaissent déjà les bases du
langage,que j'ai trouvé très sympa :
http://tobold.org/article/learning


Un article de référence sur le fonctionnement des classes de type dans
haskell :
Typeclassopedia
À lire quand vous serez plus avancé dans la connaissance du langage wink


Voilà, c'est tout pour aujourd'hui. D'après le nombre de retour je
vois que ça n'intéresse pas grand monde, mais ce n'est pas grave, ça
viendra peut être wink
Au fait, si vous avez des questions à poser, n'hésitez pas ! Je tenterai
d'y répondre si je peux wink


EDIT: J'avais oublié l'excellent blog : Haskell for all
fait par un passionné du langage wink

Dernière modification par enicar (10-05-2015 10:28:23)


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#5 10-05-2015 10:42:02

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 8 (jessie) 64 bits + backports
Noyau : 4.6.0-0.bpo.1-amd64
(G)UI : gnome 3.14.1
Inscription : 21-10-2008

Re : Le langage haskell

Avoir de tels posts d'information sur un site d'entraide est une chance enikar. Merci smile

"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

En ligne

#6 10-05-2015 19:15:39

sogal
Black Metal Modo
Distrib. : Debian Testing
Noyau : 4.7
(G)UI : Gnome
Inscription : 09-05-2013
Site Web

Re : Le langage haskell

Salut et merci pour ton retour, très intéressant.
Pas sur que ce soit le langage que je choisirais pour apprendre cela dit ? ou je me fais une idée ?

Machine perso : Thinkpad x230 Debian Stretch | Machine pro : Thinpad T450 openSUSE Leap 42.2

Hors ligne

#7 10-05-2015 19:29:57

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(G)UI : openbox
Inscription : 26-08-2010

Re : Le langage haskell

C'est un très bon langage pour apprendre l'algorithmique, et on
apprend d'avantage à bien coder en haskell que dans bien des langages.
Mais comme dans tous les langages, il ne faut pas abuser des idiomes
mais en user intelligemment. L'idée est que le code doit rester clair
et lisible.  Évidemment, Haskell ne peut pas convenir à tout le monde
ni servir à tout, mais on peut déjà faire beaucoup de chose, y compris
faire certaines que l'on fait habituellement avec des shell script.
Dès qu'un script bash (pour se fixer les idées) devient trop gros, il
est bien de le porter dans un langage de script comme
perl/python/ruby. Et bien, j'ai lu un compte rendu d'expérience d'un
programmeur Haskell, qui avait porté son shell script en  Haskell. Son
script prenait de très longues minutes à faire son boulot. Le
programme en haskell ne prenait que trois secondes, et était beaucoup
plus concis. Cette expérience est relatée ici :
http://tobold.org/chapter/doio/11

En plus, c'est un langage qui permet vraiment de construire ses
programmes petit à petit, bien qu'il ne faudrait pas faire comme
cela tongue

La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#8 16-05-2015 19:19:26

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(G)UI : openbox
Inscription : 26-08-2010

Re : Le langage haskell

J'ai trouvé un article très intéressant qui explique le monades (le point le plus obscur d'Haskell, mais
aussi le plus puissant) : Les monades dans la programmation fonctionnelle

Et un autre article beaucoup plus théorique qui traite des catégories
en programmation : Programmation fonctionnelle et théorie des catégories

Tout cela est illustré par du code en Haskell, autant dire qu'il faut quand même être
un peu avancé dans la compréhension du langage avant de comprendre ces articles.

Et en plus ce sont des articles en français smile

La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#9 26-05-2015 12:10:24

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 4.8.10
(G)UI : openbox
Inscription : 26-08-2010

Re : Le langage haskell

J'ai trouvé quelques autres ressources sympa sur Haskell.
D'abord un dépôt sur github qui propose un document qui recense
des documentations intéressantes pour apprendre le langage :
Learn Haskell
Qui existe en français (même si la plupart des liens pointés sont
des documents en anglais) :
Apprendre Haskell

Un livre sur haskell est disponible en ligne. Il a été écrit sous forme
de wiki :
Haskell Wiki Book
Il est vraiment très bien fait. Je le recommande vivement.

Un cours qui est vraiment très bien fait aussi :
cis194
Il y a des exercices pour s'entraîner, sans la solution, ce qui est bien
mieux big_smile

Un autre cours qui est aussi très bien. Beaucoup plus succinct, il permet
d'avancer très vite :
cs240h

La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

Pied de page des forums