Browse thread
[Caml-list] Understanding why Ocaml doesn't support operator overloading.
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | William Lovas <wlovas@s...> |
| Subject: | Re: [Caml-list] Understanding why Ocaml doesn't support operator overloading. |
On Sun, Dec 01, 2002 at 06:30:55PM +0100, Pierre Weis wrote: > > As an exercise, try to write a useful function that operates > > on just 'a's -- you'll find it a challenge :) (in fact, i think there's a > > theorem in one of Philip Wadler's papers that says the *only* function of > > type 'a -> 'a in a purely functional language is the identity function). > > This is a theorem that was stated about $\lambda$-calculus long time > ago, way before Phil Wadler's papers, back to Reynolds as I remember. That's probably true -- i just happened to remember it from a Wadler paper. > The challenge you proposed is not so difficult in Caml. You can easily > define functions that operates on justs'a's, or even just return plain > 'a's! > > Objective Caml version 3.06+18 (2002-11-07) > > # raise;; > - : exn -> 'a = <fun> > # ignore;; > - : 'a -> unit = <fun> Mmm, this certainly is a useful use of polymorphism without parametrized, types, but the challenge i was trying to propose was more to the spirit of the original 'a -> 'a theorem: by "useful function that operates on just 'a's", what i meant was essentially "a non-trivial function of type 'a -> 'a", which is (i hope) a significantly more difficult challenge :) Polymorphism as used in `raise' and `ignore' strikes me as more language magic than anything else -- although useful in practice, i have a strong intuition that from a certain theoretical perspective, namely that of purely functional languages, they're not so interesting. So, to clarify, while they are practical uses of polymorphism, they're not what i had in mind when i wrote the above paragraph. Thanks for the corrections and pointers! cheers, William ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners