tryFoldM = TestCase $ do
  let expected = "olleh" :: String
  let mFold a b = pure (b : a)
  resulted <- foldlM mFold "" "hello"

  -- $ foldl (flip (:)) [] "hello"
  -- > "olleh"
  assertEqual "reverses the string" expected resulted
tryFoldM = TestCase $ do
  let expected = "olleh" :: String
  let mFold a b = pure (b : a)
  resulted <- foldlM mFold "" "hello"

  -- $ foldl (flip (:)) [] "hello"
  -- > "olleh"
  assertEqual "reverses the string" expected resulted
tryFoldM = TestCase $ do
  let expected = "olleh" :: String
  let mFold a b = pure (b : a)
  resulted <- foldlM mFold "" "hello"

  -- $ foldl (flip (:)) [] "hello"
  -- > "olleh"
  assertEqual "reverses the string" expected resulted