|
From: | Zelphir Kaltstahl |
Subject: | Re: org-babel guile source block bug in handling multiple values |
Date: | Wed, 8 Mar 2023 01:13:45 +0000 |
Zelphir Kaltstahl <zelphirkaltstahl@posteo.de> writes:If org merely wraps in a `let`, it should not notice any of the multiple values business, because that is something done internally in `let-values`.The "let", to define the org variables, ends up putting the "import" inside the scheme _expression_, like this: ;; -*- geiser-scheme-implementation: guile -*- (let ((x '1) (y '2)) (import (except (rnrs base) error vector-map) (only (guile) lambda* λ) ;; let-values (srfi srfi-11)) (let-values ([(a b) (values x y)]) (simple-format #t "~a ~a\n" a b)) ) which raises an error when evaluated the first time (the second time, the "import" has already imported the new "let-values" feature (srfi-11), so, the evaluation works). You can test this manually in a guile session. I guess you'll have to use sessions, and do the "import" in a separate block first. Bruno
Actually, now that I think about it, the whole problem is gone, when replacing the wrapping let with 2 separate (define ...), which I originally thought org would do:
~~~~START~~~~ $ guile GNU Guile 3.0.9 Copyright (C) 1995-2023 Free Software Foundation, Inc. Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. This program is free software, and you are welcome to redistribute it under certain conditions; type `,show c' for details. Enter `,help' for help. scheme@(guile-user)> (define x 1) scheme@(guile-user)> (define y 2) scheme@(guile-user)> (import (except (rnrs base) error vector-map) ... (only (guile) ... lambda* ... λ) ... ;; let-values ... (srfi srfi-11)) scheme@(guile-user)> (let-values ([(a b) (values x y)]) ... (simple-format #t "~a ~a\n" a b)) 1 2 ~~~~~END~~~~~
Or in one input to the REPL:
~~~~START~~~~ $ guile GNU Guile 3.0.9 Copyright (C) 1995-2023 Free Software Foundation, Inc. Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. This program is free software, and you are welcome to redistribute it under certain conditions; type `,show c' for details. Enter `,help' for help. scheme@(guile-user)> (define x 1) scheme@(guile-user)> (define y 2) scheme@(guile-user)> (import (except (rnrs base) error vector-map) ... (only (guile) ... lambda* ... λ) ... ;; let-values ... (srfi srfi-11)) scheme@(guile-user)> (let-values ([(a b) (values x y)]) ... (simple-format #t "~a ~a\n" a b)) 1 2 ~~~~~END~~~~~
Is there a reason it has to be wrapped in a let, instead of
simply define-ing the variables?
Regards,
Zelphir
-- repositories: https://notabug.org/ZelphirKaltstahl
[Prev in Thread] | Current Thread | [Next in Thread] |