[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: functional languages ill-suited for large programs?



Tom Lord wrote:
> Has anyone ever tried to make a purely functional, lazy language
> implementation in which _every_ function is implicitly cached?  The
> compiler optimization shifts in that case from "when should F be
> cached" to "when is clearly not worth bothering caching F" which is an
> easier (but still open-ended) problem.

The approach Bento follows is somewhat close: evaluate lazily,
cache aggressively, and let the compiler/interpreter, for the most
part, decide precisely *when* to cache.  What the programmer decides
is *where* to cache.  By default, functions are cached internally by
lexical scope, so that, for example, a function that appears in
identical form twice in an expression is evaluated only once.  But the
programmer can override this and specify a different lexical scope to
govern the caching behavior, as well as the repository to use.  By
promoting the caching behavior of a function to a higher lexical scope,
you get a kind of state without mutation.  Promoting it all the way up
to global scope and specifying an external database as the repository 
gets you global persistence -- without ever having to call a save
function.

Michael St. Hippolyte
http://www.bentodev.org