mutable_ :: Exp t -> Action (Exp t)
mutable_ x = do
    v <- var
    let v2 = return $ Value $ val v
    v2 @= x
    return v2


-- | Create a constant with a name, ensuring the expression is shared.
--   After defining the expression, you can refer to it with @$NAME@ in a 'String'.
--   To introduce a new scope, see 'scope'.
--
-- @
-- 'constant' \"HELLO\" \"Hello World\"
-- 'alert' \"$HELLO!\"
-- @
mutable_ :: Exp t -> Action (Exp t)
mutable_ x = do
    v <- var
    let v2 = return $ Value $ val v
    v2 @= x
    return v2


-- | Create a constant with a name, ensuring the expression is shared.
--   After defining the expression, you can refer to it with @$NAME@ in a 'String'.
--   To introduce a new scope, see 'scope'.
--
-- @
-- 'constant' \"HELLO\" \"Hello World\"
-- 'alert' \"$HELLO!\"
-- @
mutable_ x = do
    v <- var
    let v2 = return $ Value $ val v
    v2 @= x
    return v2


-- | Create a constant with a name, ensuring the expression is shared.
--   After defining the expression, you can refer to it with @$NAME@ in a 'String'.
--   To introduce a new scope, see 'scope'.
--
-- @
-- 'constant' \"HELLO\" \"Hello World\"
-- 'alert' \"$HELLO!\"
-- @