>>> liftA2 (,) (Just 3) (Just 5) Just (3,5)
do a <- as b <- bs pure (f a b)
liftM2 (+) [0,1] [0,2] = [0,2,1,3] liftM2 (+) (Just 1) Nothing = Nothing
>>> import Data.Vector.Fixed.Boxed (Vec3) >>> let b0 = basis 0 :: Vec3 Int >>> let b1 = basis 1 :: Vec3 Int >>> let b2 = basis 2 :: Vec3 Int >>> let vplus x y = zipWith (+) x y >>> vplus b0 b1 fromList [1,1,0] >>> vplus b0 b2 fromList [1,0,1] >>> vplus b1 b2 fromList [0,1,1]