Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Category:

acme-kohirnt

Колонка аппликатива в таблице оказывается лишней: единственная операция *> эквивалентна >>. То есть, можно (в альтернативной прелюде) всё переименовать: (Monad.>>) выкинуть, а *> переименовать для единообразия в >>.

Тогда получаем единообразную матрицу 3х3 (две матрицы, если считать флипнутую версию с <=| и т.п.):

module Acme.Kohirnt(
-- |..    >..    $..
  (|=>), (>=>), ($=>), -- .=>
  (|>=), (>>=), ($>=), -- .>=
  (|>),  (>>),  ($>),  -- .>
) where

import Prelude hiding ((>>))
import Control.Monad ((>=>))
import Data.Functor (($>))
import Control.Category ((>>>))
import Data.Function ((&))

(|>) :: a -> b -> b
(|>) = flip const

(|=>) :: (a -> b) -> (b -> c) -> a -> c
(|=>) = (>>>)

(|>=) :: a -> (a -> b) -> b
(|>=) = (&)

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

($=>) :: Functor f => (a -> b) -> (b -> c) -> f a -> f c
g $=> f =  ($>=) (g $=> f)   -- fmap (g >>> f)

(>>) :: Applicative f => f a -> f b -> f b
(>>) = (*>)
Tags: fp, programming, юмор
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments