The following functions should exist in Polysemy.IdempotentLowering:
fixedNat
:: forall m n base
. Applicative base
=> ((forall x. m x -> n x) -> (forall x. m x -> n x))
-> base (forall x. m x -> n x)
fixedNat f =
let x :: (forall x. m x -> n x)
x = f x
in nat x
fixedNat'
:: forall m n f base
. Applicative base
=> ((forall x. m x -> n (f x)) -> (forall x. m x -> n (f x)))
-> base (forall x. m x -> n (f x))
fixedNat' f =
let x :: (forall x. m x -> n (f x))
x = f x
in nat' x
What's going on with these? They are like nat but for higher-order interpreters that need access to themselves! Usage:
The following functions should exist in
Polysemy.IdempotentLowering
:What's going on with these? They are like
nat
but for higher-order interpreters that need access to themselves! Usage: