此示例代码在不太长的输入上会抛出内存不足错误,并且似乎在那时会以指数速度变慢。如果不是错误,它可以是测试套件的一个有用例子。
`
(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
`
由 Clojurians Slack 上的用户 @petrus 提供,由 Max Penet 减少重复率。