Suggestion: ephemeron-case Daphne Preston-Kendal (04 Feb 2025 10:08 UTC)
Re: Suggestion: ephemeron-case John Cowan (04 Feb 2025 11:35 UTC)
Re: Suggestion: ephemeron-case Vincent Manis (he/him) (04 Feb 2025 19:38 UTC)
Re: Suggestion: ephemeron-case Marc Nieper-Wißkirchen (05 Feb 2025 15:12 UTC)
Re: Suggestion: ephemeron-case Daphne Preston-Kendal (05 Feb 2025 15:30 UTC)
Re: Suggestion: ephemeron-case Marc Nieper-Wißkirchen (05 Feb 2025 18:04 UTC)
Re: Suggestion: ephemeron-case Daphne Preston-Kendal (05 Feb 2025 18:16 UTC)
(missing)
Fwd: Suggestion: ephemeron-case Marc Nieper-Wißkirchen (16 Mar 2025 13:19 UTC)
Re: Suggestion: ephemeron-case Marc Nieper-Wißkirchen (12 May 2025 11:51 UTC)
Re: Suggestion: ephemeron-case Arthur A. Gleckler (10 Jun 2025 23:16 UTC)
Re: Suggestion: ephemeron-case Daphne Preston-Kendal (03 Aug 2025 09:38 UTC)
Re: Suggestion: ephemeron-case Marc Nieper-Wißkirchen (03 Aug 2025 15:29 UTC)
Re: Suggestion: ephemeron-case Marc Nieper-Wißkirchen (03 Aug 2025 15:30 UTC)
Re: Suggestion: ephemeron-case Daphne Preston-Kendal (09 Oct 2025 12:34 UTC)
Re: Suggestion: ephemeron-case Marc Nieper-Wißkirchen (09 Oct 2025 13:24 UTC)
Usefulness of reference-barrier Daphne Preston-Kendal (12 Oct 2025 20:16 UTC)
Re: Usefulness of reference-barrier Marc Nieper-Wißkirchen (13 Oct 2025 05:58 UTC)
Re: Usefulness of reference-barrier Marc Nieper-Wißkirchen (13 Oct 2025 07:21 UTC)
Re: Usefulness of reference-barrier Marc Nieper-Wißkirchen (13 Oct 2025 11:17 UTC)
Re: Usefulness of reference-barrier Marc Nieper-Wißkirchen (22 Oct 2025 07:18 UTC)
Re: Usefulness of reference-barrier Daphne Preston-Kendal (30 Oct 2025 22:46 UTC)
Re: Usefulness of reference-barrier Marc Nieper-Wißkirchen (31 Oct 2025 07:50 UTC)
Re: Usefulness of reference-barrier Daphne Preston-Kendal (30 Oct 2025 23:03 UTC)
Re: Usefulness of reference-barrier Marc Nieper-Wißkirchen (31 Oct 2025 08:02 UTC)
Re: Usefulness of reference-barrier Marc Nieper-Wißkirchen (04 Nov 2025 18:57 UTC)

Re: Suggestion: ephemeron-case Daphne Preston-Kendal 09 Oct 2025 12:33 UTC

> Am So., 3. Aug. 2025 um 17:29 Uhr schrieb Marc Nieper-Wißkirchen
> <xxxxxx@gmail.com>:
>>
>> Maybe I don't understand the semantics of your ephemeron-case form.
>> Reading your first post, there does not seem to be a reference barrier
>> on the key in the broken path. Can you give a syntax-case definition
>> of ephemeron case?

(define-syntax ephemeron-case
  (syntax-rules (else)
    ((_ eph-expr
        ((k-id . v-id) expr_0 expr_1 ...)
        (else broken-expr_0 broken-expr_1 ...))
     (let* ((eph eph-expr)
            (k (ephemeron-key eph))
            (v (ephemeron-value eph))) ; why has this name been changed? grr
       (if (ephemeron-broken? eph)
           (begin broken-expr_0 broken-expr_1 ...)
           (let-syntax ((k-id (identifier-syntax k))
                        (v-id (identifier-syntax v)))
             (dynamic-wind
               (lambda () #f)
               (lambda () expr_0 expr_1 ...)
               (lambda () (reference-barrier k)))))))))

> On 3 Aug 2025, at 17:30, Marc Nieper-Wißkirchen <xxxxxx@gmail.com> wrote:
>
> PS And maybe give a simple example of how a user would typically use it.

(define (ephemeron-alist-ref ephal key)
  (let loop ((more ephal))
    (if (null? more)
        (assertion-violation 'ephemeron-alist-ref "nothing found for key" ephal)
        (ephemeron-case (car ephal)
          ((found-key . value)
           (if (eqv? found-key value)
               value
               (loop (cdr more))))
          (else (loop (cdr more)))))))

Daphne