[Home] [By Thread] [By Date] [Recent Entries]

  • From: w3c@d...
  • To: "Kendall Shaw" <kshaw@k...>
  • Date: Wed, 31 Mar 2010 07:05:09 -0700

Kendall,

Excellent points!

I would say however that personally I try to use the declarative approach as my go to paradigm in xslt - and resort to procedural to handle edge conditions and explicit constructs.

IMHO - this also results in smaller more compact and easier to maintain code.  As your example below illustrates.

The declarative approach by its very nature supports the general case of inputs - so the code is not brittle - but instead is adaptive to new input patterns that its author had not previously encountered or anticipated directly.

DW

-------- Original Message --------
Subject: Re: RE: Declarative programming requires a different
mindset
From: Kendall Shaw <kshaw@k...>
Date: Thu, March 25, 2010 5:47 pm
To: "xml-dev@l..." <xml-dev@l...>

"Costello, Roger L." <costello@m...> 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?

This:

<!-- 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 -->
<author-link>
<xsl:copy-of select="$author/name"/>
<xsl:copy-of select="$author/www"/>
</author-link>

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.

Kendall

_______________________________________________________________________

XML-DEV is a publicly archived, unmoderated list hosted by OASIS
to support XML implementation and development. To minimize
spam in the archives, you must subscribe before posting.

[Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
Or unsubscribe: xml-dev-unsubscribe@l...
subscribe: xml-dev-subscribe@l...
List archive: http://lists.xml.org/archives/xml-dev/
List Guidelines: http://www.oasis-open.org/maillists/guidelines.php



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


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member