According to the manual [1], this snippet: (letrec ((a 42) (b (+ a 10))) (* a b)) should return "Error: unbound variable: a." But it returns 2184 in Guile 2.0.7. Either there is a bug in the manual or 'letrec' doesn't work properly. [1] https://gnu.org/software/guile/manual/guile.html#Local-Bindings