filter and distinct always return an array, regardless of input:
repl:3:> (distinct @[1 2 3 0 -4 2 3])
@[1 2 3 0 -4]
repl:4:> (filter pos? [1 2 3 0 -4 2 3])
@[1 2 3 2 3]
repl:10:> (distinct "bookkeeper")
@[98 111 107 101 112 114]
whereas drop-while and drop-until return either a tuple or string
repl:2:> (drop-until |(< $ 65) "foo123bar")
"123bar"
repl:3:> (drop-while pos? @[1 2 3 0 -4 2 3])
(0 -4 2 3)
seems like drop-while and drop-until should at least return an array when given an array.