true
(if (= 1 (count xs))
(first xs)
- `(let* (and_FIXME ~(first xs))
- (if and_FIXME (and ~@(rest xs)) and_FIXME))))))
+ (let* (condvar (gensym))
+ `(let* (~condvar ~(first xs))
+ (if ~condvar (and ~@(rest xs)) ~condvar)))))))
(defmacro! or
(fn* (& xs)
nil
(if (= 1 (count xs))
(first xs)
- `(let* (or_FIXME ~(first xs))
- (if or_FIXME or_FIXME (or ~@(rest xs))))))))
+ (let* (condvar (gensym))
+ `(let* (~condvar ~(first xs))
+ (if ~condvar ~condvar (or ~@(rest xs)))))))))
(defmacro! cond
(fn* (& clauses)
(list form x))
`(->> (->> ~x ~form) ~@more))))))
-(if (= "make" *host-language*)
- (defmacro! time
- (fn* (exp)
- `(let* [start_FIXME (time-secs)
- ret_FIXME ~exp]
- (do
- (prn (str "Elapsed time: " (- (time-secs) start_FIXME) "000 msecs"))
- ret_FIXME))))
- (defmacro! time
- (fn* (exp)
- `(let* [start_FIXME (time-ms)
- ret_FIXME ~exp]
- (do
- (prn (str "Elapsed time: " (- (time-ms) start_FIXME) " msecs"))
- ret_FIXME)))))