Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!news.albasani.net!nuzba.szn.dk!news.szn.dk!pnx.dk!dotsrc.org!filter.dotsrc.org!news.dotsrc.org!not-for-mail From: torbenm@diku.dk (Torben Ægidius Mogensen) Newsgroups: comp.lang.functional Subject: Re: Is FP suitable for complex business logic? References: Date: Mon, 08 Aug 2011 16:15:36 +0200 Message-ID: <7zaabkt2ev.fsf@ask.diku.dk> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) Cancel-Lock: sha1:BzffC/AL+xQTD3dKGAUyqfyiqHs= MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Lines: 16 Organization: SunSITE.dk - Supporting Open source NNTP-Posting-Host: 130.225.96.225 X-Trace: news.sunsite.dk DXC=@PATSZTD:f8Bi9D?DQ_c:4YSB=nbEKnk;^gR2fXIEW1=eA0c^o`FO04NW[cF@L;gD7F5\^6VX=jY4^ih8HKVE_j6RhQJFYNGC11 X-Complaints-To: staff@sunsite.dk Xref: x330-a1.tempe.blueboxinc.net comp.lang.functional:157 Simon Shi writes: > Let me describe the current application: > 1. maintaining hierarchical resources (e.g. companies has dozens of departments, one department has hundreds of workshops, one workshop has thousands of workers), data organised like a tree. > 2. Create/Modify/Delete these resources will do various calculations, e.g. decrease total quota in upper-level resource based on its properties and upper-level's properties; configuring several workshops as a group, thus need to involve them all in some calculations. > 3. each resource will setup(Cre/Mod/Del) corresponding Hardware resource, so the resource node contains not only properties but also HW related data, the data in the tree grows continuously in development. (it's now very big one) > 4. calculations changes: add new one, involve/discard some parameters, etc. > > After several years change, many functions created/modified based on the big data tree, looks like a big ball of mud, it's a maintain nightmare. > > So, do you have suggestion on how to organize the desgin? is there any opensource project solved a similar problem? See http://www.3gerp.org/, which does much of what you want (and a good deal more). And it is mostly imlemented in Haskell. Torben