## "Corpus" of lisp/scheme programs which can be used for research

Are there any good bodies of such programs perhaps ideally which are pure that can be used for research studies? I am trying to get a sense of how scheme/lisp routines are typically structured without having to construct a body of my own routines which may be a non trivial task.

## Comment viewing options

### i dunno but things i can think of

SRFIs. CL itself. PLT Scheme. Google around for large open-source lisp/scheme programs. Loot at Clojure Contrib.

### For some documented things....

Take a peek at Norvig's now classic (makes me feel old) PAIP and also have a good look at Forbus and De Kleer's "Building Problem Solvers." Came with a companion volume with all the (considerable) Lisp code.

I also highly recommend taking just a piece of CL - sequences, strings, loop (just kidding), vectors, lists, the math funs - really whatever floats your boat, and go ahead and implement that tiny CL subset in CL.

You could take one of the SRFI's using PLT Scheme (nice environment), but I'm still less familiar there (getting there though).

There's a lot to be said, IMHO, for taking a simple function like remove or map, and taking a very hard look at all the logic behind the CL version and code it up. So CL's function to remove every element "item" from a sequence looks like.

remove* item seq &key :test :test-not :key :count :start :end :from-end


And, recall that "seq" is potentially a list, vector, string.... Gosh, upon examination, I'm surprised it lacks the CL's very cool predicate based :start/:end predicates.

CL may be a bit of a mess, but CL has a one very cool feature from which I can't help but feel most languages since have retreated - and very much to their detriment and the detriment of their users:

Apart from the small primitives, nearly every CL function is a considerable program in its own right.

It would be nice to see an ML or Haskell (or Clean, Scala, etc.) derivative that embodied this important CL design principle.

Now that Scala supports (a somewhat odd) version of keyword arguments, maybe someone will code up a nice(r) Scala version of CL's sequence functions. Hmmmm.

Scott

### Thanks I will take a look.

Thanks I will take a look.

### PLaneT Scheme is large and

PLaneT Scheme is large and includes PLT Scheme version requirements for various modules.