Это может быть глупый вопрос, но:
Предположим, что выражение зависит только от литералов или от других выражений, которые также зависят только от литералов;будет ли компилятор оценивать это во время компиляции?
Предположим, у меня есть,
(def a (some-time-consuming-function some-literal))
(def b (some-other-time-consuming-function a))
Будут ли оба b и a полностью оцениваться во время компиляции, чтобы на пользователя не влияли?
РЕДАКТИРОВАТЬ: Большое спасибо, все ответы были очень полезны.
РЕДАКТИРОВАТЬ 6.6.2011: Оказывается, что если вы попытаетесь использовать эту технику для предварительного вычисления оченьбольшая структура данных, легко создавать файлы классов, которые слишком велики для загрузки.В этих случаях вы хотите создать файл, который будет читаться, а не файл класса, который будет загружен.Макро трюки, описанные в этих ответах, должны применяться только в том случае, если возвращаемое значение не является чрезмерно большой структурой.
Выдается сообщение об ошибке: "java.lang.ClassFormatError: недопустимый индекс этого класса" эта тема для обсуждения связанной ситуации.