From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by yquem.inria.fr (Postfix) with ESMTP id 85F0CBBBB for ; Thu, 30 Mar 2006 01:01:36 +0200 (CEST) Received: from mailx.valdosta.edu (mailx.valdosta.edu [168.18.130.251]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id k2TN1Yeh020755 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO) for ; Thu, 30 Mar 2006 01:01:36 +0200 Received: from blazemail.valdosta.edu (blazemail.valdosta.edu [168.18.130.208]) by mailx.valdosta.edu (8.13.6/8.13.6) with ESMTP id k2TN1TWY005167 for ; Wed, 29 Mar 2006 18:01:33 -0500 (EST) (envelope-from jtbryant@valdosta.edu) Received: from chunky (chunky.valdosta.edu [168.18.160.102]) by blazemail.valdosta.edu (iPlanet Messaging Server 5.2 HotFix 2.04 (built Feb 8 2005)) with ESMTP id <0IWW00B36VYHR0@blazemail.valdosta.edu> for caml-list@yquem.inria.fr; Wed, 29 Mar 2006 18:01:29 -0500 (EST) Date: Wed, 29 Mar 2006 18:01:11 -0500 From: Jonathan Bryant Subject: FP & Software Engineering To: caml-list@yquem.inria.fr Reply-To: jtbryant@valdosta.edu Message-id: <1143673272.14880.31.camel@localhost.localdomain> MIME-version: 1.0 X-Mailer: Evolution 2.6.0 Content-type: text/plain Content-transfer-encoding: 7BIT X-PMX-Version: 5.1.2.240295, Antispam-Engine: 2.3.0.1, Antispam-Data: 2006.3.29.144605 X-Miltered: at nez-perce with ID 442B11CE.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; ocaml:01 iterator:01 ocaml:01 hofs:01 functors:01 hofs:01 functors:01 parametric:01 polymorphism:01 fpls:01 lexical:01 closures:01 partial:01 partial:01 functions:01 X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.0.3 Ok. I have a question (or set of questions) that requires the expertise of the list, so here it goes: For my Software Engineering II class, which is very heavily based around object oriented design patterns, I have implemented all 10 assignments (so far) in OCaml using simply the functional aspects of the language (no objects). Each pattern has been used in a rather purist form. For example, strategy and iterator were simply higher order functions, while things like command were implemented using closures/lexical scoping. This makes for code that is faster, more efficient, and cleaner than my fellow students' Java/C++ code. I've been fighting my professors to let me use OCaml for over a year now and this professor is, at least, the first one who's halfway letting me use it. Unfortunately, he is not completely convinced. Being a OO & ASP/.NET junkie and never having seriously used a functional language, he is lost as to HOFs, functors, partial application, etc. and isn't really convinced that they are useful/necessary (I also believe he hasn't more than glanced at the code). He is also demanding UML diagrams of my code with these notated in it. Has anybody ever come up with a way of doing these things (HOFs, functors, partial application, module types, parametric polymorphism) in UML or any kind of modeling language? If not, how are these things usually notated in academic settings (symbolicly, not verbally)? Is there anything I can make visually that qualifies? Google did not reveal a modeling language for FPLs, so I'm lost. --Jonathan Bryant