diff options
author | Colin Okay <cbeok@protonmail.com> | 2020-07-08 20:42:34 -0500 |
---|---|---|
committer | Colin Okay <cbeok@protonmail.com> | 2020-07-08 20:42:34 -0500 |
commit | 2aeb1d46e8bfa2c976c9db54033ab6995ad6c5b4 (patch) | |
tree | 419ae2aad31ed71b0724d56417e02f121588c680 | |
parent | 49b1053086af11a3fe8a143dfb981dd5bd11c748 (diff) |
another example
-rw-r--r-- | README.md | 25 | ||||
-rw-r--r-- | examples.lisp | 13 |
2 files changed, 36 insertions, 2 deletions
@@ -64,7 +64,30 @@ apears at the end of the document, following the tutorial. > (car (pick-out '(40) (fibs))) ;; 267914296 ``` - + +### A Kind Of Grep + +``` lisp + + +> (defmacro a-kind-of-grep (match-var key file &rest body) + `(for ,match-var (filter! (lambda (line) (search ,key line)) + (file-lines ,file)) + ,@body)) + +;; look for export lines in my .bashrc + +> (let ((count 0)) + (a-kind-of-grep line "export" "~/.bashrc" + (incf count) + (print line))) + +"export PATH=$HOME/.roswell/bin:$PATH" +"export PATH=$HOME/.local/bin:$PATH" +2 + +``` + ## Tutorial GTWIWTG is a tiny library for creating and using generators. diff --git a/examples.lisp b/examples.lisp index 83ba5c8..6d2f570 100644 --- a/examples.lisp +++ b/examples.lisp @@ -3,7 +3,8 @@ (:export #:perms #:all-primes - #:fibs)) + #:fibs + #:a-kind-of-grep)) (in-package :gtwiwtg.examples) @@ -109,3 +110,13 @@ vector VEC, one at a time." ;; subperms)))) ;; ;; which looks a little nicer but is less kind to the heap and to GC. + +;;; A kind of Grep ;;; + +(defmacro a-kind-of-grep (match-var key file &rest body) + `(for ,match-var (filter! (lambda (line) (search ,key line)) + (file-lines ,file)) + ,@body)) + + +;; find all export expressions in my bashrc file |