From 2e0f7c370fa5012cb54328eb0e73412cb3c59351 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 11 Jan 2022 21:14:24 -0800 Subject: sum-each, mul-each: handle no vars case. * stdlib/arith-each.tl (sys:arith-each): If there are no vars, then just reduce to the identity element value. This is alreading happening fine for the each-prod family of operators. * tests/016/arith.tl: Test cases covering the no vars and empty iteration identity element cases for sum-each and mul-each, as well as the *-prod variants. * txr.1: Document empty iteration and empty vars behavior for arithmetic each operators as well as the each-prod family. --- tests/016/arith.tl | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'tests/016/arith.tl') diff --git a/tests/016/arith.tl b/tests/016/arith.tl index ad919e6b..24521921 100644 --- a/tests/016/arith.tl +++ b/tests/016/arith.tl @@ -255,10 +255,18 @@ 1.5 2.25 2.625 2.8125 2.90625)) (mtest + (sum-each ()) + 0 + (sum-each ((x nil))) + 0 (sum-each ((x '(1 2 3)) (y '(4 5 6))) (* x y)) 32 + (mul-each ()) + 1 + (mul-each ((x nil))) + 1 (mul-each ((x '(1 2 3)) (y '(4 5 6))) (+ x y)) @@ -281,6 +289,12 @@ :error) (mtest + (sum-each-prod ()) + 0 + (sum-each-prod ((x nil))) + 0 + (sum-each-prod ((x '(4))) x) + 4 (sum-each-prod ((x '(1 2 3)) (y '(4 3 2))) (* x y)) @@ -295,6 +309,12 @@ :error) (mvtest + (mul-each-prod ()) + 1 + (mul-each-prod ((x nil))) + 1 + (mul-each-prod ((x '(4))) x) + 4 (mul-each-prod ((x '(1 2 3)) (y '(4 3 2))) (+ x y)) -- cgit v1.2.3