{-# LANGUAGE LinearTypes #-} {-# LANGUAGE NoImplicitPrelude #-} -- | = The data functor hierarchy -- -- This module defines the data functor library. Unlike in the case of -- non-linear, unrestricted, functors, there is a split between data functors, -- which represent containers, and control functors which represent effects. -- Please read this -- [blog post](https://www.tweag.io/posts/2020-01-16-data-vs-control.html). -- For more details, see "Control.Functor.Linear". -- -- * Linear data functors should be thought of as containers of data. -- * Linear data applicative functors should be thought of as containers -- that can be zipped. -- * Linear data traversible functors should be thought of as -- containers which store a finite number of values. -- module Data.Functor.Linear ( -- * Data Functor Hierarchy Functor(..) , (<$>) , (<$) , void , Applicative(..) , Const(..) -- * Linear traversable hierarchy , Traversable(..) , mapM, sequenceA, for, forM , mapAccumL, mapAccumR ) where import Data.Functor.Linear.Internal.Functor import Data.Functor.Linear.Internal.Applicative import Data.Functor.Linear.Internal.Traversable import Data.Functor.Const