[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: type of "location" argument
From: |
David Kastrup |
Subject: |
Re: type of "location" argument |
Date: |
Wed, 04 Dec 2013 16:34:15 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) |
Urs Liska <address@hidden> writes:
> Am 04.12.2013 15:00, schrieb Jan-Peter Voigt:
>> Am 04.12.2013 14:58, schrieb Urs Liska:
>>> Hi,
>>>
>>> next helpless question: what Scheme type is the "location" argument used
>>> for Scheme functions?
>>> (write)ing location gives
>> Hi, its:
>> ly:input-location?
>>
>> HTH
> Unfortunately not (TH).
Wanna bet?
> This is what redirects me to
>
> Input *
> unsmob_input (SCM s)
> {
> if (SCM_IMP (s))
> return 0;
> if (SCM_CAR (s) == (SCM)input_tag) // ugh.
> return (Input *) SCM_CDR (s);
> else
> return 0;
> }
>
> And that's where I get stuck. This function looks like it somehow
> munges a Scheme pair or list, so I tried to access it through
> (car location)
> but that didn't work.
Oh, that's bloody entrails you are dealing with here, the raw C++ code
used for implementing a Scheme type. You don't want to go there. Not
even the C++ code wants to go there more than once.
> Which isn't surprising because the original (write) would have printed
> something like (location "...") if it were a list, isn't it?
#<...> basically means "Uh, I have no way of printing this primitive
type in a way that could be read back in, but here is some information
anyway."
The naming consistency for input locations and their related Scheme and
C++ types and print results is actually screwed up much more than any
other type I can think of. It was probably implemented before Jan and
Han-Wen figured out how to do things systematically.
You won't learn anything useful from _this_ code.
What are you trying to achieve?
--
David Kastrup