func permutations(callback, set, perm=[]) {
set || callback(perm)
for i in ^set {
__FUNC__(callback, [
set[^i, i+1 ..^ set.len]
], [perm..., set[i]])
}
return()
permutations({|p| say p }, [0,1,2])