ответ

1

Возможно только чтение источника из Vars, которые находятся на диске.

Итак, если вы оценили буфер, он загружается в REPL, и вы не можете просмотреть источник с помощью source.

Один из способов сделать чтение источника путем размещения в другом файле (например, /my_other_clj_file.clj):

(ns my-other-clj-file) 

(defn my-fn 
    [] 
    1) 

Не оценивать буфер.

Затем перейдите к /tests/my_clj_file.clj и оценить:

(ns tests.my-clj-file 
    (:require [clojure.repl :as repl] 
      [other-file :refer [my-fn])) 

(println (repl/source my-fn)) 

Это правильно напечатать источник.

(defn мой-ф
    []
    1)
ноль

0

Если вы пытаетесь (doc repl/source), вы получите что-то вроде этого (курсив добавлен):

Печатает исходный код данного символа, если он может найти его. Для этого требуется, чтобы символ был разрешен к Var, определенному в пространстве имен , для которого .clj находится в пути к классам.

So clojure.repl/source работает только с кодом, загруженным из исходных файлов. Он не будет работать, если вы введете код в REPL (независимо от того, находится ли код в файле).