Background

Learning a new programming language is a tedious undertaking. In my case, I found the beginning of my learning of the Guile language laborious.

  • I started with no experience in Lisp or its dialects (like Scheme).
  • I didn't know anyone experienced (or even willing to learn) in Lisp or its dialects.
  • I am not a researcher.
  • Mathematics is not my vocation.
  • I like to tinker to learn, to follow a tutorial to develop a small simple software, to read blog articles, to watch a live-coding video...

In short, at first sight, Guile and me, it was not made to stick.

In the Guile Hacker's Notebook, I want to gather everything I think an apprentice hacker would need to go from beginner (discovering the syntax) to intermediate (creating simple programs).

This is the resource I wish I had found when I started.

A complement to the Scheme language literature

Lisp is one of the oldest families of programming languages.

Scheme is a dialect of the Lisp programming language (yes, it is named after its family). The Scheme language specification evolves at the rate of revisions. Several implementations of the Scheme language exist (such as Guile, Chez Scheme, CHICKEN, Gambit). Each implementation respects all or part of one or more versions of the specification.

Thus, the resources to learn Guile are mixed with those to learn Scheme or even Lisp. But they diverge in terms of features/api/modules.

This makes the learning experience uncomfortable when one finds a resource illustrating a Scheme concept with a few lines of code that Guile's REPL can't interpret.

The Guile Hacker's Notebook is a resource dedicated specifically to Guile. All functions/modules used in this book are part of the Guile distribution.

A complement to the Guile language reference

As its name indicates, a reference is a book that is regularly returned to with a specific need. It provides the exhaustive list of the language features without explaining how to implement them (it happens but it is not systematic).

The Guile Hacker's Notebook illustrates these concepts by structured and concrete situations.

Another approach

My programming style is very much influenced by a number of principles and practices (Test Driven Development, Clean Code, Clean Architecture...) that I discovered through object-oriented and statically typed languages, in a more industrial than academic environment.

These approaches have been formalized in books that I recommend:

  • "Test Driven Development by Example", by Kent Beck
  • Clean Code: A Handbook of Agile Software Craftsmanship" by Robert C. Martin
  • Clean Architecture: A Craftsman's Guide to Software Structure and Design", by Robert C. Martin

By the way, it was while searching for resources on TDD that I once came across quii.gitbook.io which was the first source of inspiration for this book.

The Guile Hacker's Notebook explores these concepts through Guile, a functional language with dynamic typing.

What do you need

  • A computer and the GNU/Linux system of your choice.
  • Some programming experience.
  • The desire to learn.

Practical resources about Guile/Scheme

If you feel the need, there are ressources to warm you up before reading the Guile Hacker's Notebook.

Feedbacks

Please, help me improve this book! Give me all your comments:

  • did I skip a step?
  • any inconsistencies?
  • need more information?
  • something doesn't work?
  • spelling mistakes?
  • not enough love?
  • You dig it?

Send it all to me: