Bobbing for Kernels

See Bob. See Bob bob. Bob, Bob, bob!

Posts Tagged ‘Lisp’

Scheme status

Posted by kernelbob on October 15, 2009

I’ve written here before about my efforts to write a Scheme interpreter from scratch.  The last update was in May, but I’m still working on it.  I’ve made 60 git commits since then.  The major thing I’m trying to do is implement macros, but I’m having a hard time of it.  No matter.  When they’re done, I’ll understand macros thoroughly.

Read the rest of this entry »

Posted in languages | Tagged: , , , , , , , | 3 Comments »

Scheming, part 7. The Reader.

Posted by kernelbob on May 21, 2009

I haven’t ‘blogged about my Scheme interpreter in ages.  Development stopped from January through March, but I’ve been working on it again.  Here are links to the earlier articles.

The biggest new development  is the reader.  Most developers call them parsers, but Lisp people call them readers.  I have written six readers for Scheme now, and I’ve effectively completed a class in advanced parsing theory.  The current reader works very well, and I do not want to write another.

Read the rest of this entry »

Posted in computers, languages | Tagged: , , , , , , | 2 Comments »

Scheming, part 6

Posted by kernelbob on December 13, 2008

This morning I added vectors to my Scheme interpreter.  It was surprisingly easy.  It was nearly test-driven development — now that the scheme interpreter has a full unit test harness built in, I got the tests written before I finished the code (though not before I started).

Read the rest of this entry »

Posted in computers, languages | Tagged: , , , , | 1 Comment »

Scheming, part 5

Posted by kernelbob on November 28, 2008

Call/cc works!

That’s the big news.  Lots of little tweaks and cleanup, but call/cc is the big deal.  I’d designed the evaluator to handle call/cc way back when, so it wasn’t a major rewrite.  It was just a matter of figuring out exactly what it had to do.

Read the rest of this entry »

Posted in computers, languages | Tagged: , , , , | 1 Comment »

Announcing kbscheme

Posted by kernelbob on November 22, 2008

I published my scheme interpreter on gitorious.  Now you can follow along.  It needed a name, so I called it kbscheme.  Not a brilliant name but it’ll do.

Here’s the project blurb.

kbscheme

This vanity project is yet another implementation of the Scheme programming language.

Project goals:

  • I want to learn Scheme.
  • I want to write something in C. I’ve been using higher level languages and my C is rusty.
  • I want to write a garbage collector. They’ve always fascinated me, but I’ve never written one.
  • I have some research ideas about garbage collection that I want to explore.

Project non-goals:

  • a production-quality Scheme interpreter
  • full implementation of the language

Check it out, Brandon.

Hint to the git-ignorant (as I was very recently).  Go to the repositories/mainline page and click on the “More info…” links,  Those will show the exact commands needed to copy (clone) the tree onto your local disk.

Actually, I’m still git-ignorant.  Gotta work on that…

Posted in computers, languages | Tagged: , , , , , , | 1 Comment »

Scheming, part 3

Posted by kernelbob on October 20, 2008

GC is hard.  Let’s go shopping.

I’ve been working on my scheme interpreter a lot.  But I don’t have much to show for it.  What I do have, finally, is a working garbage collector (GC).  GC is a real pain to debug.  Every error shows up as a memory corruption bug.

Read the rest of this entry »

Posted in computers, languages | Tagged: , , , , , | 1 Comment »

Scheming, part 2

Posted by kernelbob on October 9, 2008

I’ve been working on my Scheme interpreter.  I just got the nonrecursive evaluator working, so it seems like a good time to take stock.

Read the rest of this entry »

Posted in computers, languages | Tagged: , , , , | 1 Comment »

Scheming, part 1

Posted by kernelbob on September 25, 2008

I have a Scheme interpreter.

~/scheme> ./scheme
> ()
> 123
123
> +
#<C-proc 0x804ad19>
> (+ 12 34)
46
> (lambda (x) x)
#<proc 0x80590f8>
> ((lambda (x) (+ x x)) 3)
6
> [Ctrl-D]
~/scheme>

Read the rest of this entry »

Posted in computers, languages | Tagged: , , | 1 Comment »

Not another Scheme interpreter!

Posted by kernelbob on September 11, 2008

I’m getting psyched about the idea of writing a Scheme interpreter.  I’m wondering what’s the absolute minimum amount of C code you have to write to be able to bootstrap it.

Read the rest of this entry »

Posted in computers, languages | Tagged: , , | 2 Comments »