Idris2/tests/idris2/docs004/List.idr

18 lines
262 B
Idris

module List
data List a = Nil | (::) a (List a)
infixr 5 ::
infixr 5 ++
interface Monoid ty where
neutral : ty
(++) : ty -> ty -> ty
Monoid (List a) where
neutral = []
xs ++ ys = case xs of
[] => ys
(x :: xs) => let ih = xs ++ ys in x :: ih