Monter: Didacticiels pour Scheme [Table des matières][Index]
Guix utilise l’implémentation Guile du langage Scheme. Pour commencer à
jouer avec le langage, installez-le avec guix install guile
et
démarrer une REPL, une
boucle de lecture, évaluation, affichage, en lançant guile
sur
la ligne de commande.
Vous pouvez également lancer la commande guix environment --ad-hoc
guile -- guile
si vous préférez ne pas installer Guile dans votre profil
utilisateur.
Dans les exemples suivants, les lignes montrent ce que vous devez taper sur la REPL ; les lignes commençant par « ⇒ » montrent le résultat de l’évaluation, tandis que les lignes commençant par « -| » montrent ce qui est affiché. Voir Using Guile Interactively dans GNU Guile Reference Manual, pour plus d’information sur la REPL.
#true
et #false
(abrégés #t
et #f
)
correspondent aux booléens « vrai » et « faux ».
Voici des exemples d’expressions valides :
"Bonjour le monde !" ⇒ "Bonjour le monde !" 17 ⇒ 17 (display (string-append "Bonjour " "Guix" "\n")) -| Bonjour Guix ⇒ #<unspecified>
lambda
:
La procédure ci-dessus renvoie le carré de son argument. Comme tout est une
expression, l’expression lambda
renvoie une procédure anonyme, qui
peut ensuite être appliquée à un argument :
((lambda (x) (* x x)) 3) ⇒ 9
define
:
(define a 3) (define square (lambda (x) (* x x))) (square a) ⇒ 9
(define (square x) (* x x))
list
:
(list 2 a 5 7) ⇒ (2 3 5 7)
'(display (string-append "Bonjour " "Guix" "\n")) ⇒ (display (string-append "Bonjour " "Guix" "\n")) '(2 a 5 7) ⇒ (2 a 5 7)
`(2 a 5 7 (2 ,a 5 ,(+ a 4))) ⇒ (2 a 5 7 (2 3 5 7))
Remarquez que le résultat ci-dessus est une liste d’éléments mixtes : des
nombres, des symboles (ici a
) et le dernier élément est aussi une
liste.
let
(voir Local Bindings dans GNU Guile Reference Manual) :
(define x 10) (let ((x 2) (y 3)) (list x y)) ⇒ (2 3) x ⇒ 10 y erreur→ In procedure module-lookup: Unbound variable: y
On peut utiliser let*
pour permettre au déclarations de variables
ultérieures d’utiliser les définitions précédentes.
#:
(dièse, deux-points)
suivi par des caractères alphanumériques :
#:comme-ça
. Voir Keywords dans GNU Guile Reference Manual.
%
pour les variables globales
non modifiables à l’étape de construction. Remarquez que ce n’est qu’une
convention, comme _
en C. Scheme traite %
de la même manière
que les autres lettres.
define-module
(voir Creating Guile Modules dans GNU Guile Reference Manual). Par exemple :
(define-module (guix build-system ruby)
#:use-module (guix store)
#:export (ruby-build
ruby-build-system))
défini le module guix build-system ruby
qui doit se situer dans
guix/build-system/ruby.scm quelque part dans le chemin de recherche
de Guile. Il dépend du module (guix store)
et exporte deux variables,
ruby-build
et ruby-build-system
.
Pour une introduction plus détaillée, consultez Scheme at a Glance, par Steve Litt.
L’un des livres de référence majeurs pour Scheme est « Structure and
Interpretation of Computer Programs » de Harold Abelson et Gerald Jay
Sussman, avec Julie Sussman. Vous trouverez une
copie
gratuite en ligne, avec
en anglais. Le livre est
disponible au format Texinfo dans le paquet Guix sicp
. Allez-y,
lancez guix install sicp
et commencez à le lire avec info sicp
(voir Structure and Interpretation of Computer Programs). Un
livre électronique officieux est
aussi disponible.
Vous trouverez plus de livres, de didacticiels et d’autres ressources sur https://schemers.org/.
Monter: Didacticiels pour Scheme [Table des matières][Index]