Signal handling Lassi Kortela (06 Aug 2020 14:22 UTC)
Re: Signal handling Marc Nieper-Wißkirchen (06 Aug 2020 14:32 UTC)
Re: Signal handling John Cowan (06 Aug 2020 15:13 UTC)
Re: Signal handling Arthur A. Gleckler (06 Aug 2020 15:28 UTC)
Re: Signal handling John Cowan (06 Aug 2020 17:38 UTC)
Re: Signal handling Arthur A. Gleckler (06 Aug 2020 18:19 UTC)
Re: Signal handling Lassi Kortela (06 Aug 2020 18:35 UTC)
Re: Signal handling Amirouche Boubekki (06 Aug 2020 21:18 UTC)
Re: Signal handling Amirouche Boubekki (06 Aug 2020 21:23 UTC)
Re: Signal handling John Cowan (07 Aug 2020 02:56 UTC)
Re: Signal handling Marc Nieper-Wißkirchen (06 Aug 2020 15:32 UTC)
Re: Signal handling John Cowan (06 Aug 2020 16:38 UTC)
Re: Signal handling hga@xxxxxx (06 Aug 2020 14:33 UTC)
Signal handling with terminals Lassi Kortela (06 Aug 2020 14:54 UTC)
(missing)
UI event datatypes Lassi Kortela (06 Aug 2020 16:08 UTC)
Re: UI event datatypes John Cowan (06 Aug 2020 16:34 UTC)
Re: UI event datatypes Lassi Kortela (06 Aug 2020 16:57 UTC)
Re: UI event datatypes John Cowan (07 Aug 2020 21:30 UTC)
Re: UI event datatypes Lassi Kortela (08 Aug 2020 18:36 UTC)
Re: UI event datatypes John Cowan (09 Aug 2020 00:31 UTC)

UI event datatypes Lassi Kortela 06 Aug 2020 16:08 UTC

> The thing that concerns me about a plist representation is that it has
> to be constructed on the fly, whereas my design, though limited, can be
> as simple as a wrapped vector that gets mutated (not constructed) by the
> event-poll procedure, and so can be reused the next time.  My intuition
> is that performance matters here, though I know very well the dangers of
> premature optimization.

With terminals the cost of a list is definitely not a problem. Not sure
about cutting-edge GUIs (which are probably some VR headset stuff -- and
Scheme should get ready for VR).

BTW can't you reuse the existing cons structure of a list just as well
as a vector's?

> But if folks think this doesn't matter, then I can reformulate in terms
> of "Here are some well-defined types of events" rather than "An event
> can only be one of these".

I guess it could be:

(let loop ((e (make-null-event)))
   (read-event! e)
   (cond ((key-press-event? e)
          ...)
         ((mouse-button-event? e)
          ...))
   (loop e))

But I've tried to design an all-encompassing UI event datatype several
times and failed every time. So I would make it specific to each UI library.