{-# LANGUAGE Safe #-} -- | -- -- Module : Data.Functor -- Copyright : (c) The University of Glasgow 2001 -- License : BSD-style (see the file libraries/base/LICENSE) -- -- Maintainer : libraries@haskell.org -- Stability : provisional -- Portability : portable -- -- -- A type @f@ is a Functor if it provides a function @fmap@ which, given any types @a@ and @b@, -- lets you apply any function of type @(a -> b)@ to turn an @f a@ into an @f b@, preserving the -- structure of @f@. -- -- ==== __Examples__ -- -- >>> fmap show (Just 1) -- (a -> b) -> f a -> f b -- Just "1" -- (Int -> String) -> Maybe Int -> Maybe String -- -- >>> fmap show Nothing -- (a -> b) -> f a -> f b -- Nothing -- (Int -> String) -> Maybe Int -> Maybe String -- -- >>> fmap show [1,2,3] -- (a -> b) -> f a -> f b -- ["1","2","3"] -- (Int -> String) -> [Int] -> [String] -- -- >>> fmap show [] -- (a -> b) -> f a -> f b -- [] -- (Int -> String) -> [Int] -> [String] -- -- The 'fmap' function is also available as the infix operator '<$>': -- -- >>> fmap show (Just 1) -- (Int -> String) -> Maybe Int -> Maybe String -- Just "1" -- -- >>> show <$> (Just 1) -- (Int -> String) -> Maybe Int -> Maybe String -- Just "1" module Data.Functor (Functor(..), ($>), (<$>), (<&>), unzip, void ) where import GHC.Internal.Data.Functor