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); }
/** * $array[$key][$key2][...]... */ function val() { $arg = func_get_args(); $k = array_shift($arg); if (count($arg) == 1 && is_array(car($arg))) { $arg = car($arg); } foreach ($arg as $key) { $k = $k[$key]; } return $k; }
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); }
</a></li> <? endforeach ?> </ul> </div> <div class='category-links'> Интересные материалы: <ul> <? foreach(unyaml('data/links.yaml') as $v): ?> <li> <? if(is_array($v)): ?> <a href='<?php echo car($v); ?> '><?php echo car($v); ?> </a> <?php echo cdr($v); ?> <? else: ?> <a href='<?php echo $v; ?> '><?php echo $v; ?> </a> <? endif ?> </li> <? endforeach ?>
public function testGroundAppendo2() { $g = groundAppendo(); $h = $g(emptyState()); $result = $h(); $this->assertEquals('(((#(2) . (b)) . ((#(1)) . ((#(0) . a)))) . 3)', sprintf('%s', car($result))); }
function evaluate($sexpr, array $env) { $fn = car($sexpr); $args = cdr($sexpr); return call_user_func_array($env[$fn], $args); }
public function interpret($variables, Jigsaw $jigsaw) { $tmp_variables = $variables; for ($i = 0; $i < $this->_count; $i++) { $tmp_variables[$this->_variables[$i]] = car($jigsaw->interpret($this->_expressions[$i], $tmp_variables)); } return $jigsaw->interpret($this->_sub, $tmp_variables); }
function cadr($list) { return car(cdr($list)); }
public function testCarDoesNotCopy() { $var = cons(1, 2); $list = cons($var, nil()); $this->assertSame($var, car($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 reifyFirst($sC) { $v = walkStar(variable(0), car($sC)); return walkStar($v, reifyS($v, nil())); }
<? 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?>
function leftmost($list) { return is_atom(car($list)) ? car($list) : leftmost(car($list)); }
function cdadr($value) { return cdr(car(cdr($value))); }