Guile Hacker Handbook: Booleans (new chapter)
The Guile Hacker Notebook follows the style of Test Driven Learning to illustrate features of the Guile programming language. Asides on tools and techniques are provided to help the hacker become more productive.
In this chapter, the hacker manipulates booleans. He will take the opportunity to document his source code with what are called docstrings.
The chapter is accessible at the following address: https://jeko.frama.io/fr/booleans.html .
Let's take advantage of this article to play a bit with all this!
Booleans
The two boolean values are: “true” and “false”. Respectively #t
or #true
and #f
or #false
in Guile.
In a conditional test context, “true” means any expression other than #f
or #false
.
Here is a small test suite that illustrates all this:
(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")
Create a /tmp/bool.scm
file with the code below. Run the tests and if everything goes well, you should see the following result:
$ 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-suite (Writing full log to "test-suite.log")
# of expected passes 6
If you feel like it, you can tweak this file to experiment!
The docstrings
Create a /tmp/docstring.scm
file and put the following code in it :
(define-module (docstrings))
(define-public (dummy-procedure)
"See my docstring?!"
(display "I am dummy"))
Then, open the REPL and execute the following commands to see an example of using 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)>
Thank you so much for reading this article !
Don't hesitate to give me your opinion, leave a comment, or ask a question via : – E-mail: jeremy AT korwin-zmijowski DOT fr – Mastodon: @jeko@framapiaf.org – Peertube: @jeko@video.tedomum.net – Twitter: @JeremyKorwin
Also, please subscribe so you don't miss the next ones : – blog via Mastodon @jeko@write.as et RSS – screencast via Peertube @jeko@video.tedomum.net et RSS
And most importantly, share the blog and tell your friends it's the best blog in the history of Free Software! No shit!