I must admit I took a little look this evening and we had already identified the issue but I think our tiredness caught us out and so I've made a pull request
to fix a bug we introduced in some refactoring
and also to evaluate `#t` and `#f` correctly to get the lat? specs passing
A few more notes on the meeting:
We worked on lambdas and function definitions, and made the assumption that all functions have a single argument to keep things simple. This is all that is required for Chapter 2 of the Little Schemer (and if it's good enough for Haskell then it's good enough for us).
Treating the Little Schemer specs for a language left us wishing the examples had come in more bite sized pieces. Tom had already added some specs which don't appear in the book to help provide stepping stones for the first example in Chapter 2. These included ones for `cond` which we got passing in the previous meeting, and for a lambda which is evaluated immediately which we added support for in List#evaluate
We noted the difference between parameters (which appear in the function definition) and arguments (which you pass when calling a function) as part of refactoring some of the names of our parameters
. This was a distinction that I can't help but feel I should probably have learned many years ago.
We also noted that the List#evaluate method
is starting to look like it could do with simplification and lamented Ruby's inability to allow us make Atom::FALSE falsey which would make us a bit more comfortable with returning it from query methods like Atom#eq?