
Beg your pardon, Marcin
But they are compatible because there is one most universally accepted interpretation of a tab (move to the next multiple of 8 columns). Any other interpretation hampers portability and should be avoided.
All these problems are caused by people who use a different tab size than
No. It didn't hamper portability with C, Java, Perl or any other *nix stuff since more than 30 years except with COBOL, Python (?) and Haskell, where COBOL is excused due to its origin in the punch card era. The others are not excused, since they are yet to be established newcomers. The wise new language designer should obey the unix rule "whitespace does not matter" instead to expect that the world change their .exrc (by the way, according to ls -l my .exrc is several years older than Haskell) to accomodate. 8. They used to do so, since Jan 1 1970 00:00 GMT, without real problems apart from pure formatting problems. The formatting problems will not go away with the advent of Haskell. But 2 new problems suddenly arise: syntax error due to formatting and formatting dependend semantic. But even if it were so and you could expand a tab to 8 columns only, there is still the tools problem. No meaningful diff -b on Haskell source. Almost every language tool has to be a haskell parser, etc. etc If you can't or won't see that, fine. But don't expect Haskell to be too successfull in the professional software engeneering business very soon. Though, it was my impression, that the FP community would like to promote their ideas of how to make more reliable, better software to more people. This "obey the 8 column rule, use emacs, change your .exrc or get lost" attitude is less than helpful, at least in my opinion. Cause it's FP that matters, not the layout thing which has absolutely nothing to do with FP. (Anyway, I still love Haskell{;}) Cheers, Ingo

"Ingo" == Ingo Wechsung
writes:
Ingo> Or, to turn it another way: "What you see is not necessarily Ingo> what you get". This may be fine for ad hoc scripts that one Ingo> examines in hugs. So is that the language's fault (because of what you get) or the editor's fault (because of what you see)? I'm guessing that what you see and what you get have *never* been identical for you, but you didn't care much, because they were indistinguishable. Now, with Haskell, that difference has become significant. And it's a (perhaps minor) problem. What is the cause of the problem? 1) Haskell makes the difference between what you see and what you get significant, it should not be that way 2) Your editor does not let you see what you're going to get, it should not be that way If you see the source of the problem as 1, you will likely choose the braces-semicolon route, or unfortunately (for you ;) ) not use Haskell. If you see it as 2, you will decide to reconfigure the editor you use for programming so that what you see *is* what you get. Ingo> They used to do so, since Jan 1 1970 00:00 GMT, without real Ingo> problems apart from pure formatting problems. The formatting Ingo> problems will not go away with the advent of Haskell. But 2 Ingo> new problems suddenly arise: syntax error due to formatting Ingo> and formatting dependend semantic. And in exchange, two old problems suddenly went away: syntax errors due to incorrect bracketing or termination/separation, and formatting that was *not* significant (code that was formatted as if it did one thing but actually did another). -- Kevin S. Millikin Architecture Technology Corporation Research Scientist Specialists in Computer Architecture (952)829-5864 x. 162 http://www.atcorp.com

On Fri, 6 Dec 2002, Ingo Wechsung wrote:
Beg your pardon, Marcin
But they are compatible because there is one most universally accepted interpretation of a tab (move to the next multiple of 8 columns). Any other interpretation hampers portability and should be avoided.
No. It didn't hamper portability with C, Java, Perl or any other *nix stuff since more than 30 years except with COBOL, Python (?) and Haskell, where COBOL is excused due to its origin in the punch card era. The others are not excused, since they are yet to be established newcomers. The wise new language designer should obey the unix rule "whitespace does not matter" instead to expect that the world change their .exrc (by the way, according to ls -l my .exrc is several years older than Haskell) to accomodate.
Likewise, the initial-uppercase = typename/constructor, initial lowercase = function/argument name has absolutely got to go because -- and I'm afraid I haven't been able to track down a definitive reference -- (AFAIK all versions of) the really old language Pascal has the rule that you don't distinguish case at all in identifiers (see e.g, http://www.marcocantu.com/epascal/English/ch02code.htm), and loads of people used Pascal even up to my undergrad degree in 1993. Likewise, all the work that's been done/going to be done to allow Haskell programs to be written using full unicode characters (including decisions about how `wide' a character is so that the layout rule can still be applied) are clearly wrong because there's the unix rule that characters are `8 bit ASCII codes'. And the absolute killer is the strong module interface which allows the export of only certain entities from a module, when everyone knows the C law that if you can find a prototype for a function (even if it's just retyped in the calling .c file, not coming from the module at all) then you access it regardless of the module writers desires. In every case where you've got a new idea which conflicts with practices from the past, you've got to decide whether the benefit derived from using the new idea outweighs the difficulties caused. Virtually all of the people who actually use Haskell would say (I believe :-) ) that they feel the ease of reading and avoidance of the occasions where `explicit delimiters' say one thing but the programmer indentation says another are good enough benefits to make this the `primary mode' of talking about and using Haskell. (Remember if you dislike this you have the ability to use the explicit delimiter syntax). You seem to be saying that layout should be banished because there's a set of people (of undetermined size) who would like Haskell were they to encounter it, except for that darned optional layout rule interefering with the ability to choose a personal interpretation for what the ASCII tab character should mean. [snip]
But even if it were so and you could expand a tab to 8 columns only, there is still the tools problem. No meaningful diff -b on Haskell source.
What I really want is the -renameAlphaNumStrings option to diff which renames (in a consistent, cross file way) all alphanumeric strings to canonical values in some way and then outputs lines which only differ after renaming. After all, if someone has simply renamed the variables in a local function the semantics of the function hasn't changed so you don't need to worry about it for diff purposes. I mean, a process like that has got to be even better than one which takes advantage of the fact that in some languages various combinations of ASCII characters do not affect the program represented by a given file. The point I'm trying to make here and above is that you're used to working in a particular way using rules that apply to what you've worked with before -- and there are facilities to enable you to work that way in Haskell for people who want to -- but that you seem to object to there even exists a different way that is used and really liked by a most of the people who work with Haskell. I at least think the layout rule is very valuable for the two reasons I mentioned above, but I don't clamour about the `problem of the explicit syntax for Haskell that means you can write programs where the explicit syntax says one thing to the compiler and the layout suggests something else to the human reader'; let those who prefer that way do it without any hectoring from me. [snip] ___cheers,_dave_________________________________________________________ www.cs.bris.ac.uk/~tweed/ | `It's no good going home to practise email:tweed@cs.bris.ac.uk | a Special Outdoor Song which Has To Be work tel:(0117) 954-5250 | Sung In The Snow' -- Winnie the Pooh

