<?php namespace eMacros\Runtime\Arithmetic;
use eMacros\Runtime\GenericFunction;
class Subtraction extends GenericFunction { /** * Obtains the result of subtracting the first element on a list by the rest of the elements. * Usage: (- 120 30 50) * Returns: number * (non-PHPdoc) * @see \eMacros\Runtime\GenericFunction::execute() */ public function execute(array $arguments) { if (empty($arguments)) { throw new \InvalidArgumentException("Subtraction: At least 1 argument is required"); } //emulate CLISP: (- 3) = -3 if (!isset($arguments[1])) { return -$arguments[0]; } //obtain first argument $result = array_shift($arguments); foreach ($arguments as $value) { $result -= $value; }
return $result; } }
|