diff --git a/src/kiss/Prelude.hx b/src/kiss/Prelude.hx index 57e0d0a..49b6e02 100644 --- a/src/kiss/Prelude.hx +++ b/src/kiss/Prelude.hx @@ -103,6 +103,10 @@ class Prelude { public static var add:Function = makeVarArgsWithArrayCheck(_add, "+"); static function _subtract(values:Array):Dynamic { + // with one argument, just negate: + if (values.length == 1) + return -values[0]; + var difference:Float = values[0]; for (value in values.slice(1)) difference -= value; diff --git a/src/test/cases/BasicTestCase.hx b/src/test/cases/BasicTestCase.hx index 0f17f0f..b6d7aaa 100644 --- a/src/test/cases/BasicTestCase.hx +++ b/src/test/cases/BasicTestCase.hx @@ -72,11 +72,11 @@ class BasicTestCase extends Test { Assert.equals(6, BasicTestCase.mySum); } - function testVariadicSubtract() { - Assert.equals(-2, BasicTestCase.myDifference); + function testSubtraction() { + _testSubtraction(); } - function testVariadicMultiply() { + function testMultiplication() { _testMultiplication(); } diff --git a/src/test/cases/BasicTestCase.kiss b/src/test/cases/BasicTestCase.kiss index 02c955c..e7d49c7 100644 --- a/src/test/cases/BasicTestCase.kiss +++ b/src/test/cases/BasicTestCase.kiss @@ -46,10 +46,11 @@ (function _testCollect [] (Assert.equals "[0,1,2]" (Std.string (collect (range 3))))) -// Variadic math uses haxe's Lambda.fold under the hood (var mySum (+ 1 2 3)) -(var myDifference (- 5 4 3)) +(function _testSubtraction [] + (Assert.equals -2 (- 5 4 3)) + (Assert.equals -2 (- 2))) (function _testMultiplication [] (Assert.equals 60 (* 2 5 6))