Add filter-map.
authorJan Nieuwenhuizen <janneke@gnu.org>
Tue, 3 Jan 2017 21:11:34 +0000 (22:11 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Wed, 4 Jan 2017 08:14:05 +0000 (09:14 +0100)
* module/srfi/srfi-1.mes (filter-map): New function.

module/srfi/srfi-1.mes

index e3b904a77899339ca9e3411613074a31736a49b4..5069e885727ec72a3c92ab69588aa151cf578ba2 100644 (file)
@@ -1,7 +1,7 @@
 ;;; -*-scheme-*-
 
 ;;; Mes --- Maxwell Equations of Software
-;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016,2017 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of Mes.
 ;;;
 (define (append-map f lst)
   (apply append (map f lst)))
 
+(define (filter-map f lst)
+  (if (null? lst) (list)
+      (let ((r (f (car lst))))
+        (if r (cons r (filter-map f (cdr lst)))
+            (filter-map f (cdr lst))))))
+
 ;;; nyacc requirements
 
 (define (fold proc init lst1 . rest)