[e-lang] Announcing Release Candidate 0.8.36n

Mark S. Miller markm at cs.jhu.edu
Mon May 8 04:07:39 EDT 2006


At <http://www.erights.org/download/0-8-36/index.html>.

The boolean control-flow expressions, &&, ||, and =~, now expand to reasonable 
amounts of code and preserve match-failure info, as shown below. Further 
examples to follow soon.

Note 0.8.36n prints Kernel-E trinary-defines using the "given" syntax, which 
we are unlikely to keep. Please avoid depending on this syntax.


Mark S. Miller wrote:
> 0.8.36m is a development snapshot and not a release candidate because various 
> productions that were defined to expand to match-bind expressions still are. 
> These match-bind expressions then expand as above. The result is correctness 
> preserving (and CapDesk still runs), but it voluminous, slow, and unreadable:
> 
> 
>      ? if ((def a := true) || (def b := false)) {&b}
>      # expansion: [42 lines of unreadable code]
> 
>      # value: <ref broken by problem: <NullPointerException: \
>      #         must be an EList rather than null>>


? if ((def a := true) || (def b := false)) {&b}
# expansion: escape ej__1 {
#                given escape ej__3 {
#                    given (given true =~ a, ej__3) =~ _ :__Test
#                    given Ref.broken("right side skipped") =~ br__5
#                    __makeList.run(&br__5)
#                } catch ex__7 {
#                    given (given false =~ b, ej__1) =~ _ :__Test
#                    given Ref.broken(ex__7) =~ br__9
#                    __makeList.run(&b)
#                } =~ [&b]
#                &b
#            } catch _ {
#                null
#            }

# value: <& <ref broken by problem: right side skipped>>


-- 
Text by me above is hereby placed in the public domain

     Cheers,
     --MarkM



More information about the e-lang mailing list