   (= 4 (? (% (? apply ? chi [2]) a) 2))
 
   ;; swap var
+  (= (% (? psi b c) b c)
+     (% (? + b c) b c))
   (= (?% (? + a b) a b)
      (? + b b))
 

(ns ysmiraak.lang)

;; goals
;; 1. unify exprs and types (basic constructors shared by types and data)
;; 2. unify composition and application (????)
;; 3. compositional lambda calculus (variables and their evaluation rules)
;; 4. asap beta reduction (partial evaluation)

(defrecord V [name])            (defn v? [x] (instance? V x))
(defrecord A [vars form])       (defn a? [x] (instance? A x))

  ;; todo test recursion

  )
