module TheatreDev.ExtrasFor.List where

import TheatreDev.Prelude

splitWhileJust :: [Maybe a] -> ([a], [Maybe a])
splitWhileJust = go []
  where
    go !acc = \case
      head : tail -> case head of
        Nothing -> (reverse acc, head : tail)
        Just liveHead -> go (liveHead : acc) tail
      [] -> (reverse acc, [])