On Thu, 2009-12-10 at 11:54 +1300, Richard O'Keefe wrote: > On Dec 9, 2009, at 10:54 PM, Maciej Piechotka wrote: > > You mean to parse a - b differently then a-b? You don't have the > > problem > > in LISP as AFAIR you use (- a b) but in Haskell it would be a problem. > > It's a problem that COBOL solved a long time ago: > COMPUTE INCREASED-DEBT = TOTAL-EXPENSES - AFTER-TAX-INCOME. > Haskell already has this problem with ".", where we generally need > to put spaces around "." with the meaning "composition" and not > put spaces around other uses. >
Well. http://en.wikipedia.org/wiki/Backward_compatibility About '.' - there are two contexts in which it is used: - Hierarchical modules: In which first letters (except maybe last one) are capitalized - Composition: In which first letters are not capitalized In combination of those I belive there is no disambiguoty since the lower case words functions as terminators. While it can be discussed as an error of the past it is not the problem that spaces creates problems: ghci> :t head . tail head . tail :: [a] -> a ghci> :t head .tail head .tail :: [a] -> a ghci> :t head.tail head.tail :: [a] -> a Or even: ghci> :t Data.IORef.readIORef.System.IO.Unsafe.unsafePerformIO.Data.IORef.newIORef Data.IORef.readIORef.System.IO.Unsafe.unsafePerformIO.Data.IORef.newIORef :: a -> IO a Even in hugs: Hugs> :t head.tail head . tail :: [a] -> a Hugs> :t head . tail head . tail :: [a] -> a Hugs> :t head .tail head . tail :: [a] -> a Hugs> :t head.tail head . tail :: [a] -> a Main> :t Data.IORef.readIORef.System.IO.Unsafe.unsafePerformIO.Data.IORef.newIORef readIORef . unsafePerformIO . newIORef :: a -> IO a I would question sanity of using . here but it is not the case that we get flood of posts why adding/removing space next to ./- causes any problems. People with practically any programmin backround would expect a-b be equivalent to a - b. Sometimes this 2 spaces are needed to fit in 72/80 columns. > This is something someone could easily try out by writing a trivial > preprocessor to convert hyphens with letters on each side to > underscores. See how it works. > > Given the amazinglyUglyAndUnreadably baStudlyCaps namingStyle that > went into Haskell forNoApparentReasonThatIHaveEverHeardOf, it might > be nice to have a wee preprocessor that turned > <lower case letter one> _ <lower case letter two> > into <lower case letter one> <Upper case letter two> > > so that I could write take_while and Haskell could see takeWhile. > [I'm writing this in MacOS X Mail. "takeWhile" is underlined in > red as a spelling mistake, "take_while" is not. Maybe they know > something...] > > Here is such a preprocessor. This is meant for people to try out. > I don't claim that it's perfect, it's just a quick hack. Personally I don't have any strong feelings about conventions as long as they are consistent within one language. Camel cases are no more uncommon then the underscore and they saved space in the past (ok. now it does not matter) and hyphen is very rarly used (to not have problem with minus). For example: - Java - camel cases both in classes and methods (convention very similar to Haskell) - .Net - the same (but first letter of method is capitalized) - Python - underscore - C/C++ - Veries Regards _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe