Version française
Home     About     Download     Resources     Contact us    
Browse thread
Estimating the size of the ocaml community
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Thomas Fischbacher <Thomas.Fischbacher@P...>
Subject: Re: [Caml-list] The boon of static type checking

On Sun, 6 Feb 2005, Erik de Castro Lopo wrote:

> > (5) Availability of useful libraries.
> 
> I would add:
> 
>   (6) Its far harder to shoot yourself in the foot using O'caml than
>       it is in C or C++. In particular, in O'caml comapred to C++, if 
>       it compiles, its far more likely to work.

Well, yes, but these - I suppose - are more or less completely out of 
discussion here. :-)

> which holds Lisp as being the closest approximation to a superset of all
> other languages. The main feature of Lisp which supposed puts it in this 
> position is Lisp macros. I also hear that higher order functions are not
> used as much in Lisp as they are in O'caml and that this is because of
> Lisp's more lax type checking.
> 
> Drawing a long bow here, I would postulate that a language with O'caml's
> HOF and strict typing and Lisp like macros, might be able to knock Lisp
> off its perch. Maybe Nemerle (not that I've used it):

What if I added optional(!) strict typing to lisp?

Concerning HOF, I don't have a clear picture what a nice way to have 
something like that for lisp would be. Implementation wise, one would not 
want to map e.g.

fun x y -> x

to

fun x -> fun y -> y

that is, (lambda (x) (lambda (y) x)),

but rather have currying work as a certain form of partial application. 
This might interfere somewhat badly with lisp's idea of optional and 
keyword args, 

>     http://www.nemerle.org/

Oh. Great. Another language. Another occasion to repeat lots of dumb 
mistakes, another reason to re-invent a lot of wheels.

-- 
regards,               tf@cip.physik.uni-muenchen.de              (o_
 Thomas Fischbacher -  http://www.cip.physik.uni-muenchen.de/~tf  //\
(lambda (n) ((lambda (p q r) (p p q r)) (lambda (g x y)           V_/_
(if (= x 0) y (g g (- x 1) (* x y)))) n 1))                  (Debian GNU)