| The only problem is that the car and cdr are not the first and rest of anything, when they are just used for tree structure. Only when the tree structure conforms to certain conventions and intent of representing a list is the car "first" and the cdr "rest". So of course those names are fine for nested lists: (ff '((a b c) d)): the "first of the first". But in, say, an assoc list ((a . 3)) 3 is not the "rest" of anything; it's the value of the key a. The proposed functions go with the first and rest functions, rather than replace the cddr ones. Now let's talk about something else: the order. In caddr, the order is just a condensation of the nested application of (car (cdr (cdr ...))), in the same order: it's easy to convert between the two, both actually and mentally. However, in left to right threading syntax, it's backwards: (flow value car car cdr (+ 1))
corresponds to (+ 1 (cdr (car (car value))))
so it condenses like (flow value cdaar (+ 1))
You can see someone wanting a variant which has the letters in the opposite order.With f and r functions, you can do: (flow value f f r (+ 1))
which is almost the backwards "ffr" you might want. |