Пример #1
0
    return MAL_PRINT(MAL_EVAL(READ($str), $repl_env));
}
$repl_env->set(_symbol('+'), function ($a, $b) {
    return intval($a + $b, 10);
});
$repl_env->set(_symbol('-'), function ($a, $b) {
    return intval($a - $b, 10);
});
$repl_env->set(_symbol('*'), function ($a, $b) {
    return intval($a * $b, 10);
});
$repl_env->set(_symbol('/'), function ($a, $b) {
    return intval($a / $b, 10);
});
// repl loop
do {
    try {
        $line = mal_readline("user> ");
        if ($line === NULL) {
            break;
        }
        if ($line !== "") {
            print rep($line) . "\n";
        }
    } catch (BlankException $e) {
        continue;
    } catch (Exception $e) {
        echo "Error: " . $e->getMessage() . "\n";
        echo $e->getTraceAsString() . "\n";
    }
} while (true);
Пример #2
0
}, 'keyword' => function () {
    return call_user_func_array('_keyword', func_get_args());
}, 'keyword?' => function ($a) {
    return _keyword_Q($a);
}, 'string?' => function ($a) {
    return _string_Q($a);
}, 'pr-str' => function () {
    return call_user_func_array('pr_str', func_get_args());
}, 'str' => function () {
    return call_user_func_array('str', func_get_args());
}, 'prn' => function () {
    return call_user_func_array('prn', func_get_args());
}, 'println' => function () {
    return call_user_func_array('println', func_get_args());
}, 'readline' => function ($a) {
    return mal_readline($a);
}, 'read-string' => function ($a) {
    return read_str($a);
}, 'slurp' => function ($a) {
    return file_get_contents($a);
}, '<' => function ($a, $b) {
    return $a < $b;
}, '<=' => function ($a, $b) {
    return $a <= $b;
}, '>' => function ($a, $b) {
    return $a > $b;
}, '>=' => function ($a, $b) {
    return $a >= $b;
}, '+' => function ($a, $b) {
    return intval($a + $b, 10);
}, '-' => function ($a, $b) {