[racket-dev] using Racket to build an image-based Lisp: feasible?
On Mar 5, 2013, at 1:39 PM, Ray Racine <ray.racine at gmail.com> wrote:
> Larceny (a Scheme) supports images. I had another dance with them awhile back playing around with Gilad Bracha's Newspeak. I hear the Dart folks have debated support for platform independent images of Dart programs to be served out for executing in Chrome. They'll probably do it. They are certainly experimenting with the idea.
>
> The problem I hit with images was knowing the state of the state of the image and ability to recreate that known state if necessary upon loss of an image.
>
> With Typed Racket, immutable structs etc. I really do focus on writing pragmatically Functional code, in the sense of referential transparent code. As a result there is very little state to capture other than exploratory interactions at the top level or within a namespace via the REPL. Those explorations I'm more than happy to throw away as I've lost track of the mutating sequence of steps I've been binding in there anyway.
>
> How much value is there in creating an image of a purely functional program? How far from a persisted image is the persisted code?
>
> Compare and contrast with an OO language like Smalltalk or Newspeak which are encapsulating state and evolving that state. Snapshotting the current state of that evolving state in a persistent image has more utility there I think, modulo, the mentioned issue of a perfect understanding of the current state, and confidence in a 100% reproducability, back to that state.
>
> With Git, for example, one has very granular state of source code evolution and given a primarily purely Functional code base, the source code offers a fairly close approximation of an image.
>
> At the function/procedure definition level incremental compilation at the REPL is a bit more of loss for me. But I'm finding that is also lessening. These days (re)launching a REPL into a fresh namespace is almost immediate.
If you don't benfit from image-based programming, then you don't.
I benefit from it enough to be willing to build the feature for myself if I have to.