Subject: Re: [xsl] Things that make you go Hmmmm!|
From: Ihe Onwuka <ihe.onwuka@xxxxxxxxx>
Date: Sat, 29 Mar 2014 04:00:40 +0000
On Fri, Mar 28, 2014 at 9:58 PM, Michael Kay <mike@xxxxxxxxxxxx> wrote: >> >> I think the orthogonality principle is a natural default for a >> functional programming language and I can't think of a good reason to >> depart from that. > > It's an excellent guideline, but it doesn't always work in practice. > > For example, we're designing arrays at the moment, and there's a real tension between making them behave as much as possible like sequences, and making them behave like we would want sequences to behave if we were starting from scratch. > That wouldn't surprise me in the least. I got first hand exposure to this when my prof tasked me with implementing vectors for the variant of Scheme he was designing. Arrays forced Java and C# to implement run time kludges to prevent certain subtyping scenarios from breaking the soundness of their static type systems. If you've ever had an ArrayStoreException in these languages you've run into one. Now if you are a person that chooses to read narrow and deep into one programming language (or genre of programming language) you wouldn't know there was a different (and some would say better) way that would have circumvented the need for such kludges. It is instructive to note that these were languages whose early incantations did not support functional programming (I guess they didn't foresee the use case). The functional programming languages got this right from the get go with parametric polymorphism and so they didn't have to deal with issues arising from having to elastoplast generics over their language. I'm just thankful that I got the education I had at a time in my life when I was able to appreciate it. It means that when a fellow comes on a mailing list and starts telling me what and how to read I can smile and not pay him any attention.