[gambit-list] example from the doc

Mikael mikael.rcv at gmail.com
Mon May 12 15:33:53 EDT 2014


2014-05-12 19:55 GMT+02:00 Denis Fourt <denis.prog at hotmail.com>:

> Hi,
>
> my error was that the "quote" was actually a different unicode char (from
> the copy/paste), therefore gsi did not understand it as a quoted symbol but
> as an unquoted (undefined) symbol.
>
> And I got a weird error message because of the code point of that char was
> written right in it. And I have to admit it, I had no clue about what was
> occurring.
>
> I understand that no thread could return anything that would be eq? with
> (let ((unique (list 'unique))). But :
>
> a) Is there anything more simple than using list?
>

Uninterned sy.

b) Would it be a good idea to have one (or more) reserved symbol (or
> keyword) in Gambit like None, Nothing, Fail, etc. to handle that kind of
> problem. I am asking this question because a similar problem arises with
> hash table or similar dictionary like structures. Most of the time #f or
> '() work except when storing booleans or lists.
>

No just use a unique object for this purpose - if there'd be a global
undefined value, then of course you'd get the same uniqueness problems with
it as with a global symbol like 'undefined , or #f etc.


> Any thoughts?
>
> Denis
>
>
> ------------------------------
> From: mikael.rcv at gmail.com
> Date: Mon, 12 May 2014 14:33:44 +0200
> Subject: Re: [gambit-list] example from the doc
> To: denis.prog at hotmail.com; gambit-list at iro.umontreal.ca
>
>
> Denis, the unique variable is for it to work even if the thread ended its
> execution by returning a symbol by the name unique - it interprets fine,
> what's your err?
>
>
> 2014-05-12 2:38 GMT+02:00 Denis Fourt <denis.prog at hotmail.com>:
>
> Hi,
>
> In Gambit 4.7.2 documentation, in the section dedicated to threads, there
> is the following code example :
>
>   (define thread-alive?
>             (let ((unique (list 'unique)))
>
>               (lambda (thread)
>                 ; Note: this procedure raises an exception if
>                 ; the thread terminated abnormally.
>                 (eq? (thread-join! thread 0 unique) unique))))
>
> This code is actually incorrect (according to gsi), the let is rejected. I believe that :
>
> (define thread-alive?
>
>  (lambda (thread)
>
>      (eq? (thread-join! thread 0 'unique) 'unique)))
>
>
> should be enough (though I do not know what happens if the thread returns nothing). I would like to know if there was some precise reason behind this let construction.
>
> Thanks,
>
>
> Denis
>
>
> _______________________________________________
> Gambit-list mailing list
> Gambit-list at iro.umontreal.ca
> https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
>
>
>
> _______________________________________________
> Gambit-list mailing list
> Gambit-list at iro.umontreal.ca
> https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20140512/55eb4729/attachment.htm>


More information about the Gambit-list mailing list