 (ns parkour.io.dval
+  (:refer-clojure :exclude [eval])
   (:require [clojure.java.io :as io]
             [parkour (fs :as fs) (cser :as cser) (mapreduce :as mr)
              ,       (reducers :as pr)]

(defn dval
  "Return a dval which acts as a delay over applying var `readv` to `args`."
  [readv & args] (apply dval* (delay (apply readv args)) readv args))

(defn ^:private identity-ref
  "Return reference which yields `x` when `deref`ed."


(defn ^:private dval-reader
  "EDN tagged-literal reader for dvals."
  [form]
  (let [value (delay (apply pr/funcall form))]
    (DVal. value form)))

(defn ^:private dval*
  "Return a dval which locally proxies to `valref` and remotely will deserialize
