此示例代码在不太长输入的情况下将引发内存溢出,并且似乎在此时减速呈现指数级增长。如果不是错误,那它对测试套件来说是一个有用的示例。
`
(s/def ::thing
(s/+ (s/alt :x (s/+ (set (range 70))))))
(time (s/conform ::thing (range 10))) ;; 30ms
(time (s/conform ::thing (range 15))) ;; 500ms
(time (s/conform ::thing (range 20))) ;; 24s
`
摘录自用户 @petrus 在 Clojurians Slack 中的内容,由 Max Penet 简化。