module Prelate.Atomic where import Incipit (AtomicState, Member, Sem, atomicGets, atomicModify') import Lens.Micro (Lens', (.~)) import Lens.Micro.Extras (view) atomicSet :: Member (AtomicState s) r => Lens' s a -> a -> Sem r () atomicSet :: forall s (r :: EffectRow) a. Member (AtomicState s) r => Lens' s a -> a -> Sem r () atomicSet Lens' s a l a a = (s -> s) -> Sem r () forall s (r :: EffectRow). Member (AtomicState s) r => (s -> s) -> Sem r () atomicModify' ((a -> Identity a) -> s -> Identity s Lens' s a l ((a -> Identity a) -> s -> Identity s) -> a -> s -> s forall s t a b. ASetter s t a b -> b -> s -> t .~ a a) atomicView :: Member (AtomicState s) r => Lens' s a -> Sem r a atomicView :: forall s (r :: EffectRow) a. Member (AtomicState s) r => Lens' s a -> Sem r a atomicView Lens' s a l = (s -> a) -> Sem r a forall s s' (r :: EffectRow). Member (AtomicState s) r => (s -> s') -> Sem r s' atomicGets (Getting a s a -> s -> a forall a s. Getting a s a -> s -> a view Getting a s a Lens' s a l)