So, ALL patterns are strict, unless one precedes them with "~"?

Michael

--- On Mon, 11/30/09, Brandon S. Allbery KF8NH <allbery@ece.cmu.edu> wrote:

From: Brandon S. Allbery KF8NH <allbery@ece.cmu.edu>
Subject: Re: [Haskell-cafe] Mystery operator?
To: "michael rice" <nowgate@yahoo.com>
Cc: "Brandon S. Allbery KF8NH" <allbery@ece.cmu.edu>, haskell-cafe@haskell.org
Date: Monday, November 30, 2009, 1:10 PM

On Nov 30, 2009, at 12:47 , michael rice wrote:

From: http://www.haskell.org/haskellwiki/Blow_your_mind#Polynomials

  -- splitting in two (alternating)
  -- "1234567" -> ("1357", "246")
  -- the lazy match with ~ is necessary for efficiency, especially enabling processing of infinite lists
  foldr (\a ~(x,y) -> (a:y,x)) ([],[])

This works but can't find (~) operator anywhere. Please explain or site a reference.

http://haskell.org/onlinereport/exps.html#pattern-matching --- see the last alternative for "apat", and rule #2 of section 3.17.2.  Basically it changes a (normally strict) pattern into a lazy pattern.

-- 
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery@kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu
electrical and computer engineering, carnegie mellon university    KF8NH