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; }
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); }
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); }
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); }
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); }
function occur($a, $lat) { return empty($lat) ? 0 : (eq(car($lat), $a) ? add(1, occur($a, cdr($lat))) : occur($a, cdr($lat))); }
<? 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?>
public function testSecondSetT5() { $x = aAndB(); $result = $x(emptyState()); $this->assertEquals('()', sprintf('%s', cdr(cdr($result)))); }
function cddr($value) { return cdr(cdr($value)); }
function cadr($list) { return car(cdr($list)); }
public function testCdrDoesNotCopy() { $var = cons(1, 2); $list = cons($var, $var); $this->assertSame($var, cdr($list)); }
/** * 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; } }
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; } }
function evaluate($sexpr, array $env) { $fn = car($sexpr); $args = cdr($sexpr); return call_user_func_array($env[$fn], $args); }