#!/usr/bin/5D -p OPLs/Math.5D let Composition := requireModule "Composition" in Composition.withInterface1 filename let List := requireModule "List" in let Logic := requireModule "Logic" in import [rem ($)] from Composition in import [(if) (else) (elif) not] from Logic in import [nil nil?] from List in rem "accessor for 'just part" rem "TODO check whether it's actually not nothing." let nothing := nil in let nothing? := nil? in let some := \m m in let something? := \m (not (nothing? m)) in let (?;) := (\m \f if (something? m) f (something m) else nothing ) in let makeSomething := (\v v ) in (#exports [some something? nothing nothing? (?;)]) Just = \x