Open
Description
I believe that because set comparison tries to match all permutations, it is taking an impracticable time (with 10 items it took 17 minutes 😅) to test bigger sets.
Here is a test that I wrote to check that:
(reduce
(fn [acc i]
(let [result (conj acc i)
expected (conj result (inc i))]
(println (time (fact ""
result
=> (match expected))))
(println (str "set size: " (count result)))
result))
#{} (range 10))
This was the result (just removed some noise like the facts results):
"Elapsed time: 4.773552 msecs"
set size: 1
"Elapsed time: 5.979492 msecs"
set size: 2
"Elapsed time: 3.775644 msecs"
set size: 3
"Elapsed time: 5.138717 msecs"
set size: 4
"Elapsed time: 16.466419 msecs"
set size: 5
"Elapsed time: 95.003742 msecs"
set size: 6
"Elapsed time: 674.578195 msecs"
set size: 7
"Elapsed time: 6921.199258 msecs"
set size: 8
"Elapsed time: 79986.038842 msecs"
set size: 9
"Elapsed time: 1036299.751686 msecs"
set size: 10