From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by walapai.inria.fr (8.13.6/8.13.6) with ESMTP id p06Dk37R007721 for ; Thu, 6 Jan 2011 14:46:03 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmkBACpWJU1CbwQZkWdsb2JhbACWCo4PFQEBAQEHDQoHEQQgvS8FhUyEa4Yi X-IronPort-AV: E=Sophos;i="4.60,283,1291590000"; d="scan'208";a="84542693" Received: from out1.smtp.messagingengine.com ([66.111.4.25]) by mail4-smtp-sop.national.inria.fr with ESMTP/TLS/ADH-AES256-SHA; 06 Jan 2011 14:45:57 +0100 Received: from compute3.internal (compute3.nyi.mail.srv.osa [10.202.2.43]) by gateway1.messagingengine.com (Postfix) with ESMTP id 71A6020D00; Thu, 6 Jan 2011 08:45:56 -0500 (EST) Received: from frontend2.messagingengine.com ([10.202.2.161]) by compute3.internal (MEProxy); Thu, 06 Jan 2011 08:45:56 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=messagingengine.com; h=date:from:to:cc:subject:message-id:mime-version:content-type:content-transfer-encoding; s=smtpout; bh=JNhx5EJ8xSPd6MseIxbZ3ybzwXI=; b=R7XBLuQ5Xd3aziK+Ypa3Ls5DL940eWZS/Jin0rA7uswXOR9GCP3zunfn2eG2FifZlafiQavESx8npKBu+dWmpV708+xnnN/lpgpfNkfLoYOPMsQZKYWlj7MRsmpxeY833NAUxQ3n44rwF6Vr76klppd2lDN8cK0C/9CJW0rENt0= X-Sasl-enc: 6PiyyHsGOfJwfDQwPjqCkIqJVZysrLFQppcobYJ7KPiu 1294321556 Received: from localhost (user-12hdvta.cable.mindspring.com [69.22.255.170]) by mail.messagingengine.com (Postfix) with ESMTPSA id 13841441132; Thu, 6 Jan 2011 08:45:56 -0500 (EST) Date: Thu, 6 Jan 2011 08:48:08 -0500 From: Jim Pryor To: caml-list@inria.fr Cc: Chris Barker , Ken Shan Message-ID: <20110106134808.GC12229@vaio.hsd1.pa.comcast.net> Mail-Followup-To: caml-list@inria.fr, Chris Barker , Ken Shan MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit User-Agent: Mutt/1.5.21 (2010-09-15) Subject: [Caml-list] Ocaml-based web intro to functional programming Chris Barker (NYU Linguistics) and I (Jim Pryor, NYU Philosophy) just finished teaching a grad seminar on "What Philosophers and Linguists Can Learn From Theoretical Computer Science But Didn't Know To Ask". It was basically an intro to functional programming oriented to our fields, most of whose audience had done no programming before, but had some background in formal semantics or philosophical logic. They weren't there to learn programming, but to learn how reasoning about types, effects, monads, continuations, and so on would be useful to philosophers and linguists. We had to teach them how to program along the way, so that they could understand what all those things were. We moved back and forth between untyped lambda calculus, Scheme, a bit of System F, OCaml, and a bit of Haskell. But when working in typed languages, we primarily used OCaml. We were very happy with how the seminar worked out, and it was a lot of fun. Along the way, we developed a pretty substantial website, housed at . We hope to continue developing and refining this. Some highlights of the website: a pretty good Javascript lambda reducer, a hefty library of arithmetic and list operations in untyped lambda calculus, a monad + monad transformer library in OCaml, a walk-through of how to implement a classic paper from the dynamic semantics literature using monads, an explanation of monads in category theory and how that correlates with their use in functional programming, a bunch of exposition and exercises, and lots of links. At several places we had very useful input from Chung-chieh Shan, Oleg Kiselyov, and Wren Thornton. (Some of their generous and useful feedback has yet to be folded in.) I'm posting this pointer to the website for two reasons: first of all, we'd be very glad for feedback from others in the broader functional programming community. (Our website is generated by ikiwiki, but it's not in fact a wiki. However, we'd be glad to incorporate contributions.) Second, and primarily, we hope the material there might be useful to others learning these fundamentals. If you agree, you may want to point them to it. -- Jim Pryor profjim@jimpryor.net