From 0e4118cd1bde2d79e15d3b72cc9fe6044b35eccc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Sat, 6 Apr 2019 19:01:41 +0200 Subject: Add unval. --- module/util.scm | 10 ++++++++++ 1 file changed, 10 insertions(+) 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) -- cgit v1.2.3