From 0ee1aa16910673786619a73d6b1e7dcd56cae914 Mon Sep 17 00:00:00 2001
From: mattwparas <matthewparas2020@u.northwestern.edu>
Date: Mon, 4 Dec 2023 12:00:35 -0800
Subject: [PATCH] fix filter condition to only exclude false

---
 cogs/r5rs.scm                                 | 2 ++
 crates/steel-core/src/steel_vm/transducers.rs | 3 +--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/cogs/r5rs.scm b/cogs/r5rs.scm
index a017e0bed..7d045412f 100644
--- a/cogs/r5rs.scm
+++ b/cogs/r5rs.scm
@@ -41,6 +41,8 @@
 (check-equal? "Parsing octal" #o0777 511)
 (check-equal? "Parsing binary" #b0110 6)
 
+(check-equal? "filter treats lists as true" (filter (lambda (n) (list 1 2)) (list 1 2)) '(1 2))
+
 (check-equal?
  "Symbols are interned correctly - lists should use the existing symbols that have been interned"
  (eq? 'definitely-hasnt-been-seen-before
diff --git a/crates/steel-core/src/steel_vm/transducers.rs b/crates/steel-core/src/steel_vm/transducers.rs
index 22a40ab06..0846f8236 100644
--- a/crates/steel-core/src/steel_vm/transducers.rs
+++ b/crates/steel-core/src/steel_vm/transducers.rs
@@ -267,9 +267,8 @@ impl<'global, 'a> VmCore<'a> {
 
                             match res {
                                 Ok(k) => match k {
-                                    SteelVal::BoolV(true) => Some(Ok(arg)),
                                     SteelVal::BoolV(false) => None,
-                                    _ => None,
+                                    _ => Some(Ok(arg)),
                                 },
                                 Err(e) => Some(Err(e)),
                             }