[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