x = '0'
function start ()
return function () end
end
function set_x (v)
x = v
return function () end
end
function if_x (v)
if x == v then
print ("x = ", v)
return function (block) block[1]() end
else
print ("x != ", v)
return function () end
end
end
-- DSL here
start {
set_x '10',
if_x '10' { function() print ('x is 10') end },
if_x '20' { function() print ('x is 20') end }
}
eCA9ICcwJwpmdW5jdGlvbiBzdGFydCAoKQogICAgcmV0dXJuIGZ1bmN0aW9uICgpIGVuZAplbmQKCmZ1bmN0aW9uIHNldF94ICh2KQogICAgeCA9IHYKICAgIHJldHVybiBmdW5jdGlvbiAoKSBlbmQKZW5kCgpmdW5jdGlvbiBpZl94ICh2KQogICAgaWYgeCA9PSB2IHRoZW4KICAgICAgICBwcmludCAoInggPSAiLCB2KQogICAgICAgIHJldHVybiBmdW5jdGlvbiAoYmxvY2spIGJsb2NrWzFdKCkgZW5kCiAgICBlbHNlCiAgICAgICAgcHJpbnQgKCJ4ICE9ICIsIHYpCiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIGVuZAogICAgZW5kIAplbmQKCi0tIERTTCBoZXJlCnN0YXJ0IHsKICAgIHNldF94ICcxMCcsCiAgICBpZl94ICcxMCcgeyBmdW5jdGlvbigpIHByaW50ICgneCBpcyAxMCcpIGVuZCB9LAogICAgaWZfeCAnMjAnIHsgZnVuY3Rpb24oKSBwcmludCAoJ3ggaXMgMjAnKSBlbmQgfQp9