<?xml version='1.0' encoding='iso-8859-1'?><?xml-stylesheet type='text/xsl' href='http://w3future.com/w3f/w3f.xsl' ?>
<html xmlns="http://www.w3.org/2002/06/xhtml2" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xf="http://www.w3.org/2002/xforms/cr" xml:lang="en" xml:base="http://w3future.com/weblog/2003/11/11.xml">
<head>
<title>Tuesday, November 11, 2003 - Sjoerd Visscher's weblog</title>
<link rel="meta" type="application/rdf+xml" title="FOAF" href="http://w3future.com/people/sjoerd_visscher/foaf.rdf" />
</head>
<body>
<section id="content">
	<h>Sjoerd Visscher's weblog</h>
	<p>Pondering those web technologies that may change the future of the world wide web.</p>
	<section id="note">
		<h>Last Update</h>
		<p>10/16/2005; 1:29:16 AM</p>
		<p id="alternates" class="buttons">
			<l href="http://w3future.com/weblog/2003/11/11.xml?notransform" rel="alternate" type="application/xml" title="See this web page with XHTML 2.0 technology."><span>Try</span> XHTML 2.0</l>
			<l href="view-source:http://w3future.com/weblog/2003/11/11.xml?notransform" title="View the XHTML 2.0 source of this page."><span>Src</span> XHTML 2.0</l>
			<l href="http://w3future.com/tools/xr.pl?xr=http://w3future.com/xr/w3f.xml&amp;xml=http://w3future.com/weblog/2003/11/11.xml%3Fnotransform" rel="meta" type="application/rdf+xml" title="RDF metadata"><span>RDF</span> Metadata</l>
		</p>
		<xi:include href="http://w3future.com/w3f/buttons.xml" />
	</section><section>
  <h><a rel='prev' href='http://w3future.com/weblog/2003/11/06.xml#a234' title='Thursday, November 06, 2003'>&lt;&#160;</a><a href="http://w3future.com/weblog/2003/11/11.xml">Tuesday, November 11, 2003</a><a rel='next' href='http://w3future.com/weblog/2003/12/15.txt#a236' title='Monday, December 15, 2003'>&#160;&gt;</a></h>
<a name="a264"></a>
<section id="a264">
<h id='theImpotenceOfFunctionalProgramming'><a href="http://w3future.com/weblog/2003/11/11.xml#a264" class="weblogItemTitle">The impotence of functional programming</a></h>
<blockquote><p><a href="http://seanmcgrath.blogspot.com/archives/2003_11_09_seanmcgrath_archive.html#106854737902919946">Context - XML's gift to the world (and the impotence of numbers)</a>. Hierarchies are a great modelling tool. Why? Because (a) they map well onto the way our heads manage complexity and (b) they allow us to model <i>context</i>. We can put things within other things and nuance the semantics of the contained by means of the container and the container's container and so on.</p><p>This, for me, is the essence of XML. Throw away the containership model and what have you got? A language that allows you to describe flat structures. Structures in which context does not play an important role. Structures in which semantics are spot-welded to atomic units of data. Structures in which all contextual knowledge is squeezed out in favour of (ugh!) out-of-band storage of semantics and or (double ugh!) ontological particle physics featuring the standard quarks, leptons and guages known as dates, integers and strings. <a href="http://www.itworld.com/nl/ebiz_ent/11112003/">The impotence of numbers</a> is an ITworld article on this topic. [<a href="http://seanmcgrath.blogspot.com">Sean McGrath, CTO, Propylon</a>]</p></blockquote>
<p>I completely agree. In fact, it's exactly the issue I have with functional programming. Take for example the function <code>zip</code> (or <code>zip3</code>, <code>zip4</code>, exponential ugh-ness), a very popular function in f.e. Haskell. Firstly, if you have two lists, with values that go pairwise together, those values shouldn't have been apart in the first place. Secondly, what you end up with is a list of tuples. Values in a tuple always have more context than just being together. All this information is lost.</p><p>That this issue is completely lost on the functional programming world is very apparent from the research. The holy grail seems to be a generic <code>map</code> on any data structure. But in practice any data structure more complex than a list, is bound to have some meta data. A generic map would map a function over the data and the meta data at the same time. That's almost never usefull. Obviously this encourages the use of a separate data structure for meta data, pulling that data out of context.</p><p>XML has already a nice solution for this. XPath is a very simple syntax for building generators. Esp. the axes (<code>ancestor::*</code>,<code>following-sibling::*</code> etc.) are a nice way of iterating over XML in a specific way/direction. That way it's easy to map a function over a specific part of the data structure.</p>
</section>
</section>
<xi:include href='http://w3future.com/tools/rdf.php?about=http://w3future.com/weblog/2003/11/11.xml' /></section>
<section id="navigation"><xi:include href="http://w3future.com/w3f/sections.xml" /></section>
<section id="sidebar"><xi:include href="http://w3future.com/weblog/sidebars/weblog.opml" /></section>
</body>
</html>

