<br><br><div><span class="gmail_quote">On 5/16/07, <b class="gmail_sendername">Joe Marshall</b> <<a href="mailto:jmarshall@alum.mit.edu">jmarshall@alum.mit.edu</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
> I want to disagree with part of this.<br><br>> Enterprise projects accumulate data, move it around, grovel through it<br>> (mining), analyze it, and report on it. All other things considered<br>> equal, enterprises would rather *not* modify data, but instead
<br>> supersede it and archive the old.</blockquote><div><br>This is true with where I've been to - but I would just add (as you state below, non consciously) that conceptually IT/business think of keeping audit trails rather than *not* modifying data, and most of the techniques I've seen applied are all stateful, whereas you describe below it can be stateless.
<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">> So where does the functional programming come in? If you have no<br>> primitives that can modify the data, it is *trivial* to avoid all the
<br>> problems associated with mutation. (There is the problem of<br>> non-determinism that shows up.)<br><br>> I was involved in a company developing enterprise-level<br>> change-management software. We used a model where the changes were
<br>> immutable and composable (like deltas). We *never* deleted or<br>> modified a change, we just accumulated more and more of them. The<br>> code was naturally `macro-functional' in that all large-scale<br>
> operations were strictly functional. (At a small scale there were<br>> bits of mutation here and there, but that was for efficiency). It<br>> became clear to me that functional programming provides enormous<br>
> advantages for this project because as complex as things got, you<br>> could be pretty sure that the data was safe and secure.</blockquote><div><br>Thanks for sharing - appreciated ;)<br><br>After some more digging - it seems that keeping deltas is one of the steps to make a system functional :)
<br><br>If you are in a position to share, I am wondering - did you do pure FP style from top to bottom stack? Or you use traditional stateful technique for GUI/persistence and use FP in the middle tier? <br><br>Thanks,
<br>yinso <br></div><br></div>