diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-09-12 05:44:32 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-09-12 05:44:32 -0700 |
commit | 46f53f9397c625a3e508c083416ce0c6d943a920 (patch) | |
tree | 12ddd2148093bc84f181e1519c8652fb295e27ac | |
parent | 0528f634b395b5ee3bd78766e5530ba1a9321e1e (diff) | |
download | txr-46f53f9397c625a3e508c083416ce0c6d943a920.tar.gz txr-46f53f9397c625a3e508c083416ce0c6d943a920.tar.bz2 txr-46f53f9397c625a3e508c083416ce0c6d943a920.zip |
awk macro: new local macros ff and mf.
* share/txr/stdlib/awk.tl (sys:awk-let): New
local macros.
* txr.1: Documented.
-rw-r--r-- | share/txr/stdlib/awk.tl | 8 | ||||
-rw-r--r-- | txr.1 | 63 |
2 files changed, 70 insertions, 1 deletions
diff --git a/share/txr/stdlib/awk.tl b/share/txr/stdlib/awk.tl index dabff1fc..3c92286a 100644 --- a/share/txr/stdlib/awk.tl +++ b/share/txr/stdlib/awk.tl @@ -176,7 +176,13 @@ (set ,flag-new nil)) (or (set flag ,flag-new) ,flag-old))) (qref ,awc rng-exprs)) - rng-temp))) + rng-temp)) + (ff (. opip-args) + ^(symacrolet ((f (rslot ,',aws-sym 'fields 'f-to-rec))) + (set f [(opip ,*opip-args) f]))) + (mf (. opip-args) + ^(symacrolet ((f (rslot ,',aws-sym 'fields 'f-to-rec))) + (set f (mapcar (opip ,*opip-args) f))))) ,*body))) (defmacro awk (:env e . clauses) @@ -37865,6 +37865,69 @@ is evaluated. If it is true, then the range stays active for the current record, but is deactivated when the processing of the record completes. +.coNP Macro @ ff +.synb +.mets (ff < opip-arg *) +.syne +.desc +The awk macro +.code ff +(filter fields) +provides a shorthand for filtering the field list +.code f +trough a pipeline of chained functions expressed using +.code opip +argument syntax. + +The following equivalence holds, except that +.code f +refers to the awk variable even if the +.code mf +invocation occurs in code which establishes +a binding which shadows +.codn f . + +.cblk + (ff a b c ...) <--> (set f [(opip a b c ...) f]) +.cble + +.TP* Example: +.cblk + ;; convert all fields from string to floating-point + (ff (mapcar flo-str)) +.cble + +.coNP Macro @ mf +.synb +.mets (mf < opip-arg *) +.syne +.desc +The awk macro +.code mf +(map fields) +provides a shorthand for mapping each field +individually trough a pipeline of chained functions expressed using +.code opip +argument syntax. + +The following equivalence holds, except that +.code f +refers to the awk variable even if the +.code mf +invocation occurs in code which establishes +a binding which shadows +.codn f . + +.cblk + (mf a b c ...) <--> (set f (mapcar (opip a b c ...) f)) +.cble + +.TP* Example: +.cblk + ;; convert all fields from string to floating-point + (mf flo-str) +.cble + .SS* Environment Variables and Command Line Note that environment variable names, their values, and command line |