Further issues Wolfgang Corcoran-Mathe (20 Jun 2026 17:55 UTC)
Re: Further issues and New Portable Implementation Andrew Tropin (23 Jun 2026 12:08 UTC)
Re: Further issues and New Portable Implementation Wolfgang Corcoran-Mathe (23 Jun 2026 17:22 UTC)
Re: Further issues and New Portable Implementation Wolfgang Corcoran-Mathe (23 Jun 2026 20:00 UTC)
Re: Further issues and New Portable Implementation John Cowan (24 Jun 2026 01:42 UTC)
Re: Further issues and New Portable Implementation Andrew Tropin (24 Jun 2026 04:52 UTC)
Re: Further issues and New Portable Implementation Andrew Tropin (24 Jun 2026 04:28 UTC)
Re: Further issues and New Portable Implementation Andrew Tropin (24 Jun 2026 04:26 UTC)
Re: Further issues and New Portable Implementation John Cowan (24 Jun 2026 05:30 UTC)
Re: Further issues and New Portable Implementation Andrew Tropin (28 Jun 2026 06:25 UTC)
Re: Further issues and New Portable Implementation John Cowan (28 Jun 2026 10:22 UTC)
Re: Further issues and New Portable Implementation Andrew Tropin (29 Jun 2026 01:37 UTC)
Re: Further issues and New Portable Implementation Wolfgang Corcoran-Mathe (24 Jun 2026 15:56 UTC)
Re: Further issues and New Portable Implementation Andrew Tropin (28 Jun 2026 06:11 UTC)

Re: Further issues and New Portable Implementation Andrew Tropin 28 Jun 2026 06:25 UTC
On 2026-06-24 01:30, John Cowan wrote:

> On Wed, Jun 24, 2026, 12:26 AM Andrew Tropin <xxxxxx@trop.in> wrote:
>
>>
>> 2. Yeah, we could go further and remove quoting, but I still prefer
>> `'metadata` over `metadata` as it makes it clearer that this is a symbol
>> and this thing won't be evaluated.  It's one extra character to type,
>> but so explicit to read with no extra cognitive load.
>>
>
> "Metadata" is functioning as a syntax keyword, though, and it's a strong
> convention not to quote syntax keywords. We do not write
>
> (cond
>   ((this) (that))
>   ((foo) (bar))
>   ('else (baz)))
>
> although we could define "cond" to require this, and "else" is certainly
> not a variable. In addition, making "metadata" explicitly a syntax keyword
> makes it participate smoothly in the macro system. The extra cognitive load
> consists of wondering why the unnecessary ' is present.

True. The small difference here is that metadata is not wrapped into
parethesis, so the cond analogy is not completely matches.

Anyway, I don't have a strong stance here, but still my intuiton tells
that

(test ("descr" ctx)
  'metadata
  '((a . b))
  ...)

or more verbose

(test ("descr" ctx)
  (metadata
   '((a . b)))
  ...)

Looks more explicit and obvious than

(test ("descr" ctx)
  metadata
  '((a . b))
  ...)

At least for people with general CS background, who are not 30 years
into Scheme.

Feel free to persuade which syntax and look we need here.

>
>>
>> context is a plain alist (and alists are immutable in most Schemes?).
>>
>
> Alists are, like most lists, mutable in fact but immutable by unenforced
> convention. (Property lists are one if the few kinds of lists that are
> conventionally mutated.) Since lists are not a disjoint type and pairs are
> mutable, this is the same in all Schemes -- well, except Racket.

Thanks for the answer!

So let's define an overal shape of context as something like:

"We suggest context to be a kinda immutable alist with possible
'sideffectful values'. We suggested and warned you, but you are free to
shoot legs as you wish! :)"

--
Best regards,
Andrew Tropin