main :: IO ()
main = do
  print $ sequenceA [Just 3, Just 2, Just 1]
  print $ sequenceA [x, y]
  print $ sequenceA [xs, ys]
  print $ summed <$> ((,) <$> xs <*> ys)
  print $ fmap summed ((,) <$> xs <*> zs)
  print $ bolt 7
  print $ fmap bolt z
  print $ sequenceA [(>3), (<8), even] 7

-- sequenceA
-- sequenceA :: (Applicative f, Traversable t) => t (f a) -> f (t a)
-- sequenceA [(>3), (<8), even] 7
-- f ~ (->) a and t ~ []
main :: IO ()
main = do
  print $ sequenceA [Just 3, Just 2, Just 1]
  print $ sequenceA [x, y]
  print $ sequenceA [xs, ys]
  print $ summed <$> ((,) <$> xs <*> ys)
  print $ fmap summed ((,) <$> xs <*> zs)
  print $ bolt 7
  print $ fmap bolt z
  print $ sequenceA [(>3), (<8), even] 7

-- sequenceA
-- sequenceA :: (Applicative f, Traversable t) => t (f a) -> f (t a)
-- sequenceA [(>3), (<8), even] 7
-- f ~ (->) a and t ~ []
main = do
  print $ sequenceA [Just 3, Just 2, Just 1]
  print $ sequenceA [x, y]
  print $ sequenceA [xs, ys]
  print $ summed <$> ((,) <$> xs <*> ys)
  print $ fmap summed ((,) <$> xs <*> zs)
  print $ bolt 7
  print $ fmap bolt z
  print $ sequenceA [(>3), (<8), even] 7

-- sequenceA
-- sequenceA :: (Applicative f, Traversable t) => t (f a) -> f (t a)
-- sequenceA [(>3), (<8), even] 7
-- f ~ (->) a and t ~ []