\n xs -> dropRev n (xs::String) == reverse (drop n (reverse xs))
\n xs -> takeRev n (xs::String) == reverse (take n (reverse xs))
>>> sieve 6 ['a'..'z'] "agmsy"