4 ms·
`list[0]` and `list[1:]`? Almost any language has convenient ways to get the first element of a sequence, and all but the first, even C, this is not unusual at
by Blikkentrekker 6y ago
`list[0]` and `list[1:]`?
Almost any language has convenient ways to get the first element of a sequence, and all but the first, even C, this is not unusual at all to lisps.
- kazinator 6y agoBut car and cdr in Lisp and Scheme only retrieve values; they do not copy any aggregate object. When was the last time you saw recursion on list[0] and list[1:] in a production Python program, or even a tutorial?
- Blikkentrekker 6y ago> But car and cdr in Lisp and Scheme only retrieve values; they do not copy any aggregate object. That's because lists are mutable in Python. Do it on tuples and they retrieve and do not copy. Of course in C, one can simply do `ptr[0]` or `ptr+1` which also only retrieves. > When was the last time you saw recursion on list[0] and list[1:] in a production Python program, or even a tutorial? That is purely a difference of culture, not of what the language facilities, both Scheme and Python allow either style.
- lhjn 6y agoLists are mutable in CL
- Blikkentrekker 6y agoThat would be another thing then where the two Lisps are very far apart, and Python is closer to one of them. Lists are not mutable in Clojure, they are “technically mutable” in R6RS Scheme, but it requires opening up a specific module that many Scheme implementations do not even provide unless compiled with specific flags.