diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-04-06 19:01:41 +0200 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-04-06 19:01:41 +0200 |
commit | 0e4118cd1bde2d79e15d3b72cc9fe6044b35eccc (patch) | |
tree | 95af27d8efec6014f96b4631dc511d350f42acc9 /module/util.scm | |
parent | Add termios tests. (diff) | |
download | calp-0e4118cd1bde2d79e15d3b72cc9fe6044b35eccc.tar.gz calp-0e4118cd1bde2d79e15d3b72cc9fe6044b35eccc.tar.xz |
Add unval.
Diffstat (limited to 'module/util.scm')
-rw-r--r-- | module/util.scm | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/module/util.scm b/module/util.scm index 1a7c5471..249e2de2 100644 --- a/module/util.scm +++ b/module/util.scm @@ -206,3 +206,13 @@ lst (iota (length lst)))) (export map-each) + +;; Takes a procedure returning multiple values, and returns a function which +;; takes the same arguments as the original procedure, but only returns one of +;; the procedures. Which procedure can be sent as an additional parameter. +(define* (unval proc #:optional (n 0)) + (lambda args + (call-with-values (lambda () (apply proc args)) + (lambda args (list-ref args n))))) + +(export unval) |