OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
Re: [xml-dev] RE: Declarative programming requires a different mindset

"Costello, Roger L." <costello@mitre.org> writes:

[about declarative programming]

I enjoy your various posts with high level questions like this. I hope
you will keep asking them.

The question of what "the definition" of "declarative programming" is,
is unanswerable, I think. People use words as tags to coordinate
discussion of topics. A conversation often takes the form:

Here is a phrase to use as a mnemonic: "..."

Here are more phrases asserting the meaning of the mnemonic phrase.

Here are more phrases that are meant as an invitiation for you to
discuss a topic in terms of those phrases.

In such a discussion you make a point by referencing the mnemonic phrase
and redefining it.

>> A clearer distinction is whether or not the program involves mutable state
> variables.
> Since XSLT variables don't vary, are all XSLT programs declarative?
> Surely that's not the case.

It's worthwhile to think of declarative programming as a style, in my
opinion, and not all XSLT programs are written in a declarative style. A
declarative programming language would be one that makes declarative
programming easier than if it were not a declarative programming language.

A program can have parts that are writte in a declarative style and
parts that are not.

I also think it is worthwhile to think of functional programming and
declarative programing as different things.

Perl is not a functional programming language, but you can write perl in
a declarative style, e.g.:

document(title(), body());

is written in a declarative style.

You can also program in functional programming style using a procedural
language. I suspect you could program in a "less functional" style using
a functional programming language, but I can't think of an example.

> Would someone give an example of XSLT code that is clearly imperative?


<!-- given a matching author author -->
<xsl:variable name="author" select="f:matching-author(.)"/>
<!-- an author-link is the matching author's name and www address -->
  <xsl:copy-of select="$author/name"/>
  <xsl:copy-of select="$author/www"/>

is more declarative and less imperative than:

<!-- output an author-link start tag -->
<xsl:text disable-output-escaping="yes">&lt;author-link></xsl:text>

<!-- get the matching author -->
<xsl:variable name="author" select="f:matching-author(.)"/>

<!-- output it's name -->
<xsl:copy-of select="$author/name"/>

<!-- output it's www address-->
<xsl:copy-of select="$author/ww"/>

<!-- output an author-link end tag -->
<xsl:text disable-output-escaping="yes">&lt;/author-link></xsl:text>

So, I think declarative programming is not a precisely definable
concept. It refers to those parts of a programming style that you
describe as being declarative.


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS