comp.lang.ada
 help / color / mirror / Atom feed
From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: The state of functional programming
Date: Thu, 29 Jul 2010 23:46:54 +0300
Date: 2010-07-29T23:46:54+03:00	[thread overview]
Message-ID: <8be7luFbvaU1@mid.individual.net> (raw)
In-Reply-To: <Xns9DC49BF262AB5WarrensBlatherings@81.169.183.62>

Warren wrote:
> Dmitry A. Kazakov expounded in
> news:a3iznu9uq49d$.1m9cupr81yhut$.dlg@40tude.net: 
> 
>> On Thu, 29 Jul 2010 15:20:48 +0000 (UTC), Warren wrote:
> ..
>>> I think you missed my point - perhaps it wasn't expressed
>>> clearly.
>>>
>>> As I understand it, a FP tries to determine conclusions 
>>> from a universe of facts, given some inputs. For smaller
>>> problems this can be _exhaustively_ analyzed and results 
>>> obtained.
>> And so does any declarative language. You declare some facts in
>> whatever form (as relations, as connections of blocks etc, for that
>> matter, as types in a strongly typed languages like Ada). The system
>> infers from them some executable code.
> 
> No, there is a big difference here.
> 
> In a non-FP language (Ada), you can solve _any_ problem so long
> as you code it (you are coding the "how").  IOW, you have
> solved the problem and specified it in code.
> 
> In FP, you define the "problem" (instead) and require from 
> it a solution. But FP cannot always solve that "problem".

Warren, I think your description or understanding of FP matches "logic 
programming" or "constraint programming" rather than "functional 
programming".

FP programs do specify "how" to compute a solution, although the FP 
compiler or interpreter may have to transform the "how" in smart ways to 
make it computable on resource-limited machines -- for example, by 
converting tail recursion to iteration, or by using lazy evaluation to 
avoid infinitely large intermediate results. Proving termination of 
functional programs is similar to proving termination of recursive 
imperative programs.

It is in logic programming and constraint programming that the 
programmer enters facts, rules, and a goal, and the program searches for 
solutions (proofs or realisations of the goal) in some way that is not 
explicitly encoded in the program.

-- 
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
       .      @       .



  parent reply	other threads:[~2010-07-29 20:46 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <2adc4d8d-210e-429c-8188-9b1e99c2718e@d17g2000yqb.googlegroups.com>
2010-07-28 16:16 ` The state of functional programming Georg Bauhaus
2010-07-28 19:37   ` Kulin Remailer
2010-07-28 23:34     ` deadlyhead
2010-07-28 16:31 ` Jeffrey R. Carter
2010-07-28 23:35   ` J.s
2010-07-28 16:40 ` Dmitry A. Kazakov
2010-07-28 17:47   ` (see below)
2010-07-28 18:40     ` Dmitry A. Kazakov
2010-08-03  3:15     ` Randy Brukardt
2010-08-03 13:57       ` (see below)
2010-07-28 19:09   ` Warren
2010-07-28 19:35     ` Dmitry A. Kazakov
2010-07-29 15:20       ` Warren
2010-07-29 17:00         ` Dmitry A. Kazakov
2010-07-29 19:19           ` Warren
2010-07-29 20:40             ` Dmitry A. Kazakov
2010-07-29 21:01               ` Warren
2010-07-29 23:09                 ` Georg Bauhaus
2010-07-30  8:50                 ` Dmitry A. Kazakov
2010-07-30  9:17                   ` Niklas Holsti
2010-07-30  9:29                     ` Dmitry A. Kazakov
2010-07-29 20:46             ` Niklas Holsti [this message]
2010-07-30 13:52               ` Warren
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox