False and: _ = False True and: (b: Block) := b call True or: _ = True False or: (b: Block) := b call macro a && b := `(~a and: { ~b }) macro a || b := `(~a or: { ~b }) True not := False False not := True if: True then: (a: Block) else: Block := a call if: False then: Block else: (b: Block) := b call when: False do: Block = @ok when: True do: (action: Block) := { action in-context call @ok } call while: (test: Block) do: (action: Block) := when: test call do: { action in-context call while: test do: action } True show := "True" False show := "False" otherwise := True macro condition: (bs: Block) := { ps = bs contents map: { pair | [c, e] = pair targets c -> e } ps reduce-right: { pair x | `(if: ~(pair from) then: { ~(pair to) } else: { ~x }) } with: `(raise: @no-true-branches) } call