GNU bug report logs -
#73431
Add `setf` support for `stream.el` in ELPA
Previous Next
Reported by: Okamsn <okamsn <at> protonmail.com>
Date: Mon, 23 Sep 2024 01:35:01 UTC
Severity: wishlist
Done: Stefan Monnier <monnier <at> iro.umontreal.ca>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Stefan Monnier wrote:
>> +(cl-defstruct (stream (:constructor stream--make-stream)
>> + (:predicate streamp)
>> + :named)
>> +
>> ...
>> + :documentation "Whether the evaluated stream is empty.
>> +
>> +A stream is empty if the updater function returns nil when
>> +`stream--force' evaluates the stream.")
>> +
>> + (updater--internal
>> + nil
>> + :type (or function null)
>> + :documentation "Function that returns the head and tail of the stream when called.
>
> Instead of funny field names, I recommend you use something like
> `(:conc-name stream--)` so all the automatically-created accessors have
> a "--" in their name, declaring them internal.
I will do that. Thank you for pointing me to it.
> Also, I wonder: have you tried to stick closer to the original code,
> with a structure like
>
> (cl-defstruct (stream ...)
> (evald nil :type boolean)
> (data nil :type (or function list)))
>
> Was it worse than what you have?
>
>
> Stefan
>
>
> PS: We could even be nasty and do things like:
>
> (cl-defstruct (stream ...)
> (data nil :type (or function list)))
>
> (cl-defstruct (stream--unevald (:include stream)))
> (cl-defstruct (stream--evald (:include stream)))
>
> and then use (aref STREAM 0) to dynamically change the type from
> `stream--unevald` to `stream--evald` to avoid storing the `evald` field.
> 😈
I tried both versions you suggested. They both are slower than what I
have currently in the patch file.
This bug report was last modified 264 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.