Согласно Руководству пользователя LFE , в квалификаторе понимания списка охранник должен предшествовать выражению списка:
(<- pat {{guard}} list-expr) </p>
Это означает, что ваш пример должен быть записан следующим образом:
lfe> (set xs '(1 2 3 4 5 6 7 8))
(1 2 3 4 5 6 7 8)
lfe> (lc ((<- x (when (> x 5)) xs)) x)
(6 7 8)
В качестве альтернативы вы можете рассматривать выражение больше, чем обычный квалификатор логического выражения:
lfe> (lc ((<- x xs) (> x 5)) x)
(6 7 8)