[toronto-lisp] OCaml
Abram Hindle
abram.hindle at softwareprocess.es
Fri Jan 14 01:04:07 UTC 2011
On 01/13/2011 04:23 PM, D. J. Penton wrote:
> Michael: You have hit the nail right on the head. Basically my
> complaint is about syntax, and perhaps also about too many features
> (not sure on the features issue). The syntax seems ad hoc and a
> little cryptic. Perhaps it is no coincidence that I have also always
> disliked C++.
The let syntax is mathetmatical. You're supposed to read it out.
So if I say let x be a value in the set I convert that into ocaml:
let x = choose set in
so let x equal a value IN
then the rest follows.
So what I recommend about syntax is avoid semi colons.
> I will admit that once I am past the worst part of the learning curve
> I'll probably wonder why I ever griped about OCaml. Who knows, maybe
> it will become my favourite language some day. And I really do accept
> that arguing about the merits of programming languages is like
> arguing about whether asparagus tastes good or not: it's largely a
> subjective judgment.
>
> But for now I am annoyed to be back in the position of looking at
> some syntactic construct in OCaml and asking myself "what the hell is
> this meant to do?" My irritation is probably amplified by having
> tackled Lisp and Scheme over the past year and a half. I adore these
> latter languages because there is so little syntactic stuff to wade
> through. Unless someone has gone berserk with bizarre macros, I spend
> very little time mentally unravelling the syntax of CL when I try to
> understand some code. Scheme and CL allow me to jump right to being
> baffled at level much deeper than the syntax!
Another problem with ML is that the module structure is pretty hairy. It
works great but it takes a while to really get it.
> As I suggested in my original post, some of my problems are the
> result of using a poorly written (IMHO) book. I grabbed a better one
> today. Maybe it will help me see the OCaml light at the end of the
> tunnel.
OCaml has bad syntax, but what it does have is great static typing,
pattern matching and performance.
So if you have a problem in OCaml and it doesn't make sense, add more
types! Type inference is your friend!
An example is mixing indices (ints), identifiers (ints), and counts (ints).
If you made 3 seperate types:
type index = Index of int
type ident = Identifier of int
type count = Count of int
Then when you type check you won't mistake an Index for an Identifier
and you won't mistake a Count for an int.
I've run into this with data versus frequency count.
type data = Data of int array
type freq = Freq of int array
It is very easy to confuse two arrays of integers, until they have
different types :)
Basically you'll like ocaml if you have to write parse trees. It's great
for trees :)
abram
> End of rant.
>
> - Dave - _______________________________________________ toronto-lisp
> mailing list toronto-lisp at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/toronto-lisp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 262 bytes
Desc: OpenPGP digital signature
URL: <https://mailman.common-lisp.net/pipermail/toronto-lisp/attachments/20110113/2e4cdc4f/attachment.sig>
More information about the toronto-lisp
mailing list