예제 #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;
}
예제 #2
0
파일: math.php 프로젝트: emkay/php-phant
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);
}
예제 #3
0
파일: reduce.php 프로젝트: 4johndoe/hexlet
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);
}
예제 #4
0
파일: base.php 프로젝트: 4johndoe/hexlet
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);
}
예제 #5
0
/**
 * $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;
}
예제 #6
0
파일: trees.php 프로젝트: 4johndoe/hexlet
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);
}
예제 #7
0
</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 ?>
예제 #8
0
 public function testGroundAppendo2()
 {
     $g = groundAppendo();
     $h = $g(emptyState());
     $result = $h();
     $this->assertEquals('(((#(2) . (b)) . ((#(1)) . ((#(0) . a)))) . 3)', sprintf('%s', car($result)));
 }
예제 #9
0
파일: basic-eval.php 프로젝트: igorw/ilias
function evaluate($sexpr, array $env)
{
    $fn = car($sexpr);
    $args = cdr($sexpr);
    return call_user_func_array($env[$fn], $args);
}
예제 #10
0
 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);
 }
예제 #11
0
파일: base.php 프로젝트: emkay/php-phant
function cadr($list)
{
    return car(cdr($list));
}
예제 #12
0
 public function testCarDoesNotCopy()
 {
     $var = cons(1, 2);
     $list = cons($var, nil());
     $this->assertSame($var, car($list));
 }
예제 #13
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;
    }
}
예제 #14
0
function reifyFirst($sC)
{
    $v = walkStar(variable(0), car($sC));
    return walkStar($v, reifyS($v, nil()));
}
예제 #15
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?>


예제 #16
0
function leftmost($list)
{
    return is_atom(car($list)) ? car($list) : leftmost(car($list));
}
예제 #17
0
function cdadr($value)
{
    return cdr(car(cdr($value)));
}