>>> "SIGOURE" == SIGOURE Benoit <sigoure.benoit(a)lrde.epita.fr> writes:
I don't think you need these two:
> + EvalIf:
> + |[ d ? e1 : e2 ]| -> |[ e1 ]|
> + where <not(compare(real-eq))>(d, 0)
> +
> + EvalIf:
> + |[ d ? e1 : e2 ]| -> |[ e2 ]|
> + where <compare(real-eq)>(d, 0)
> +
Since
> + LitToBool:
> + |[ d ]| -> |[ false ]|
> + where <compare(real-eq)>(d, 0)
> +
> + LitToBool:
> + |[ d ]| -> |[ true ]|
> + where <not(compare(real-eq))>(d, 0)
and
> ?MetaIf(condition, then-part, else-part)
> ///*DEBUG*/; say(!" @@@ eval-meta-if: starting:")
> ///*DEBUG*/; printf(|" condition = ", condition)
> - ; where(<prism-desugar> condition => condition-value)
> + ; where(<prism-desugar> condition
> + ; try(LitToBool) => condition-value)
> ///*DEBUG*/; printf(|" condition-value = ", condition-value)
> ; if !condition-value => True() then
> <eval-meta-code> then-part