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?