ImperialViolet

Scheme (29 Jul 2002)

Well, I did come up with a load of links over the weekend and wrote up an IV entry - then promptly forgot to upload it. Rats. That'll sit at home for another couple of weeks now

However, here are some that I dug out today:

You're going to have to Google for the rest of the links today

God it's hot. Not going to be sleeping well tonight

Been looking at Bigloo - a compiler for (mostly) R5RS Scheme which outputs C and Java bytecodes as its backends. One very nice feature is that it's designed to work with Java/C native code really well. However much we might wish it wasn't, the reality is that FFI interfaces in higher level languages (now there's a vague term (and a redundant acronym for that matter)) are really important.

It even manages to compile non-deterministic code using call/cc (see the snippet below, mostly from On Lisp)

In addition it has a nice (ILISP like) Emacs interface and what looks like a very nice native IDE, called BDK. I say looks like because I cannot get it to compile, but the screen shots are impressive

LtU has a link to conference notes about Bigloo's TK based GUI toolkit, called BigLook

(module nondet)

(define *paths* '())
(define failsym '@)

(define (choose choices)
  (if (null? choices)
      (fail)
    (call-with-current-continuation
     (lambda (cc)
	(set! *paths* (cons (lambda ()(cc (choose (cdr choices)))) *paths*))
(car choices)))))

(define fail 0)

(call/cc
 (lambda (cc)
   (set! fail (lambda ()
		 (if (null? *paths*)
		     (cc failsym)
		     (let ((p1 (car *paths*)))
			(set! *paths* (cdr *paths*))
			(p1)))))))

(define small-ints '(1 2 3 4 5 6 7 8 9 10))

(define sum (lambda (x)
	       (let ((a (choose small-ints))
		     (b (choose small-ints)))
		  (if (= (+ a b) x) (cons a b) (fail)))))

(display (sum 19))(newline)