a spiny scheme implementation
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Ben Davenport-Ray cfb0248fb7 Start some scheme-defined test suites 2 months ago
contrib AAAAAAA 2 months ago
include/cactus Some fixes, added 'bound?' 2 months ago
lib Some fixes, added 'bound?' 2 months ago
runtime AAAAAAA 2 months ago
tests Start some scheme-defined test suites 2 months ago
.gitignore Added gitignore 6 months ago
LICENSE Add license 8 months ago
README.md Some fixes, added 'bound?' 2 months ago
all.do Removed some debugging output 2 months ago
cactus.do Some fixes, added 'bound?' 2 months ago
clean.do Some fixes, added 'bound?' 2 months ago
config.h Some fixes, added 'bound?' 2 months ago
config.sh Some fixes, added 'bound?' 2 months ago
default.o.do Some fixes, added 'bound?' 2 months ago
do add minimal do implementation for third parties 6 months ago
fulltest.do Some fixes, added 'bound?' 2 months ago
libcact.a.do Some fixes, added 'bound?' 2 months ago
main.c Removed some debugging output 2 months ago
tags.do wip, still 3 months ago
test.do Some fixes, added 'bound?' 2 months ago

README.md

🌵 cactus

a scheme implementation with spines

design goals

Cactus has taken a lot of inspiration from Picrin in that it tries to be a minimal and readable Scheme R7RS implementation. However, Cactus attempts to use the data structure libraries that are commonly packaged in the BSD family of OSes. Personally, I've found those libraries to be pretty elegant, so I've scraped together a few of them in one place and added one more that I think needed to be added.

  • tree.h : Self-balancing binary trees, cribbed directly from the BSDs.
  • queue.h : Linked lists, cribbed from the BSDs as well.
  • array.h : Dynamically allocated arrays, cribbed from Nicholas Marriott
  • table.h : Internal hash tables, made in house by yours truly.

Other than that, I want this to be clean and easy to read. It's as much of an art project as it is a programming project.

installation

First of all, don't use this. It'll prick you often.

Compilation is done with djb redo, a minimal implementation being built in:

./do

You can configure what built-in functions you want in cactus by editing config.h and recompiling.

what is actually supported

see config.h