Maybe use at `partition` or `span` instead of `takeWhile`+`drop`.