atl-15321.1: Control/Arrow/Reader/Class.hs
{-# LANGUAGE FunctionalDependencies #-}
module Control.Arrow.Reader.Class where
import Control.Arrow;
import Control.Arrow.Transformer;
class Arrow s => ArrowReader r s | s -> r where {
ask :: s () r;
local :: (r -> r) -> s a b -> s a b;
};
asks :: (ArrowReader r s) => (r -> a) -> s () a;
asks = asksA . arr;
asksA :: (ArrowReader r s) => s r a -> s () a;
asksA x = ask >>> x;