> Right, that's not what the term lazy evaluation means — those are lazy data
> structures. I was trying to clarify that distinction in my original
> response, but maybe failed to do so. In languages with true lazy evaluation
> like Haskell (not the weird half-lazy evaluation that R has), all data
> structures are lazy, so infinite data structures are natural to create, but
> lazy evaluation and lazy data structures are very different.
Well, yes and no. Scheme and Pure are both impure eager languages
with both eager and lazy data structures available. (If it comes to
that, FILE is effectively a lazy data structure in C.) The Scheme
standards allow lazy data structures to be forced by primitive
procedures (the Chibi implementation makes this a compile-time option)
and Pure's list procedures will accept either eager or lazy lists.
That sounds like something Julia users might plausibly want: see
http://docs.pure-lang.googlecode.com/hg/pure.html#lazy-evaluation-and-streams
for details.
Pure and Julia should learn to go hand in hand. Both are dynamic
languages, both were designed for particular niches but are applicable
to much wider problems, both use LLVM, both can load arbitrary
C-compatible functions from dynamic libraries. Pure can also call
arbitrary functions from bitcode files; if Julia can learn to do that,
or at least to generate bitcode (which I understand is trivial), the
basis for interoperation will be present. Albert Gräf, the author of
Pure, has said he is in favor of it: see
https://groups.google.com/group/pure-lang/msg/c4df7941c15e171b?dmode=source&output=gplain&noredirect
for his take on Julia as of about a month ago.
--
GMail doesn't have rotating .sigs, but you can see mine at
http://www.ccil.org/~cowan/signatures