From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,FORGED_GMAIL_RCVD, FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,b3f07bd1ad77d438 X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!postnews.google.com!g6g2000pro.googlegroups.com!not-for-mail From: deadlyhead Newsgroups: comp.lang.ada Subject: Re: The state of functional programming Date: Wed, 28 Jul 2010 16:34:26 -0700 (PDT) Organization: http://groups.google.com Message-ID: <55f38788-5e3f-4f5f-ba03-6b0f842740ce@g6g2000pro.googlegroups.com> References: <4c5057f9$0$7655$9b4e6d93@newsspool1.arcor-online.net> <3W21O62640388.1508101852@reece.net.au> NNTP-Posting-Host: 216.57.220.9 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 X-Trace: posting.google.com 1280360066 9980 127.0.0.1 (28 Jul 2010 23:34:26 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Wed, 28 Jul 2010 23:34:26 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: g6g2000pro.googlegroups.com; posting-host=216.57.220.9; posting-account=snJuNwoAAABnc8T9lYkBlDQrDdSjOjG2 User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 3.5.30729),gzip(gfe) Xref: g2news1.google.com comp.lang.ada:12651 Date: 2010-07-28T16:34:26-07:00 List-Id: Wow. I feel completely out of place here. I regularly code in functional, imperative and use OOP strategies side- by-side. When I want to hack, I use Scheme (specifically Guile). I naturally gravitate to doing everything in a functional style in Scheme because it's so _natural_, but when a situation calls for it, I load up GOOPS and get some OOP going. There's absolutely nothing wrong with using the right tools for the job. Heck, I'll even write some functions in Ada that never assign a variable, but instead construct a return statement from a series of sub-functions. My total perspective is thus: both functional programming and imperative/OOP as implemented by Ada are designed for safety, expressiveness and cleanliness/maintainability. Ada accomplishes this via type safety, clear syntax and a host of other design decisions that I don't particularly feel like ticking off. Functional languages achieve much of the same safety, even with dynamic typing, by simply doing away with assignment, and thus abusing conversion rules between types. Perhaps I look at it as with Ada we must be deliberate with each of our actions, but with functional languages we must be deliberate with our _intentions_. Call me crazy, but building a solid system in Ada and embedding a powerful Scheme for extension seems like the beautiful middle way to me.