:: Int -> [a] -> [a] package:utility-ht

dropRev n is like reverse . drop n . reverse but it is lazy enough to work for infinite lists, too.
\n xs -> dropRev n (xs::String) == reverse (drop n (reverse xs))
takeRev n is like reverse . take n . reverse but it is lazy enough to work for infinite lists, too.
\n xs -> takeRev n (xs::String) == reverse (take n (reverse xs))
keep every k-th value from the list
>>> sieve 6 ['a'..'z']
"agmsy"
rotate left