logoalt Hacker News

tkrnyesterday at 7:18 PM2 repliesview on HN

I agree that there is maybe too much potential for confusion with that, but is the dot operator (or read syntax?) actually used that much these days?

Personally I have mostly sometimes used it with Emacs Lisp, but in general relying too much on plain cons cells and cadring down the cars of their cddars feels like a code smell to me and if I need a pair I can always just use cons? As the (only, I think?) infix operator in traditional lisps it has always felt extra-ordinarily useless to me (outside of Schemes use of it lambda lists), but maybe I'm just missing something.


Replies

wimlyesterday at 9:11 PM

I think you need something like it in order to have a print representation of a cons cell whose cdr is not a cons-or-nil. And it's nice if your print representations are readable.

shaknayesterday at 9:05 PM

Pairs are used by about 3-quarters of the standard library of Scheme, so I really would not consider its use to be a code smell.

You should be using the pairs when using make-hash, for example.

Cons also doesn't always return a pair. Its main purpose is for prepending to a list. Only when "the second argument is not empty and not itself produced by cons" does it produce a pair.

Which means '(a . b) is clearer code in intent, than (cons a b).

show 1 reply