peek :: Elt a => Exp Int -> Exp a
-- RRN: Shouldn't the type be:
--  peek :: (Elt a, Elt b) => Exp Int -> Filter a b (Exp b)
peek = PeekExp
peek :: Elt a => Exp Int -> Exp a
peek = PeekExp
peek = PeekExp