[erlang-questions] Bug ?!
Richard A. O'Keefe
Fri Oct 6 00:14:04 CEST 2006
> It's just that I have painful memories of ",.." in DEC-10 Prolog.
Richard Carlsson <> asked:
Care to elaborate? (I've been fiddling with list syntax
variations, and I was thinking that "[x,y,..]" would be an
improvement on "[x,y|_]", on several levels: less prone to
undetected typo mistakes, easier to write, and easier to read.)
Problem 1: is ,.. one token or two?
(a) if you make it one token, then you have all sorts of problems:
(1) ,.. is one token but in [.,.,.] ,. is two tokens, and in
[...,...,...] ,... is two tokens again, and of course ,.2 had
better be comma nought-point-two.
(2) careful writers who put spaces after commas want to put a space
after this one, [a, b, .. c]
(b) if you make it two tokens, then you hve other problems:
(1) if you can have a space there, why not a newline? why not a comment?
So X = [1, 2, 3,
% this can go on for some time
(2) you have a token which would otherwise belong to an established
class of tokens (including +, ++, .+, --, -, .-, ..., ...., ....)
but which can only occur in one place and then doesn't mean what
Problem 2: ,.. just plain doesn't work the way people expect.
They expect to write
[..,X,Y] = L % oops, only allowed at end
[X,Y,..] = L % oops, something must follow ..
[X,Y..Z] = L % oops, a comma must precede ..
[X,Y,..,Z] = L % oops, a comma may not follow ..
[X,Y,..Z] = L % !!OOPS!! I was expecting Z to be the
% last element of L, but it's a tail!
In fact, for someone fluent in Latin-based writing systems that make
use of ellipses, ,.. is appallingly HARD to get right. In particular,
your [x,y,..] is one of the cases that wasn't allowed, any more than
[x,y|_] was allowed.
When ,.. was removed from Prolog, no-one was sorry to see it go.
Given that . has so many other uses, I would expect
that ,.. would be MORE prone to mistakes.
Given the conflicts between ,.. and common practice in natural language,
and the absence of such conflicts between | and natural language,
I would expect ,.. to be HARDER to read.
There's no enemy so dangerous as a false friend.
More information about the erlang-questions