Tengo un poco de computación que es algo costosa (comenzar una base de datos), y solo quiero crear la base de datos si realmente voy a usarla. Estoy buscando una variable de referencia (o simplemente una variable simple, si es posible) que solo evaluaría su valor en caso de que se use (o se elimine la referencia). Algo conceptualmente como el siguiente.¿Existen variables diferidas en Clojure?
(def v (lazy-var (fn [] (do (println "REALLY EXPENSIVE FUNCTION") true))))
y en el futuro, cuando sea sólo tiene que utilizar var v, o llame @v, que luego conseguirlo para imprimir "FUNCIÓN muy caro", y desde el mismo v tiene un valor de verdad. Lo importante aquí es que el fn no se evaluó hasta que la variable fue (de) referenciada. Cuando sea necesario, la función se evalúa una sola vez para calcular el valor de la variable. ¿Es esto posible en Clojure?
caray, ¿por qué no pensé en esa palabra al tratar de buscar esto? –