Если это одна из ваших функций добавить метаданные для отметки, если они имеют побочные эффекты.
Затем вы можете проверить это с помощью ((meta f) :side-effects)
Если это сторонняя функция , я не знаю ни одного способа (кроме изменения их кода для использования решения, описанного выше).
На самом деле, есть даже тогда, но это не такхорошенький.Вы можете обернуть функцию своей собственной, которая имеет метаданные.
Кроме того, имейте в виду, что у чистой функции есть еще одно свойство помимо отсутствия побочных эффектов.Его оценка зависит только от его параметров, а не от некоторого глобального общего состояния, такого как внешняя переменная или системное время.Возможно, вы захотите добавить это и к своим метаданным.Затем вы можете проверить, является ли он действительно чистым, проверив обе записи метаданных.
Однако имейте в виду:
Это просто не будет работать для функций, которые принимают другиефункционирует как параметры.Вот пример: есть ли у звонка map
побочные эффекты?
Здесь его нет: (map inc [1 2 3])
Но здесь есть: (map println [1 2 3])
Посколькупереданная функция может иметь или не иметь побочные эффекты.