Re: [Haskell] insufficiently [EMAIL PROTECTED] -- more counterintuitive stuff

2004-03-30 Thread Bjorn Lisper
Andrew Bromage: >Pattern matching on the LHS of a function definitions looks, for all the >world, like a set of rewrite rules. That's because, in some sense, they >are. > >In this definition: > >f (x:xs) = 1 + f xs >f [] = [] > >Intuitively, the first rule should only "fire" if the express

Re: [Haskell] insufficiently [EMAIL PROTECTED] -- more counterintuitive stuff

2004-03-30 Thread ajb
G'day all. Quoting Duncan Coutts <[EMAIL PROTECTED]>: > Or finally, the "it's what you want most often" argument. How about the "it's the most natural thing" argument? Pattern matching on the LHS of a function definitions looks, for all the world, like a set of rewrite rules. That's because, i

Re: [Haskell] insufficiently [EMAIL PROTECTED] -- more counterintuitive stuff

2004-03-30 Thread Duncan Coutts
On Tue, 2004-03-30 at 18:01, S. Alexander Jacobson wrote: > Thanks for the ~ syntax, but my question is really > why you need it? What benefit do you get from > "refutable patterns"? > > Alternatively, would anything break if a future > Haskell just treated all patterns as irrefutable? A short p

Re: [Haskell] insufficiently [EMAIL PROTECTED] -- more counterintuitive stuff

2004-03-30 Thread Hal Daume III
A lot. If everything were irrefutable, then the following: > mymap f (x:xs) = f x : xs > mymap f [] = [] would never get to the second branch and would fail when it reached the end of a list. so would it if you put the lines in the other, "more natural," order, though perhaps it's less clear

Re: [Haskell] insufficiently [EMAIL PROTECTED] -- more counterintuitive stuff

2004-03-30 Thread S. Alexander Jacobson
Thanks for the ~ syntax, but my question is really why you need it? What benefit do you get from "refutable patterns"? Alternatively, would anything break if a future Haskell just treated all patterns as irrefutable? -Alex- _ S. Al

Re: [Haskell] insufficiently [EMAIL PROTECTED] -- more counterintuitive stuff

2004-03-30 Thread Peter Thiemann
> "aj" == S Alexander Jacobson <[EMAIL PROTECTED]> writes: aj> I would assume that this function: aj> foo list@(h:t) = list aj> is equivalent to aj> foo list = list aj> where (h:t)=list aj> But passing [] to the first generates an error aj> even though h

Re: [Haskell] insufficiently [EMAIL PROTECTED] -- more counterintuitive stuff

2004-03-30 Thread Martin Sjögren
tis 2004-03-30 klockan 17.30 skrev S. Alexander Jacobson: > I would assume that this function: > > foo list@(h:t) = list > > is equivalent to > > foo list = list > where (h:t)=list > > But passing [] to the first generates an error > even though h and t are never used! Passing [] to >

[Haskell] insufficiently [EMAIL PROTECTED] -- more counterintuitive stuff

2004-03-30 Thread S. Alexander Jacobson
I would assume that this function: foo list@(h:t) = list is equivalent to foo list = list where (h:t)=list But passing [] to the first generates an error even though h and t are never used! Passing [] to the second works just fine. At this point, I sort of understand the reason for M