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 1 year ago
contrib AAAAAAA 1 year ago
include/cactus Some fixes, added 'bound?' 1 year ago
lib Some fixes, added 'bound?' 1 year ago
runtime AAAAAAA 1 year ago
tests Start some scheme-defined test suites 1 year ago
.gitignore Added gitignore 1 year ago
LICENSE Add license 1 year ago
README.md Some fixes, added 'bound?' 1 year ago
all.do Removed some debugging output 1 year ago
cactus.do Some fixes, added 'bound?' 1 year ago
clean.do Some fixes, added 'bound?' 1 year ago
config.h Some fixes, added 'bound?' 1 year ago
config.sh Some fixes, added 'bound?' 1 year ago
default.o.do Some fixes, added 'bound?' 1 year ago
do add minimal do implementation for third parties 1 year ago
fulltest.do Some fixes, added 'bound?' 1 year ago
libcact.a.do Some fixes, added 'bound?' 1 year ago
main.c Removed some debugging output 1 year ago
tags.do wip, still 1 year ago
test.do Some fixes, added 'bound?' 1 year 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