Version 0.1 of lazy.rb is out, yet again offering lazy evaluation in
Ruby, but with a new version number.
Along with the spiffy new version number, you get:
* Lazy::DivergenceError, which is raised if a lazy computation diverges
* saner exception handling:
+ exceptions in lazy computations could have confusing
effects before; this version preserves the once-and-only-once
evaluation policy, even in the presence of exceptions
+ exceptions raised while evaluating lazy computations are wrapped
in Lazy::DivergenceError, so they can be distinguished from
exceptions raised by strict code (the original exception can be
obtained via Lazy::DivergenceError#reason)
* nearly seamless implicit evaluation, thanks to Pit Capitain
* a few more paragraphs of documentation
The web site (such as it is) is now here:
http://moonbase.rydia.net/software/lazy.rb/
The script is here:
http://moonbase.rydia.net/software/lazy.rb/0.1/lazy.rb
The documentation is here:
http://moonbase.rydia.net/software/lazy.rb/0.1/doc/
I have some questions, also.
* Would you all prefer "promise" or "lazy" for the promise-constructor
function?
* Should exceptions resulting from an explicit call to force() be
unwrapped from their Lazy::DivergenceError?
* Should the wrapper role of Lazy::DivergenceError be separated into
a different exception class?
-mental