[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#55395: What does (1 2 3 . #2) mean?
From: |
Mattias Engdegård |
Subject: |
bug#55395: What does (1 2 3 . #2) mean? |
Date: |
Fri, 13 May 2022 13:32:34 +0200 |
What, exactly, does the #N print notation mean (with print-circle=nil)?
Let's define (rho LEAD LOOP) as the iota list that has a loop LOOP long after
LEAD initial elements:
(defun rho (lead loop)
(let ((l (number-sequence 1 (+ lead loop))))
(setcdr (nthcdr (+ lead loop -1) l) (nthcdr lead l))
l))
Then we have:
(rho 0 1) => (1 . #0)
(rho 0 2) => (1 2 1 2 . #2)
(rho 0 3) => (1 2 3 1 2 . #2)
(rho 0 4) => (1 2 3 4 1 2 3 4 1 2 . #5)
(rho 0 5) => (1 2 3 4 5 1 2 3 4 5 1 . #5)
(rho 1 4) => (1 2 3 4 5 2 3 4 5 2 . #5)
(rho 4 1) => (1 2 3 4 5 5 5 . #3)
and so on. The pattern is not obvious to me.
It may have made more sense before the switch of cycle-detection algorithm from
Floyd to Brent. This can be fixed by hand-coding the list iteration and
explicitly remembering the index of the tortoise, but would that be correct?
What's the spec?
If #N means 'Nth object from the top along the path to the current object,
starting at 0' then we should have
(rho 2 3) => (1 2 3 4 5 . #2)
(list (rho 2 3)) => ((1 2 3 4 5 . #3))
ie, adding the print depth to the index in the list. Do you agree?
- bug#55395: What does (1 2 3 . #2) mean?,
Mattias Engdegård <=
- bug#55395: What does (1 2 3 . #2) mean?, Lars Ingebrigtsen, 2022/05/13
- bug#55395: What does (1 2 3 . #2) mean?, Stefan Monnier, 2022/05/13
- bug#55395: What does (1 2 3 . #2) mean?, Lars Ingebrigtsen, 2022/05/13
- bug#55395: What does (1 2 3 . #2) mean?, Mattias Engdegård, 2022/05/13
- bug#55395: What does (1 2 3 . #2) mean?, Stefan Monnier, 2022/05/14
- bug#55395: What does (1 2 3 . #2) mean?, Mattias Engdegård, 2022/05/18
- bug#55395: What does (1 2 3 . #2) mean?, Stefan Monnier, 2022/05/18
- bug#55395: What does (1 2 3 . #2) mean?, Mattias Engdegård, 2022/05/23
bug#55395: What does (1 2 3 . #2) mean?, Andreas Schwab, 2022/05/13