Plan 9 from Bell Labs’s /usr/web/sources/contrib/fernan/nhc98/src/prelude/PreludeList/Span.hs
module Prelude where span :: (a -> Bool) -> [a] -> ([a], [a]) span p [] = ([], []) span p xs@(x:xs') | p x = let (ys, zs) = span p xs' in (x:ys, zs) | otherwise = ([], xs)