From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id BAA07060; Fri, 30 Jan 2004 01:06:29 +0100 (MET) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id BAA09724 for ; Fri, 30 Jan 2004 01:06:27 +0100 (MET) Received: from mail.dcs.qmul.ac.uk (vicar.dcs.qmul.ac.uk [138.37.88.163]) by nez-perce.inria.fr (8.11.1/8.11.1) with ESMTP id i0U06Rv08721 for ; Fri, 30 Jan 2004 01:06:27 +0100 (MET) Received: from xenografia.plus.com ([212.159.85.26] helo=dcs.qmul.ac.uk) by mail.dcs.qmul.ac.uk with asmtp (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.30) id 1AmMAx-000329-5g; Fri, 30 Jan 2004 00:06:23 +0000 Message-ID: <40199FE0.1070100@dcs.qmul.ac.uk> Date: Fri, 30 Jan 2004 00:05:52 +0000 From: Martin Berger User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4.1) Gecko/20031114 X-Accept-Language: en, en-us MIME-Version: 1.0 To: skaller@tpg.com.au CC: The Trade Subject: Re: [Caml-list] ocaml and concurrency References: <20040127063230.GA12482@inv_machine> <200401282326.i0SNQntl004612@bismarck-chet.watson.ibm.com> <97908806-5238-11D8-8975-000393B8133A@wetware.com> <4018E282.2040404@dcs.qmul.ac.uk> <401930C6.8060907@dcs.qmul.ac.uk> <40193B59.9050700@ps.uni-sb.de> <40194644.9060308@dcs.qmul.ac.uk> <1075405078.3632.106.camel@localhost.localdomain> In-Reply-To: <1075405078.3632.106.camel@localhost.localdomain> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Auth-User: martinb X-clamav-result: clean (1AmMAx-000329-5g) X-Loop: caml-list@inria.fr X-Spam: no; 0.00; caml-list:01 theorist:01 theorist:01 pointers:01 pointers:01 ocaml:01 null:01 precisely:02 pointer:03 variable:03 abstract:03 types:03 argue:05 maybe:06 type:07 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk > Perhaps because you're a type theorist? 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. firstly, NULL-pointers (i'm assuming that in C/C++ function pointers can be NULL, though it's been too long for me to remember precisely). that means, you have values of function pointer type that act ... well ... in interesting ways. from that point of view, function pointers T (*)(A) correspond more to a sum type (A --> T) + Error secondly, there's the "location restriction". maybe it's an issue of taste, but one might argue that for function really being first class -- as in lambda calculi, whenever we have a piece of code C with free variable x_1 of type T_1, ..., x_n of type T_n, then we can abstract and form (lambda x_1 ... x_n . C), as we can in ML, but not in C/Java/C++. martin ------------------- 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