Hello, Why is the following not an arrow? newtype ListMap i o = LM ([i] -> [o] instance Arrow ListMap where pure f = LM (map f) LM f >>> LM g = LM (g . f) first (LM f) = LM ((uncurry zip) . (cross f id) . unzip) thanks, Jeff