From: Paul Smith <psmith@gnu.org>
To: Thien-Thi Nguyen <ttn@gnuvola.org>
Cc: guile-user@gnu.org
Subject: Re: Errors using Guile 2.0 vs. Guile 1.8
Date: Sun, 29 Jan 2012 16:51:53 -0500 [thread overview]
Message-ID: <1327873913.3401.26.camel@homebase> (raw)
In-Reply-To: <87aa56us0v.fsf@gnuvola.org>
On Sun, 2012-01-29 at 22:18 +0100, Thien-Thi Nguyen wrote:
> () Paul Smith <psmith@gnu.org>
> () Sun, 29 Jan 2012 10:54:18 -0500
>
> $ cat g1.mk
> define show
> (define (show s)
> (display s)
> (newline))
> endef
> $(info define display)
> $(guile $(show))
> $(info after define)
> $(guile (show "HI")) # this one
> all:;
>
> I don't know what this means, or how to proceed with debugging.
>
> What happens if you change the marked line to:
>
> $(guile (map object->string
> (list show
> current-output-port
> (current-output-port))))
>
> ? I would also try simply ‘$(guile show)’, but remember faintly
> that such a type would cause an error. Thinking along these lines
> some more, the problem is perhaps with the return value of ‘show’,
> which is the return value of calling ‘newline’, which is probably
> unspecified.
>
> As for 1.8 vs 2.0, i dare not speculate.
Sorry for being unclear. What I was trying to indicate by having the
$(info ...) lines there is that the error is actually generated when the
(define ...) is parsed, NOT when the function is invoked. In fact I can
remove the invocation and still get the errors:
$ cat /tmp/g2.mk
define show
(define (show s)
(display s)
(newline))
endef
$(info define display)
$(guile $(show))
$(info after define)
all:;
$ ./make -f /tmp/g2.mk
define display
Backtrace:
In ice-9/boot-9.scm:
162: 5 [catch #t #<catch-closure 19a45c0> ...]
170: 4 [#<procedure 19a7cd0 ()>]
In unknown file:
?: 3 [catch-closure]
In ice-9/eval.scm:
389: 2 [eval # #]
374: 1 [eval # #]
In unknown file:
?: 0 [scm-error misc-error #f ...]
ERROR: In procedure scm-error:
ERROR: Unknown object: #<variable 19bf180 value: #<procedure 19a85a0 at ice-9/eval.scm:378:13 (a)>>
after define
make: `all' is up to date.
I can also (define ...) a function which is entirely numeric (for
example the Fibonacci calculator in the test suite) so there's no issue
with string return values or ports or anything like that:
$ cat /tmp/g3.mk
# Define the "fib" function in Guile
define fib
;; A procedure for counting the n:th Fibonacci number
;; See SICP, p. 37
(define (fib n)
(cond ((= n 0) 0)
((= n 1) 1)
(else (+ (fib (- n 1))
(fib (- n 2))))))
endef
$(guile $(fib))
x:;
$ ./make -f /tmp/g3.mk
Backtrace:
In ice-9/boot-9.scm:
162: 5 [catch #t #<catch-closure add5c0> ...]
170: 4 [#<procedure ae0cd0 ()>]
In unknown file:
?: 3 [catch-closure]
In ice-9/eval.scm:
389: 2 [eval # #]
374: 1 [eval # #]
In unknown file:
?: 0 [scm-error misc-error #f ...]
ERROR: In procedure scm-error:
ERROR: Unknown object: #<variable afed00 value: #<procedure ae5630 at ice-9/eval.scm:378:13 (a)>>
make: `x' is up to date.
As you can see I'm not actually calling these functions at all; simply
defining them is enough to cause the error.
Again these all work perfectly with Guile 1.8.
--
-------------------------------------------------------------------------------
Paul D. Smith <psmith@gnu.org> Find some GNU make tips at:
http://www.gnu.org http://make.mad-scientist.net
"Please remain calm...I may be mad, but I am a professional." --Mad Scientist
next prev parent reply other threads:[~2012-01-29 21:51 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-29 15:54 Errors using Guile 2.0 vs. Guile 1.8 Paul Smith
2012-01-29 21:18 ` Thien-Thi Nguyen
2012-01-29 21:51 ` Paul Smith [this message]
2012-01-29 22:26 ` Mark H Weaver
2012-01-29 22:57 ` Mark H Weaver
2012-01-30 0:17 ` Paul Smith
2012-01-30 1:16 ` Mark H Weaver
2012-01-30 1:42 ` Paul Smith
2012-01-30 11:06 ` Andy Wingo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1327873913.3401.26.camel@homebase \
--to=psmith@gnu.org \
--cc=guile-user@gnu.org \
--cc=ttn@gnuvola.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).