Carnet du Hacker Guile : Les booléens (nouveau chapitre)
Le Carnet du Hacker Guile suit le style du Test Driven Learning pour illustrer des fonctionnalités du langage de programmation Guile. Des apartés sur les outils et les techniques sont apportées pour aider le hacker a devenir plus productif.
Dans ce chapitre, le hacker manipule les booléens. Il en profitera pour documenter son code source avec ce que l'on appelle des docstrings.
Le chapitre est accessible à l'adresse suivante :
https://jeko.frama.io/fr/booleans.html.
Profitons de cette article pour jouer un peu avec tout ça !
Les booléens
Les deux valeurs booléennes sont : « vrais » et « faux ». Respectivement #t
ou #true
et #f
ou #false
dans Guile.
Dans un contexte de test conditionnel, « vrai » signifie toute expression autre que #f
ou #false
Voici une petite suite de tests qui illustre tout ça :
(use-modules (srfi srfi-64))
(test-begin "test-suite")
(test-equal "Truth"
#t
#true)
(test-equal "Falsness"
#f
#false)
(test-equal "Numbers are true"
#t
(if 12547
#t
#f))
(test-equal "Strings are true"
#t
(if "I am not false"
#t
#f))
(test-equal "Lists - even empty - are true"
#t
(if '()
#t
#f))
(test-equal "Symbols are not false"
#f
(not 'i-am-not-false))
(test-end "test-suite")
Crées un fichier /tmp/bool.scm
avec le code ci-dessous. Lances les tests et si tout se passe bien, tu devrais voir le résultat suivant :
$ guile bool.scm
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/bool.scm
;;; compiled /home/jeko/.cache/guile/ccache/3.0-LE-8-4.3/tmp/bool.scm.go
%%%% Starting test test-suite (Writing full log to "test-suite.log")
# of expected passes 6
Si l'envie te prends, tu peux bidouiller ce fichier pour expérimenter !
Les docstrings
Crées un fichier /tmp/docstring.scm
et mets-y le code ci-suivant dedans :
(define-module (docstrings))
(define-public (dummy-procedure)
"See my docstring ?!"
(display "I am dummy"))
Puis, ouvre le REPL et exécutes les commandes suivantes pour voir un exemple d'utilisation des docstrings :
$ guile
GNU Guile 3.0.4
Copyright (C) 1995-2020 Free Software Foundation, Inc.
Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.
Enter `,help' for help.
scheme@(guile-user)> (load "docstring.scm")
scheme@(guile-user)> (use-modules (docstrings))
scheme@(guile-user)> ,describe dummy-procedure
See my docstring ?!
scheme@(guile-user)> (dummy-procedure )
I am dummyscheme@(guile-user)>
Merci beaucoup d'avoir lu cet article !
N'hésites pas à me donner ton avis, proposer une idée d'amélioration, laisser un commentaire, ou poser une question via :
– E-mail: jeremy AT korwin-zmijowski DOT fr
– Mastodon: @jeko@framapiaf.org
– Peertube: @jeko@video.tedomum.net
– Twitter: @JeremyKorwin
Abonnes-toi pour ne pas manquer les prochains :
– articles via Mastodon @jeko@write.as et RSS
– screencasts via Peertube jeko@video.tedomum.net et RSS
Et encore plus important, partages ce blog et dis à tes amis que c'est le meilleur blog de l'histoire du logiciel libre ! Sans dec'