Example #1
0
File: core.php Project: mdkarch/mal
    return $atm->value = $val;
}
function swap_BANG($atm, $f)
{
    $args = array_slice(func_get_args(), 2);
    array_unshift($args, $atm->value);
    $atm->value = call_user_func_array($f, $args);
    return $atm->value;
}
// core_ns is namespace of type functions
$core_ns = array('=' => function ($a, $b) {
    return _equal_Q($a, $b);
}, 'throw' => function ($a) {
    return mal_throw($a);
}, 'nil?' => function ($a) {
    return _nil_Q($a);
}, 'true?' => function ($a) {
    return _true_Q($a);
}, 'false?' => function ($a) {
    return _false_Q($a);
}, 'symbol' => function () {
    return call_user_func_array('_symbol', func_get_args());
}, 'symbol?' => function ($a) {
    return _symbol_Q($a);
}, '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 () {
Example #2
0
function seq($src)
{
    if (_list_Q($src)) {
        if (count($src) == 0) {
            return NULL;
        }
        return $src;
    } elseif (_vector_Q($src)) {
        if (count($src) == 0) {
            return NULL;
        }
        $tmp = $src->getArrayCopy();
        $s = new ListClass();
        $s->exchangeArray($tmp);
        return $s;
    } elseif (_string_Q($src)) {
        if (strlen($src) == 0) {
            return NULL;
        }
        $tmp = str_split($src);
        $s = new ListClass();
        $s->exchangeArray($tmp);
        return $s;
    } elseif (_nil_Q($src)) {
        return NULL;
    } else {
        throw new Exception("seq: called on non-sequence");
    }
    return $s;
}