stdlib: Implement filter() and filter-out() functions.
[goals.git] / stdlib / prelude.gl
index e8a96e8..d8e523a 100644 (file)
@@ -59,6 +59,16 @@ pure function wrap (wrapper, xs) = @{
 #----------------------------------------------------------------------
 # Text functions.
 
+# Filter a list by regexp.
+pure function filter (pat, xs) returning strings = @{
+    for f in %xs; do echo "$f"; done | grep -E -- %pat
+}
+
+# Filter out a list by regexp.
+pure function filter-out (pat, xs) returning strings = @{
+    for f in %xs; do echo "$f"; done | grep -v -E -- %pat
+}
+
 # Head of a list.
 pure function head (xs) returning string = @{
     for f in %xs; do