Re: no constants please Richard Kelsey (04 Jan 2004 18:11 UTC)
Re: no constants please felix (04 Jan 2004 19:25 UTC)
Re: no constants please Richard Kelsey (04 Jan 2004 20:08 UTC)
Re: no constants please Tom Lord (04 Jan 2004 21:13 UTC)
Re: no constants please Tom Lord (04 Jan 2004 21:43 UTC)
Re: no constants please Richard Kelsey (04 Jan 2004 22:59 UTC)
Re: no constants please Tom Lord (05 Jan 2004 00:50 UTC)
Re: no constants please Tom Lord (05 Jan 2004 01:19 UTC)
Re: no constants please Richard Kelsey (05 Jan 2004 11:42 UTC)
Re: no constants please Tom Lord (05 Jan 2004 16:26 UTC)
Re: no constants please Richard Kelsey (05 Jan 2004 17:49 UTC)
Re: no constants please Tom Lord (05 Jan 2004 18:24 UTC)
Re: no constants please Michael Sperber (05 Jan 2004 18:48 UTC)
Re: no constants please Tom Lord (05 Jan 2004 22:00 UTC)
Re: no constants please Michael Sperber (06 Jan 2004 07:42 UTC)
I don't believe in "(may GC)" Tom Lord (05 Jan 2004 00:55 UTC)
Re: I don't believe in "(may GC)" Richard Kelsey (05 Jan 2004 12:07 UTC)
Re: I don't believe in "(may GC)" Shiro Kawai (05 Jan 2004 12:45 UTC)
Re: I don't believe in "(may GC)" bear (05 Jan 2004 18:16 UTC)
Re: I don't believe in "(may GC)" Tom Lord (05 Jan 2004 16:35 UTC)
Re: I don't believe in "(may GC)" bear (05 Jan 2004 17:54 UTC)
Re: I don't believe in "(may GC)" tb@xxxxxx (06 Jan 2004 01:39 UTC)
Re: I don't believe in "(may GC)" Michael Sperber (06 Jan 2004 07:39 UTC)
Re: no constants please Tom Lord (05 Jan 2004 01:05 UTC)
Re: no constants please Tom Lord (05 Jan 2004 01:12 UTC)
Re: no constants please Richard Kelsey (05 Jan 2004 12:17 UTC)
Re: no constants please Tom Lord (05 Jan 2004 17:40 UTC)
Re: no constants please Michael Sperber (05 Jan 2004 19:03 UTC)
Re: no constants please tb@xxxxxx (06 Jan 2004 01:37 UTC)
Re: no constants please Richard Kelsey (06 Jan 2004 02:15 UTC)
Re: no constants please Tom Lord (06 Jan 2004 02:29 UTC)
Re: no constants please tb@xxxxxx (06 Jan 2004 02:31 UTC)
Re: no constants please Richard Kelsey (06 Jan 2004 03:10 UTC)
Re: no constants please tb@xxxxxx (06 Jan 2004 03:14 UTC)
Re: no constants please Tom Lord (06 Jan 2004 04:06 UTC)

Re: I don't believe in "(may GC)" bear 05 Jan 2004 17:53 UTC


On Mon, 5 Jan 2004, Richard Kelsey wrote:

>   If I'm using some exotic number representation (constructive reals,
>   perhaps), then EXTRACT_DOUBLE may very well involve some pretty hairy,
>   hence possibly GC-causing, computation.
>
>This doesn't worry me too much; there aren't a lot of such
>implementations around.

SISC allows inexact reals of greater precision than the hardware
can directly represent, and places the precision of inexact computations
under user control by allowing the user to set two "special variables"
named min-precision and max-precision.

Chicken can be compiled with an extended numeric library to support
inexact-reals represented as floating point numbers of any chosen size.

I dunno their exact internals, but do you really wanna bet that both
of them wouldn't have difficulty implementing an EXTRACT_DOUBLE that
didn't allocate a call frame?

>   If I'm using some exotic string representations (I'm working on a
>   functional-splay-tree string type for Pika) -- same deal:
>   extract-string may take some (possibly GC-causing) work.
>
>This does worry me (it's listed in the 'issues' section of the SRFI).
>
>   Even something innocent like:
>
>	int SCHEME_CHAR_P(scheme_value)
>
>   can cause GC if my implementation let's me attach to a hook in its
>   implementation.
>

>Again, I don't think this will be very common.  Is there an existing
>implementation for which this (or anything similar) is an issue?

The lack of existing implementations that use an "exotic"
representation for strings is one of the main reasons I
wound up writing my own.  I don't know whether you'd say
that my homebrew system "exists" or not since it's not
released, but handling long strings and Unicode is the only
thing it does *better* than other schemes, and an exotic
character and string representation is why it can do it.

So this is more than just closing the door on something
that nobody's doing; it's closing the door on things that
are, for some applications, The Right Thing.

In Natural-Language work, it's not that uncommon to *want* a
string that's the entire text of a novel when you're doing
corpus work, and the natural method of parsing and annotating
concentrates on adding and deleting characters usually near the
front of the string.  That's horribly inefficient with c-style
strings.  Until I got my tree representation of strings working,
I had to deal with novels with much more complicated code, a
page at a time or less, so as not to force the underlying
implementation to do something terribly inefficient.

I don't think it's okay to lock implementors out of using
this "exotic" representation, when they may want to go to it
as a means of *improving* their schemes or adapting to the
new realities of Unicode Support.  And this is important
to your design because, if I want to traverse a stringtree
copying characters into a C buffer, I do have to allocate a
linked list of pointers to parent nodes in the string, and
that may trigger GC.

				Bear