G'day all. On Fri, Dec 06, 2002 at 05:40:28PM +0100, Ingo Wechsung wrote:
No. It didn't hamper portability with C, Java, Perl or any other *nix stuff since more than 30 years except with COBOL, Python (?) and Haskell, [...]
Add to that: Fortran, Occam and Makefiles. There's probably also a lot of application-specific files (like Makefiles) that others know of. Cheers, Andrew Bromage

["D. Tweed"
In every case where you've got a new idea which conflicts with practices from the past, you've got to decide whether the benefit derived from using the new idea outweighs the difficulties caused.
please see my previous post... it's a very fine line... :)
You seem to be saying that layout should be banished because there's a set of people (of undetermined size) who would like Haskell were they to encounter it, except for that darned optional layout rule interefering with the ability to choose a personal interpretation for what the ASCII tab character should mean.
please do not discount this argument. the group of people who are, for one reason or another, not members of the haskell community is not a vocal group, nor are they well represented. however, they are the majority. if there is interest in promoting haskell among those who currently don't use it, which there seems to be, some time needs to be spent either soliciting opinions from people outside the haskell community, or guessing what those opinions would be. clearly, it's a tough thing to do well. many of the opinions of people who aren't using haskell now may not be particularly relevant to the future direction of the language. however, it they're completely ignored, the language may never be accepted. this is the dilemma of all software designers, and only those who have no need for actual users can afford to ignore it. m -- matt hellige matt@immute.net http://matt.immute.net

I think I was a bit inflamatory in my previous post because I was fuming about something else in my life; I stand by the factual content of what I said but wish I'd phrased it much less confrontationally. On Mon, 9 Dec 2002, matt hellige wrote: [snip]
You seem to be saying that layout should be banished because there's a set of people (of undetermined size) who would like Haskell were they to encounter it, except for that darned optional layout rule interefering with the ability to choose a personal interpretation for what the ASCII tab character should mean.
please do not discount this argument. the group of people who are, for one reason or another, not members of the haskell community is not a vocal group, nor are they well represented. however, they are the majority. if there is interest in promoting haskell among those who currently don't use it, which there seems to be, some time needs to be spent either soliciting opinions from people outside the haskell community, or guessing what those opinions would be.
The point I was trying to make was that I'm not sure how big the block of poeple for whom the big problem is layout. I've supervised lots of undergraduate labs and found many people who absolutely don't like Haskell for many reasons, but I can't say I've encountered anyone for whom the layout rule was part of the reason for dislike; the biggest one was always that they never seemed to develop a mental model of programming functionally rather than in the procedural, variable based way they were used to. (Almost everyone had a steep learning curve deciphering how error messages involving missing semi-colons map to bad layout, but after a while it wasn't the layout that they gravitate to as the thing they have issues with.) I'd just about be able to accept elimination of the layout rule syntax for Haskell if there was evidence that it's a significant problem that stops Haskell being adopted. But given that I feel layout is a _really_ good thing this has to be _established in a meaningful way_, not just plucked out of the air on the basis of a a couple of opinions.
clearly, it's a tough thing to do well. many of the opinions of people who aren't using haskell now may not be particularly relevant to the future direction of the language. however, it they're completely ignored, the language may never be accepted. this is the dilemma of all software designers, and only those who have no need for actual users can afford to ignore it.
Certainly (with the slight proviso that I'd specify `informed, considered opinions'). ___cheers,_dave_________________________________________________________ www.cs.bris.ac.uk/~tweed/ | `It's no good going home to practise email:tweed@cs.bris.ac.uk | a Special Outdoor Song which Has To Be work tel:(0117) 954-5250 | Sung In The Snow' -- Winnie the Pooh
participants (5)
-
Andrew J Bromage
-
D. Tweed
-
Ingo Wechsung
-
Kevin S. Millikin
-
matt hellige