lifted list catenation

This commit is contained in:
William Rusnack 2024-08-14 11:02:22 -04:00
parent 2a4bbea694
commit 5d96b1919e

View File

@ -11,6 +11,7 @@
module Fcf.Data.List
( -- * Basic functions
type (++)
, type (^++^)
, Head
, Last
, Tail
@ -105,6 +106,9 @@ import Fcf.Utils (If, TyEq)
data (++) :: [a] -> [a] -> Exp [a]
type instance Eval ((++) xs ys) = xs <> ys
infixr 5 ^++^
data (^++^) :: Exp [a] -> Exp [a] -> Exp [a]
type instance Eval ((^++^) xs ys) = Eval (LiftM2 (++) xs ys)
data Head :: [a] -> Exp (Maybe a)
type instance Eval (Head '[]) = 'Nothing