XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
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

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: [xml-dev] RE: Declarative programming requires a different
mindset
From: Kendall Shaw <kshaw@kendallshaw.com>
Date: Thu, March 25, 2010 5:47 pm
To: "xml-dev@lists.xml.org" <xml-dev@lists.xml.org>

"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?

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@lists.xml.org
subscribe: xml-dev-subscribe@lists.xml.org
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]


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