From 6f386f9072155e0fd9013bb2116c04de46651acd Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Thu, 18 Feb 2021 07:37:39 -0800 Subject: compiler: strength reduction of nequal. * share/txr/stdlib/compiler.tl (compiler comp-if): Support reduction of nequal in the same way as equal. --- share/txr/stdlib/compiler.tl | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/share/txr/stdlib/compiler.tl b/share/txr/stdlib/compiler.tl index 8652948f..4b3ee0df 100644 --- a/share/txr/stdlib/compiler.tl +++ b/share/txr/stdlib/compiler.tl @@ -526,12 +526,14 @@ (defmeth compiler comp-if (me oreg env form) (match-case (cdr form) - (@(require ((equal @a @b) . @rest) + (@(require ((@(and (or equal nequal) @op) @a @b) . @rest) (or (eql-comparable a) (eql-comparable b))) - (let ((cf (if (or (eq-comparable a) - (eq-comparable b)) - 'eq 'eql))) + (let* ((pos (eq op 'equal)) + (cf (if (or (eq-comparable a) + (eq-comparable b)) + (if pos 'eq 'neq) + (if pos'eql 'neql)))) me.(compile oreg env ^(if (,cf ,a ,b) ,*rest)))) ((@(constantp @test) @then @else) me.(compile oreg env (if (eval test) then else))) -- cgit v1.2.3