optics-core-0.1: src/Data/Maybe/Optics.hs
-- |
-- Module: Data.Maybe.Optics
-- Description: 'Prism's for the 'Maybe' datatype.
--
-- This module defines 'Prism's for the constructors of the 'Maybe' datatype.
module Data.Maybe.Optics
( _Nothing
, _Just
)
where
import Optics.Prism
-- | A 'Prism' that matches on the 'Nothing' constructor of 'Maybe'.
_Nothing :: Prism' (Maybe a) ()
_Nothing =
prism
(\ () -> Nothing)
(\ x ->
case x of
Nothing -> Right ()
Just y -> Left (Just y)
)
{-# INLINE _Nothing #-}
-- | A 'Prism' that matches on the 'Just' constructor of 'Maybe'.
_Just :: Prism (Maybe a) (Maybe b) a b
_Just =
prism
Just
(\ x ->
case x of
Nothing -> Left Nothing
Just y -> Right y
)
{-# INLINE _Just #-}