[bitc-dev] White space
Ben Kloosterman
bklooste at gmail.com
Mon Aug 9 20:58:44 PDT 2010
Disclosure My functional experience is limited to Lisp and Ocaml and the
learning curve was steep...and hence my comments :-)
>Often, succinctness breeds legibility. By reducing syntactic overhead,
>readers can focus on the real content of the code.
In C like languages this is the case but in functional languages the symbols
are key to the logic eg Ocaml
map and match are ok but
:: , --> , and |> etc are key to the logic and don't read easily or
naturally.
>In functional languages an additional reason is that high levels of
>abstraction often mean that there is no good "English" name for things.
>For example, the (>>=) operator in Haskell. It actually does have a
>pronouncable name, but the name isn't enlightening as to the function's
>purpose or meaning. Because it's so general, just calling it (>>=) is
>better than trying to make something up. As a good counterexample,
>attempting to Englishify things as with Haskell's 'mempty' and 'mappend'
>often leads to confusion in learning what the functions mean (I'll give
>you a hint: appending is only one small and very particular
>specialization of 'mappend'). We're currently in the process of trying
>to fix that one because of how many newcomers get confused by it.
For >>= to 90% of the population this means greater than and greater than
or equal then or to a C programmer >>= is shift and assign. In other words
the mathematical symbols already have meaning in peoples head and worse in
functional languages the pre-existing meaning has nothing to do with what
they do.
Take the C# example they didn't choose enumerate they chose foreach and not
just for brevity sure there are some concepts not covered like enumerating
over null , and the fact the collection needs to be IEnumerable but at a
few millisecond glance you know what's going on . They also use foreach with
a predicate as a parameter instead of map on collections etc Note while in
each case the definition is not precise it roughly conveys what is going on.
>In OCaml, they have a lot of ad-hoc mechanisms for succinctness because
>the basic syntax is so verbose (by FP standards). A lot of other
>languages (both functional and not) have similar problems. To pick
>another functional example, the Lisp abbreviations cdar, cddar, cadr,...
>stem from the excessive verbosity due to not having pattern matching.
>But you have plenty of non-functional languages that are also obsessed
>with succinctness. E.g., Perl. And, frankly, Awk and Sed aren't exactly
>legible either.
>
The thing is most of these operators just end up abbreviations for runtime
methods ( which users can shorten anyway via operator overloading if they
desire) , especially with modern auto completing IDE's isn't it better to
use the function name for all but the most common shortcuts ? Im a big fan
of fewer keywords..
In the case of vectors since the data type is known isn't first , last and
map ( or foreach) more readable and hence easy to learn ? While I do agree
a experienced user will see it quickly , the number 1 issue for a language
is adoption and hence I would prioritise them. Any modern language with c
class performance will do well in the market place , make it easy for the
most wide spread adoption.
>(Full disclosure: I was an avid Perl junkie prior to discovering Haskell
>:)
>
>--
>Live well,
>~wren
>_______________________________________________
>bitc-dev mailing list
>bitc-dev at coyotos.org
>http://www.coyotos.org/mailman/listinfo/bitc-dev
>No virus found in this incoming message.
>Checked by AVG - www.avg.com
>Version: 9.0.851 / Virus Database: 271.1.1/3060 - Release Date: 08/10/10
>02:35:00
More information about the bitc-dev
mailing list