No description
Find a file
2011-04-18 17:58:20 -07:00
.gitignore first commit 2011-04-17 21:24:23 -07:00
bool.c add license, copyright 2011-04-17 22:45:16 -07:00
bool.h add license, copyright 2011-04-17 22:45:16 -07:00
env.c add license, copyright 2011-04-17 22:45:16 -07:00
env.h add license, copyright 2011-04-17 22:45:16 -07:00
hashtab.c first commit 2011-04-17 21:24:23 -07:00
hashtab.h first commit 2011-04-17 21:24:23 -07:00
int.c add license, copyright 2011-04-17 22:45:16 -07:00
int.h add license, copyright 2011-04-17 22:45:16 -07:00
lake.c add license, copyright 2011-04-17 22:45:16 -07:00
lake.h add license, copyright 2011-04-17 22:45:16 -07:00
LICENSE add license, copyright 2011-04-17 22:45:16 -07:00
list.c add license, copyright 2011-04-17 22:45:16 -07:00
list.h add license, copyright 2011-04-17 22:45:16 -07:00
Makefile add a readme, fix Makefile 2011-04-17 22:08:36 -07:00
parse.c add license, copyright 2011-04-17 22:45:16 -07:00
parse.h add license, copyright 2011-04-17 22:45:16 -07:00
Readme.md not strictly ANSI 2011-04-18 17:58:20 -07:00
string.c add license, copyright 2011-04-17 22:45:16 -07:00
string.h add license, copyright 2011-04-17 22:45:16 -07:00
sym.c add license, copyright 2011-04-17 22:45:16 -07:00
sym.h add license, copyright 2011-04-17 22:45:16 -07:00

Lake Scheme

A quick and dirty scheme written in C, for fun and to use while reading The Little Schemer. Very quick and dirty, a weekend hack.

Compiling & Running

Portable C, no deps, nothing to configure, no documentation!

$ make
$ ./lake

That will drop you at a repl. You can type expressions and they will be echoed back to you. There are symbols, integers, strings, and lists.

> (foo bar 42 "hello" (nested list))
(foo bar 42 "hello" (nested list))

Hooray! It parses (reads), evaluates, and then prints things back.

Lake needs:

  • dotted lists
  • functions
  • flesh out eval, write apply
  • booleans
  • chars
  • primitives (especially define)
    • define and friends
    • branching
    • native type operations
      • symbol
      • integer (math)
      • boolean (logic)
      • char
      • string
      • function
      • list (cons, car, cdr, ...)
      • dotted list
  • a minimal stdlib
  • sugar such as '... -> (quote ...)

I don't think I'll need any other numeric types, but they are easy to implement anyway when performance is no concern and they're all boxed.

Contributors

None of them want any credit.

License

Copyright 2011 Sami Samhuri

MIT License, see included LICENSE file