shithub: MicroHs

ref: c101325aaf8ed0ec3c8c4ff4b7d425bba799825a
dir: /lib/Data/Functor.hs/

View raw version
module Data.Functor(
  Functor(..),
  ($>),
  (<$>),
  (<&>),
  unzip,
  void,
  ) where
import Prelude()              -- do not import Prelude
import Primitives  -- for fixity
import Data.Function

class Functor f where
  fmap :: forall a b . (a -> b) -> f a -> f b
  (<$) :: forall a b . a -> f b -> f a
  (<$) =  fmap . const

infixl 4 <$>
(<$>) :: forall f a b . Functor f => (a -> b) -> f a -> f b
(<$>) = fmap

infixl 1 <&>
(<&>) :: Functor f => f a -> (a -> b) -> f b
(<&>) = flip (<$>)

infixl 4 $>
($>) :: Functor f => f a -> b -> f b
($>) = flip (<$)

unzip :: Functor f => f (a, b) -> (f a, f b)
unzip xs = ( (\(a,_)->a) <$> xs,
             (\(_,b)->b) <$> xs )

void :: forall f a . Functor f => f a -> f ()
void = fmap (const ())