[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Re: [xml-dev] RE: Declarative programming requires a different mindset
- From: Dimitre Novatchev <dnovatchev@gmail.com>
- To: "Costello, Roger L." <costello@mitre.org>
- Date: Wed, 24 Mar 2010 08:20:57 -0700
It is perfectly possible to express what ammounts to "sequential
exacution" in an FP language.
Read about Monads (or the Monad type class in Haskell).
Or, as Simon-Peyton Jones once put it, "Haskell is the finest
imperative language"
:)
Notice that operations with side effects can be safely used in an FP
language, given the necessary discipline (in Haskell the language
itself provides syntactic sugar for using Monads). For a known
example, get acquainted in how the XQuery Update Facility is defined
in a way that does not alter the functional nature of XQuery.
--
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk
-------------------------------------
Never fight an inanimate object
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play
On Wed, Mar 24, 2010 at 4:49 AM, Costello, Roger L. <costello@mitre.org> wrote:
> Hi Folks,
>
>
>
> It is my understanding that a key characteristic of declarative programming
> is that statements can be executed in any order, even in parallel. Do you
> agree?
>
>
>
> If yes, then anything which forces sequential processing is, by definition,
> not declarative. Do you agree?
>
>
>
> At the bottom of this message is a variable, namespace-map, which is then
> used by the second variable. The first variable must be created _before_ the
> second variable. Thus, a sequential processing is required and therefore it
> is not declarative.
>
>
>
> Wait. That can’t be right.
>
>
>
> Then I can’t create building blocks which can be used to create larger
> building blocks. The first variable is a building block that the second
> variable builds upon. Surely, assembling building blocks is important in
> declarative programming?
>
>
>
> What is the right way to think about variables that use other variables? Is
> it bad, from a declarative programming perspective?
>
>
>
> <xsl:variable name="namespace-map"
>
> select="document('')/*//f:namespace-map
>
> [f:input-document/f:namespace=$ns]" />
>
>
>
> <xsl:variable name="use-this-namespace"
>
> select="$namespace-map/f:output-document/f:namespace" />
>
>
>
> /Roger
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]