Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
[Caml-list] ocaml killer
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2004-01-30 (20:44)
From: skaller <skaller@t...>
Subject: Re: [Caml-list] ocaml and concurrency
On Fri, 2004-01-30 at 17:52, Brian Hurt wrote:
> On Fri, 30 Jan 2004, Martin Berger wrote:
> > > Perhaps because you're a type theorist? <g>
> > 
> > being a type theorist has many disadvantages ...
> > 
> > > C not only *does* have function types, it has
> > > first class function values just like ML does.
> > 
> > well, i'm not so sure about this for two reasons.
> Technically, he's correct.  What C doesn't have is partial function 
> application, 

If by that you mean currying .. well, of course C has that.
If a function returns a function which returns a function
you can curry exactly like in ML :-)

> which makes having functional types much less worthwhile- 
> it's impossible for a function type to also contain state.  

Almost, but not quite true:

	int f(int x) {
		static int y = x;
		y = y + x;
		return x;

clearly does contain state.. the function isn't
re-entrant though (which means merely not
thread safe here since it manifestly isn't recursive).

However it is true in Haskell and any purely
functional Ocaml code .. they really cannot contain
any state :-)

Indeed, one can go further and say that ML functions
are a lie: if you consider:

	let f x = 
		let g y = y + x in g
		let g1 = f 1
		and g2 = f 2

then the two g's are distinction functions, they're
NOT the 'g' defined in f, which in fact is NOT
a function at all, merely an abstraction (of course
g1 and g2 are functions .. :)

John Max Skaller,
snail:25/85c Wigram Rd, Glebe, NSW 2037, Australia.
voice:61-2-9660-0850. Checkout Felix:

To unsubscribe, mail Archives:
Bug reports: FAQ:
Beginner's list: