by shigemk2

当面は技術的なことしか書かない

pureなど

Prelude Control.Applicative> :i Applicative 
class Functor f => Applicative f where
  pure :: a -> f a
  (<*>) :: f (a -> b) -> f a -> f b
  (*>) :: f a -> f b -> f b
  (<*) :: f a -> f b -> f a
        -- Defined in `Control.Applicative'
instance Applicative [] -- Defined in `Control.Applicative'
instance Applicative ZipList -- Defined in `Control.Applicative'
instance Monad m => Applicative (WrappedMonad m)
  -- Defined in `Control.Applicative'
instance Applicative Maybe -- Defined in `Control.Applicative'
instance Applicative IO -- Defined in `Control.Applicative'
instance Applicative (Either e) -- Defined in `Control.Applicative'
instance Applicative ((->) a) -- Defined in `Control.Applicative'

www.geocities.jp

pure の働きは「引数を文脈に入れて返す」と考えることができます。このことを「値を持ち上げる」といいます。

こんな感じみたいですね。

Prelude Control.Applicative> pure 1
1
Prelude Control.Applicative> pure 1 :: Maybe Int
Just 1
Prelude Control.Applicative> pure 1 :: [Int]
[1]