 (defn oi-number [n]
   {:type  :number
    :value n
-   :slots {"<" (fn [{:keys [value]}]
-                 (oi-boolean (< n value)))}
+   :slots {"<" (fn [param]
+                 (println n "<" param)
+                 (oi-boolean (< n (:value param))))}
    :proto initial})
 
 (defn oi-string [s]

  ([name args]
   {:type  :message
    :value name
    :slots {:args args}
    :proto initial}))

(defn oi-send [target msg]

    {:type :number :value n} {:env env :result n}
    {:type :string :value s} {:env env :result (str \" s \")}
    {:type :boolean :value b} {:env env :result b}
    {:type :send :slots {:target target :message {:type :message :value slot-name :slots {:args args}}}}
    (do
      (println "send" target slot-name args)
      (activate target (lookup-slot target slot-name) args))
    {:type :send :slots {:target target :message {:type :message :value slot-name}}}
    (do
      (println "send-without-args" target slot-name)
      (activate target (lookup-slot target slot-name) []))
    {:type :message :value slot-name :slots {:args args}}
    (do
      (println "message" slot-name args)
      (activate env (lookup-slot env slot-name) args))
    {:type :message :value slot-name}
    (do
      (println "message-without-args" slot-name)
      (activate env (lookup-slot env slot-name) []))))

(defn eval*
  ([env exprs] (:result (reduce eval {:env env :result nil} exprs)))
