SRFIs

In previous posts, I've mentioned SRFIs several times, without bothering to explain to non-Schemers what those are.SRFI stands for "Scheme Request For Implementation". They are a bit like Python PEPs, but there are a few important differences. Like PEPs, anybody can submit a SRFI. However, where approved PEPs become part of the Python core language or its standard library, there is no such mechanism for SRFIs. When declared "final", implementations may choose to include or ignore them. They do not become part of the Scheme standard, and there is no BDFL to approve or reject them.

The Scheme standard is intentionally "bare". This is great from a minimalistic perspective, but it's not very practical if you have to write lots of library functions yourself. SRFIs fix this problem by complementing the standard with libraries. For example, there aren't many list manipulating functions defined in R5RS. (Like, e.g., filter, or the range function I mentioned in my post about eager comprehensions.) Fortunately, SRFI-1, the list library, defines all the list functions you can think of, and then some. (More about this in a separate post.)

So, yeah, if you want to do any Scheme programming that goes beyond academic exercises, you'll definitely want to look at the SRFIs. srfi.schemers.org is the place to be, containing not only all the final requests, but also archives of the discussion lists (which are useful when you want to know why a certain SRFI has feature X but lacks Y, etc).

:: Comments