I made two pattern views for a list-like class.
infixr 5 :<
pattern (:<) :: Stream s => Token s -> s -> s
pattern b :< bs <- (uncons -> Just (b, bs))
where b :< bs = cons b bs
pattern Nil :: Stream s => s
pattern Nil <- (uncons -> Nothing)
where Nil = empty
Run Code Online (Sandbox Code Playgroud)
uncons signature: uncons :: (Stream s) => s -> Maybe (Token s, s).
Suppose I also have function that uses …