@@ -306,19 +306,7 @@ runStream (Stream step state) = go SPEC state
306306
307307{-# INLINE_NORMAL last #-}
308308last :: Monad m => Stream m a -> m (Maybe a)
309−last (Stream step state) = go0 SPEC state
310− where
311− go0 !_ st = do
312− r <- step st
313− case r of
314− Yield x s -> go1 SPEC x s
315− Stop -> return Nothing
316−
317− go1 !_ x st = do
318− r <- step st
319− case r of
320− Yield y s -> go1 SPEC y s
321− Stop -> return (Just x)
309+last = foldl' (\_ y -> Just y) Nothing
322310
323311------------------------------------------------------------------------------
324312-- Map and Fold