Hi Grant - <br><br>I am definitely interested in both as you described, but this is definitely about a question about design and changing of programming paradigm. <br><br>Enterprise project is about moving data around, and you are right, at the end of the day it&#39;s not rocket science.&nbsp; But maybe because it&#39;s not rocket science, it is just so much easier to conceive them as objects and classes, along with dealing with data input, validation, persistence, and query.&nbsp; Boring, but works. 
<br><br>The complexity in enterprise projects come from the numerous object&#39;s interdependencies and specializations, i.e. each object is just different enough from another object that it requires additional code.&nbsp; Hence OOP&#39;s ability to couple data with behavior helps with code organization.&nbsp; 
<br><br>As I explore FP I get the sense that FP is about decoupling data from behavior (as an example, in C++ STL is the quintessential example... quite a beauty, but a lot of C++ on Windows are done using MFC and others that are more in traditional sense of OOP; another example, CLOS also decouples behavior from data), and basically it&#39;s a different way of design/organizing problem for me... is this &quot;better&quot; - in the sense that I would end up writing fewer lines of code?&nbsp; 
<br><br>That&#39;s why I am interested to hear about other&#39;s experiences ;)&nbsp; <br>yinso <br><br><div><span class="gmail_quote">On 5/15/07, <b class="gmail_sendername">Grant Rettke</b> &lt;<a href="mailto:grettke@acm.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
grettke@acm.org</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Are you more interested in getting someone&#39;s account of using FP for a<br>&quot;real world enterprise project&quot; or in hearing what folks thing about<br>what Scheme offers over &quot;OO alone&quot;?<br><br>I can comment on the latter, but not the former.
<br><br>&quot;Enterprise projects&quot; are usually about moving data around, modifying<br>it, analyzing and reporting on it. Yes, it is difficult and has real<br>problems, but then again, after you&#39;ve done a few successful projects
<br>you realize that while it is to be taken seriously, it is not rocket<br>science.<br><br>One big goal for &quot;enterprise folks&quot; is to mitigate their risk, and one<br>way to do that is to implement systems that are maintainable by just
<br>about anyone. That way, if folks leave, and documentation disappears,<br>and the system lasts for years longer than expected (all of these<br>things *will* happen), then said company can get a reasonably priced<br>individual off the street and have them working on the reasonably
<br>quickly. One way to do this is to limit your programming language to a<br>small set of abstractions because although you end up with a lot more<br>code just to express something, and it will be more difficult to<br>understand, said person off the street *will* be able to understand
<br>it, and then maintain it. &quot;Enterprise languages&quot; are all about<br>limiting abstractions to make it easier to make commodities out of the<br>developers. This makes a lot of sense. Add to this excellent tools to
<br>&quot;get the job&quot; done of representing data (JPA or <a href="http://ADO.NET" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">ADO.NET</a>), UIs (Swing,<br>JSF, <a href="http://ASP.NET" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
ASP.NET</a>, Winforms), and every transport layer in between, and<br>you&#39;ve got a reasonably good investment in the longer run. From this
<br>angle, a more expressive language would offer more productivity gains,<br>but would decrease the available pool of resources to maintain that<br>system.<br><br>Perhaps this is why you here more about LISP-like languages being used
<br>at startups and in niche areas.<br><br>That said, you *can* use LISP-like languages to solve your problems,<br>and generate the implementation of your solution in your desired<br>&quot;Enterprise&quot; language.<br></blockquote>

</div><br>