share :: Exp t -> (Exp t -> Action a) -> Action a
share v act = do v <- constant_ v; act v


-- | Versions of 'mutable' and 'constant' restricted to 'Exp' 'Int', used to avoid
--   ambiguous type errors.
share :: Exp t -> (Exp t -> Action a) -> Action a
share v act = do v <- constant_ v; act v


-- | Versions of 'mutable' and 'constant' restricted to 'Exp' 'Int', used to avoid
--   ambiguous type errors.
share v act = do v <- constant_ v; act v


-- | Versions of 'mutable' and 'constant' restricted to 'Exp' 'Int', used to avoid
--   ambiguous type errors.