Alexander Burger <a...@software-lab.de> writes:

Hi Alex,

>> In PicoLisp, the cdr of a circular list always seems to point to the
>> beginning of the list.
>
> Yes, as far as the directy reader/printer syntax is concerned. But you
> can easily specify a list where the last cell points to some other
> cell.
>
> For example, in this list of 6 cells the last 3 cells form a circular
> list:
>
>    : (1 2 3 . (4 5 6 .))
>    -> (1 2 3 . (4 5 6 .))
>    :  (more @)          
>    1         
>    2
>    3
>    4
>    5
>    6
>    4
>    5
>    6
>    4
>    ...
>
> Personally, I find syntax much simpler and cleaner than using labels.

I see, and indeed it looks clean and nice.

> What cannot be directly expressed, however, is a pointer into a sublist
> of the current list (or even into arbitrary other lists).
>
> Here you have to resort to "labels", by setting a variable to the
> (sub)list in question:
>
>    : (1 2 (3 4 . `(setq "n1" (5 6))) 7 . `"n1")
>    -> (1 2 (3 4 5 6) 7 5 6)
>
>    : (1 2 3 ~(setq "n2" (4 5 6)))
>    -> (1 2 3 4 5 6)
>    : (7 8 ~"n2")                 
>    -> (7 8 4 5 6)

Does not look as clean and nice as before, but what counts - it can be
done, great. 

Thanks again, I'm glad I asked, it would have taken me forever to
(probably not) figure this out. 

-- 
cheers,
Thorsten

-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to