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