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