;; ;; Base.egi ;; (define $Something (type {[$var-match (lambda [$tgt] {tgt})]})) (define $Bool (type {[$var-match (lambda [$tgt] {tgt})] [$inductive-match (destructor {[ [] {[ {[]}] [#t {[]}] [_ {}]}] [ [] {[ {[]}] [#f {[]}] [_ {}]}]})]})) (define $or (lambda [$b1 $b2] (match b1 Bool {[ #t] [ b2]}))) (define $and (lambda [$b1 $b2] (match b1 Bool {[ b2] [ #f]}))) (define $not (lambda [$b] (match b Bool {[ #f] [ #t]}))) (define $Char (type {[$var-match (lambda [$tgt] {tgt})] [$inductive-match (destructor {[,$c [] {[$tgt (if (= tgt c) {[]} {})]}]})] [$= eq-c?]})) (define $String (type {[$var-match (lambda [$tgt] {tgt})] [$= eq-s?]})) (define $Order (type {[$var-match (lambda [$tgt] {tgt})] [$inductive-match (destructor {[ [] {[ {[]}] [_ {}]}] [ [] {[ {[]}] [_ {}]}] [ [] {[ {[]}] [_ {}]}]})]}))