Beispiel #1
0
function group_by_column($groups, $columns)
{
    $return = array();
    $line = array();
    $total = 0;
    foreach ($groups as $k => $v) {
        $c = count($v);
        $line[] = array($k, $c);
        $total += $c;
    }
    $optimal = floor($total / $columns);
    $col = 1;
    $col_sum = array();
    foreach ($line as $v) {
        $return[$col][car($v)] = $groups[car($v)];
        if (isset($col_sum[$col])) {
            $col_sum[$col] += cdr($v);
        } else {
            $col_sum[$col] = cdr($v);
        }
        if ($col_sum[$col] >= $optimal and $col != $columns) {
            $col++;
        }
    }
    return $return;
}
Beispiel #2
0
function mul_list($list, $total = null)
{
    if (!car($list)) {
        return $total;
    }
    $total = is_null($total) ? car($list) : $total * car($list);
    return mul_list(cdr($list), $total);
}
Beispiel #3
0
function accumulate($list, $func, $acc)
{
    $iter = function ($list, $acc) use(&$iter, $func) {
        if ($list == null) {
            return $acc;
        }
        return $iter(cdr($list), $func(car($list), $acc));
    };
    return $iter($list, $acc);
}
Beispiel #4
0
function filter($list, $func)
{
    $iter = function ($list, $acc) use(&$iter, $func) {
        if ($list === null) {
            return reverse($acc);
        }
        $newAcc = $func(car($list)) ? cons(car($list), $acc) : $acc;
        return $iter(cdr($list), $newAcc);
    };
    return $iter($list, null);
}
Beispiel #5
0
function treeMap($list, $func, $acc)
{
    $iter = function ($list, $acc) use(&$iter, $func) {
        if ($list === null) {
            return $acc;
        }
        $element = car($list);
        if (isPair($element)) {
            $newAcc = treeMap($element, $func, $acc);
        } else {
            $newAcc = $func($element, $acc);
        }
        return $iter(cdr($list), $newAcc);
    };
    return $iter($list, $acc);
}
Beispiel #6
0
function occur($a, $lat)
{
    return empty($lat) ? 0 : (eq(car($lat), $a) ? add(1, occur($a, cdr($lat))) : occur($a, cdr($lat)));
}
Beispiel #7
0
	<?

foreach ($data->meta('links') as $v): ?>
	<?

if (!is_array($v)): ?>
	 <li> <?php 
echo nice_link($v);
?>
 </li>
	<?elseif (count($v) == 1): ?>
	 <li> <?php 
echo nice_link(car($v));
?>
 </li>
	<?else: ?>
	 <li> <?php 
echo nice_link(car($v));
?>
 - <?php 
echo cdr($v);
?>
 </li>
	<?endif?>
	<?endforeach?>
	 </ul>
</div>
<?endif?>


Beispiel #8
0
 public function testSecondSetT5()
 {
     $x = aAndB();
     $result = $x(emptyState());
     $this->assertEquals('()', sprintf('%s', cdr(cdr($result))));
 }
Beispiel #9
0
function cddr($value)
{
    return cdr(cdr($value));
}
Beispiel #10
0
function cadr($list)
{
    return car(cdr($list));
}
Beispiel #11
0
 public function testCdrDoesNotCopy()
 {
     $var = cons(1, 2);
     $list = cons($var, $var);
     $this->assertSame($var, cdr($list));
 }
Beispiel #12
0
/**
 * Returns the first element of a list for whose car a procedure returns true
 * or false if no match is found.
 *
 * @param callable $proc  a function that takes one argument and returns a
 *                        boolean
 * @param Cons     $alist an association list of key-value pairs
 */
function assp($proc, $alist)
{
    if (isPair($alist)) {
        $car = car($alist);
        try {
            $x = car($car);
        } catch (\InvalidArgumentException $e) {
            throw new \InvalidArgumentException("improperly formed alist {$alist}");
        }
        if ($proc($x)) {
            return $car;
        } else {
            return assp($proc, cdr($alist));
        }
    } else {
        return false;
    }
}
Beispiel #13
0
function walkStar($v, $s)
{
    $v = walk($v, $s);
    if (isVariable($v)) {
        return $v;
    } elseif (isPair($v)) {
        return cons(walkStar(car($v), $s), walkStar(cdr($v), $s));
    } else {
        return $v;
    }
}
Beispiel #14
0
function evaluate($sexpr, array $env)
{
    $fn = car($sexpr);
    $args = cdr($sexpr);
    return call_user_func_array($env[$fn], $args);
}