# Fragments

An attempt to preserve some things that would otherwise be lost.

## Measuring some tree-traversing functions

::

In a previous article my friend Zyni wrote some variations on a list-flattening function, some of which were ‘recursive’ and some of which ‘iterative’, managing the stack explicitly. We thought it would be interesting to see what the performance differences were, both for this function and a more useful variant which searches a tree rather than flattening it.

## The absurdity of stacks

::

Very often people regard the stack as a scarce, expensive resource, while the heap is plentiful and very cheap. This is absurd: the stack is memory, the heap is also memory. Deforming programs so they are ‘iterative’ in order that they do not run out of the stack we imagine to be so costly is ridiculous: if you have a program which is inherently recursive, let it be recursive.

## Variations on a theme

::

My friend Zyni wrote a comment to a thread on reddit with some variations on a list-flattening function. We’ve since spent some time thinking about things related to this, which is written up in a following article. Here is her comment so the following article can refer to it. Other than notes at the end the following text is Zyni’s, not mine.

## Two tiny Lisp evaluators

::

Everyone who has written Lisp has written tiny Lisp evaluators in Lisp: here are two more.

## Dynamic binding without special in Common Lisp

::

In Common Lisp, dynamic bindings and lexical bindings live in the same namespace. They don’t have to.

## How to understand closures in Common Lisp

::

The first rule of understanding closures is that you do not talk about closures. The second rule of understanding closures in Common Lisp is that you do not talk about closures. These are all the rules.

## Another letter to Mel Stride that I will not send

::

I’d like to believe there was some purpose in writing to my MP, but I no longer do. He probably means well, but his soul has been sold, if he ever had one.

## A case-like macro for regular expressions

::

I often find myself wanting a simple case-like macro where the keys are regular expressions. regex-case is an attempt at this.

## The empty list

:: lisp

My friend Zyni pointed out that someone has been getting really impressively confused and cross on reddit about empty lists, booleans and so on in Common Lisp, which led us to a discussion about what the differences between CL and Scheme really are here. Here’s a summary which we think is correct.

## Closed as duplicate considered harmful

::

The various Stack Exchange sites, and specifically Stack Overflow, seem to be some of the best places for getting reasonable answers to questions on a wide range of topics from competent people. They would be a lot better if they were not so obsessed about closing duplicates.