edit-lenses-0.1: Data/Module/Primitive.hs
{-# LANGUAGE GeneralizedNewtypeDeriving, TypeFamilies #-}
module Data.Module.Primitive where
import Data.Default
import Data.Module.Class
import Data.Monoid
newtype Unit x = Unit () deriving Monoid
instance Default x => Module (Unit x) where
type V (Unit x) = x
apply _ = Just
instance Default x => Module (First x) where
type V (First x) = x
apply (First Nothing ) x = Just x
apply (First (Just x')) x = Just x'