<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.lang.haskell.cvs.libraries">
    <title>gmane.comp.lang.haskell.cvs.libraries</title>
    <link>http://blog.gmane.org/gmane.comp.lang.haskell.cvs.libraries</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15878"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15877"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15876"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15875"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15874"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15873"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15872"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15871"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15870"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15869"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15868"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15867"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15866"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15864"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15863"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15862"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15861"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15860"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15859"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15858"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15878">
    <title>[commit: base] master: Merge branch 'master' ofhttp://darcs.haskell.org//packages/base (d74c198)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15878</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/base

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/d74c1984f29ce2a56b283a31367ff88bd1079eb5


commit d74c1984f29ce2a56b283a31367ff88bd1079eb5
Merge: 4f27b57... 3fb1aac...
Author: Simon Peyton Jones &amp;lt;simonpj&amp;lt; at &amp;gt;microsoft.com&amp;gt;
Date:   Tue Jan 8 09:03:05 2013 +0000

    Merge branch 'master' of http://darcs.haskell.org//packages/base

 Data/Fixed.hs             |   37 ++++++++++++++-----------------------
 Data/List.hs              |    2 +-
 GHC/Read.lhs              |    1 +
 Text/Read/Lex.hs          |   18 +++++++++++++++++-
 tests/all.T               |    1 +
 tests/readFixed001.hs     |   13 +++++++++++++
 tests/readFixed001.stdout |    6 ++++++
 7 files changed, 53 insertions(+), 25 deletions(-)
&lt;/pre&gt;</description>
    <dc:creator>Simon Peyton Jones</dc:creator>
    <dc:date>2013-01-08T09:03:21</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15877">
    <title>[commit: base] master: Comment out IsEven, isEven, and friends,because the type is ambiguous (4f27b57)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15877</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/base

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/4f27b5710232be868121cce5191c062999107327


commit 4f27b5710232be868121cce5191c062999107327
Author: Simon Peyton Jones &amp;lt;simonpj&amp;lt; at &amp;gt;microsoft.com&amp;gt;
Date:   Tue Jan 8 09:02:48 2013 +0000

    Comment out IsEven, isEven, and friends, because the type is ambiguous
    
    It will become un-ambiguous when Iavor teaches the type inference
    engine to prove more things, but until then this stuff is not useful.


 GHC/TypeLits.hs |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/GHC/TypeLits.hs b/GHC/TypeLits.hs
index ed1f205..befda8e 100644
--- a/GHC/TypeLits.hs
+++ b/GHC/TypeLits.hs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -34,7 +34,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; module GHC.TypeLits
 
     -- * Destructing type-nat singletons.
   , isZero, IsZero(..)
-  , isEven, IsEven(..)
+
+-- Commented out; see definition below; SLPJ Jan 13
+--  , isEven, IsEven(..)
 
 
     -- * Matching on type-nats
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -51,7 +53,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; import GHC.Base(String)
 import GHC.Read(Read(..))
 import GHC.Show(Show(..))
 import Unsafe.Coerce(unsafeCoerce)
-import Data.Bits(testBit,shiftR)
+-- import Data.Bits(testBit,shiftR)
 import Data.Maybe(Maybe(..))
 import Data.List((++))
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -193,9 +195,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; instance Show (IsZero n) where
   show IsZero     = "0"
   show (IsSucc n) = "(" ++ show n ++ " + 1)"
 
+{- ----------------------------------------------------------------------------
+
+This IsEven code is commented out for now.  The trouble is that the 
+IsEven constructor has an ambiguous type, at least until (+) becomes
+suitably injective. 
+
 data IsEven :: Nat -&amp;gt; * where
   IsEvenZero :: IsEven 0
   IsEven     :: !(Sing (n+1)) -&amp;gt; IsEven (2 * n + 2)
+  IsEven     :: !(Sing (n)) -&amp;gt; IsEven (2 * n + 1)
   IsOdd      :: !(Sing n)     -&amp;gt; IsEven (2 * n + 1)
 
 isEven :: Sing n -&amp;gt; IsEven n
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -208,8 +217,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; instance Show (IsEven n) where
   show (IsEven x) = "(2 * " ++ show x ++ ")"
   show (IsOdd  x) = "(2 * " ++ show x ++ " + 1)"
 
-
---------------------------------------------------------------------------------
+------------------------------------------------------------------------------ -}
 
 -- | Unary implemenation of natural numbers.
 -- Used both at the type and at the value level.
&lt;/pre&gt;</description>
    <dc:creator>Simon Peyton Jones</dc:creator>
    <dc:date>2013-01-08T09:03:17</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15876">
    <title>[commit: base] master: Remove unused import (686d13d)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15876</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/base

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/686d13d95dd17ae6099a77bf52531cc2dc0db3c9


commit 686d13d95dd17ae6099a77bf52531cc2dc0db3c9
Author: Simon Peyton Jones &amp;lt;simonpj&amp;lt; at &amp;gt;microsoft.com&amp;gt;
Date:   Tue Jan 8 09:00:06 2013 +0000

    Remove unused import


 Text/Read/Lex.hs |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/Text/Read/Lex.hs b/Text/Read/Lex.hs
index 8a64e21..ef7e1a8 100644
--- a/Text/Read/Lex.hs
+++ b/Text/Read/Lex.hs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -41,7 +41,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; import GHC.Char
 import GHC.Num( Num(..), Integer )
 import GHC.Show( Show(..) )
 import {-# SOURCE #-} GHC.Unicode ( isSpace, isAlpha, isAlphaNum )
-import GHC.Real( Integral, Rational, (%), fromIntegral,
+import GHC.Real( Rational, (%), fromIntegral,
                  toInteger, (^) )
 import GHC.List
 import GHC.Enum( minBound, maxBound )
&lt;/pre&gt;</description>
    <dc:creator>Simon Peyton Jones</dc:creator>
    <dc:date>2013-01-08T09:03:15</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15875">
    <title>[commit: terminfo] ghc-7.6: Search for ncurses in libtinfo;fixes #7281 (6dde36f)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15875</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/terminfo

On branch  : ghc-7.6

http://hackage.haskell.org/trac/ghc/changeset/6dde36fa0c347dbbb92affe932c5c79d030867db


commit 6dde36fa0c347dbbb92affe932c5c79d030867db
Author: Ian Lynagh &amp;lt;ian&amp;lt; at &amp;gt;well-typed.com&amp;gt;
Date:   Fri Jan 4 19:49:31 2013 +0000

    Search for ncurses in libtinfo; fixes #7281


 configure.ac |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/configure.ac b/configure.ac
index 2e5abd9..82f5015 100644
--- a/configure.ac
+++ b/configure.ac
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -39,10 +39,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; else
     TERMINFO_INCLUDES="$CursesIncludes term.h"
 fi
 
-AC_CHECK_LIB(ncursesw, setupterm, HaveLibCurses=YES; LibCurses=ncursesw,
-  [AC_CHECK_LIB(ncurses, setupterm, HaveLibCurses=YES; LibCurses=ncurses,
-    [AC_CHECK_LIB(curses, setupterm, HaveLibCurses=YES; LibCurses=curses,
-      HaveLibCurses=NO; LibCurses=not-installed)])])
+AC_CHECK_LIB(tinfo, setupterm, HaveLibCurses=YES; LibCurses=tinfo,
+  [AC_CHECK_LIB(ncursesw, setupterm, HaveLibCurses=YES; LibCurses=ncursesw,
+    [AC_CHECK_LIB(ncurses, setupterm, HaveLibCurses=YES; LibCurses=ncurses,
+      [AC_CHECK_LIB(curses, setupterm, HaveLibCurses=YES; LibCurses=curses,
+        HaveLibCurses=NO; LibCurses=not-installed)])])])
 
 if test "x$HaveLibCurses" = "xNO" ; then
     AC_MSG_FAILURE([curses library not found, so this package cannot be built])
&lt;/pre&gt;</description>
    <dc:creator>Ian Lynagh</dc:creator>
    <dc:date>2013-01-04T20:50:33</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15874">
    <title>[commit: directory] ghc-7.6: Fix Haddock markup (5ad061f)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15874</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/directory

On branch  : ghc-7.6

http://hackage.haskell.org/trac/ghc/changeset/5ad061f1e54da784b0622169798f91ceb40ea382


commit 5ad061f1e54da784b0622169798f91ceb40ea382
Author: Simon Hengel &amp;lt;sol&amp;lt; at &amp;gt;typeful.net&amp;gt;
Date:   Tue Oct 2 21:43:46 2012 +0200

    Fix Haddock markup


 System/Directory.hs |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/System/Directory.hs b/System/Directory.hs
index cfe7cd9..10a66d9 100644
--- a/System/Directory.hs
+++ b/System/Directory.hs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1063,7 +1063,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; instead.
 On Unix, 'getHomeDirectory' returns the value of the &amp;lt; at &amp;gt;HOME&amp;lt; at &amp;gt;
 environment variable.  On Windows, the system is queried for a
 suitable path; a typical path might be 
-&amp;lt; at &amp;gt;C:/Documents And Settings/user&amp;lt; at &amp;gt;.
+&amp;lt; at &amp;gt;C:\/Documents And Settings\/user&amp;lt; at &amp;gt;.
 
 The operation may fail with:
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1138,7 +1138,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; instead.
 On Unix, 'getUserDocumentsDirectory' returns the value of the &amp;lt; at &amp;gt;HOME&amp;lt; at &amp;gt;
 environment variable.  On Windows, the system is queried for a
 suitable path; a typical path might be 
-&amp;lt; at &amp;gt;C:\/Documents and Settings\/user\/My Documents&amp;lt; at &amp;gt;.
+&amp;lt; at &amp;gt;C:\/Documents And Settings\/user\/My Documents&amp;lt; at &amp;gt;.
 
 The operation may fail with:
&lt;/pre&gt;</description>
    <dc:creator>Ian Lynagh</dc:creator>
    <dc:date>2013-01-03T23:21:09</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15873">
    <title>[commit: base] ghc-7.6: Clarify the wording of the 'insert' haddock;fixes #7421 (c4dec49)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15873</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/base

On branch  : ghc-7.6

http://hackage.haskell.org/trac/ghc/changeset/c4dec4948fc0b1185404e2a6d66aec25aa293b9f


commit c4dec4948fc0b1185404e2a6d66aec25aa293b9f
Author: Ian Lynagh &amp;lt;ian&amp;lt; at &amp;gt;well-typed.com&amp;gt;
Date:   Wed Jan 2 21:42:22 2013 +0000

    Clarify the wording of the 'insert' haddock; fixes #7421
    
    Wording suggested by Bart Massey.


 Data/List.hs |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/Data/List.hs b/Data/List.hs
index 7b06dae..a60e0e3 100644
--- a/Data/List.hs
+++ b/Data/List.hs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -509,7 +509,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; mapAccumR f s (x:xs)    =  (s'', y:ys)
                                  (s', ys) = mapAccumR f s xs
 
 -- | The 'insert' function takes an element and a list and inserts the
--- element into the list at the last position where it is still less
+-- element into the list at the first position where it is less
 -- than or equal to the next element.  In particular, if the list
 -- is sorted before the call, the result will also be sorted.
 -- It is a special case of 'insertBy', which allows the programmer to
&lt;/pre&gt;</description>
    <dc:creator>Ian Lynagh</dc:creator>
    <dc:date>2013-01-03T23:20:44</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15872">
    <title>[commit: base] master: Fix Data.Fixed.Fixed's Read instance;fixes #7483 (3fb1aac)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15872</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/base

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/3fb1aacabbded36e9203adf922af197db0652646


commit 3fb1aacabbded36e9203adf922af197db0652646
Author: Ian Lynagh &amp;lt;ian&amp;lt; at &amp;gt;well-typed.com&amp;gt;
Date:   Wed Jan 2 23:18:18 2013 +0000

    Fix Data.Fixed.Fixed's Read instance; fixes #7483


 Data/Fixed.hs             |   37 ++++++++++++++-----------------------
 GHC/Read.lhs              |    1 +
 Text/Read/Lex.hs          |   18 +++++++++++++++++-
 tests/all.T               |    1 +
 tests/readFixed001.hs     |   13 +++++++++++++
 tests/readFixed001.stdout |    6 ++++++
 6 files changed, 52 insertions(+), 24 deletions(-)

diff --git a/Data/Fixed.hs b/Data/Fixed.hs
index b4a9857..fd0ca01 100644
--- a/Data/Fixed.hs
+++ b/Data/Fixed.hs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,5 +1,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 {-# LANGUAGE Trustworthy #-}
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternGuards #-}
 {-# OPTIONS -Wall -fno-warn-unused-binds #-}
 #ifndef __NHC__
 {-# LANGUAGE DeriveDataTypeable #-}
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -40,12 +40,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; module Data.Fixed
 ) where
 
 import Prelude -- necessary to get dependencies right
-import Data.Char
-import Data.List
 #ifndef __NHC__
 import Data.Typeable
 import Data.Data
 #endif
+import GHC.Read
+import Text.ParserCombinators.ReadPrec
+import Text.Read.Lex
 
 #ifndef __NHC__
 default () -- avoid any defaulting shenanigans
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -159,30 +160,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; showFixed chopTrailingZeros fa&amp;lt; at &amp;gt;(MkFixed a) = (show i) ++ (withDot (showIntegerZe
     maxnum = 10 ^ digits
     fracNum = div (d * maxnum) res
 
-readsFixed :: (HasResolution a) =&amp;gt; ReadS (Fixed a)
-readsFixed = readsSigned
-    where readsSigned ('-' : xs) = [ (negate x, rest)
-                                   | (x, rest) &amp;lt;- readsUnsigned xs ]
-          readsSigned xs = readsUnsigned xs
-          readsUnsigned xs = case span isDigit xs of
-                             ([], _) -&amp;gt; []
-                             (is, xs') -&amp;gt;
-                                 let i = fromInteger (read is)
-                                 in case xs' of
-                                    '.' : xs'' -&amp;gt;
-                                        case span isDigit xs'' of
-                                        ([], _) -&amp;gt; []
-                                        (js, xs''') -&amp;gt;
-                                            let j = fromInteger (read js)
-                                                l = genericLength js :: Integer
-                                            in [(i + (j / (10 ^ l)), xs''')]
-                                    _ -&amp;gt; [(i, xs')]
-
 instance (HasResolution a) =&amp;gt; Show (Fixed a) where
     show = showFixed False
 
 instance (HasResolution a) =&amp;gt; Read (Fixed a) where
-    readsPrec _ = readsFixed
+    readPrec     = readNumber convertFixed
+    readListPrec = readListPrecDefault
+    readList     = readListDefault
+
+convertFixed :: forall a . HasResolution a =&amp;gt; Lexeme -&amp;gt; ReadPrec (Fixed a)
+convertFixed (Number n)
+ | Just (i, f) &amp;lt;- numberToFixed r n =
+    return (fromInteger i + (fromInteger f / (10 ^ r)))
+    where r = resolution (undefined :: Fixed a)
+convertFixed _ = pfail
 
 data E0 = E0
 #ifndef __NHC__
diff --git a/GHC/Read.lhs b/GHC/Read.lhs
index c542274..5ad9527 100644
--- a/GHC/Read.lhs
+++ b/GHC/Read.lhs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -38,6 +38,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; module GHC.Read
   , list
   , choose
   , readListDefault, readListPrecDefault
+  , readNumber
 
   -- Temporary
   , readParen
diff --git a/Text/Read/Lex.hs b/Text/Read/Lex.hs
index 8a64e21..c1592c6 100644
--- a/Text/Read/Lex.hs
+++ b/Text/Read/Lex.hs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -19,7 +19,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; module Text.Read.Lex
   -- lexing types
   ( Lexeme(..)
 
-  , numberToInteger, numberToRational, numberToRangedRational
+  , numberToInteger, numberToFixed, numberToRational, numberToRangedRational
 
   -- lexer
   , lex, expect
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -82,6 +82,22 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; numberToInteger (MkNumber base iPart) = Just (val (fromIntegral base) 0 iPart)
 numberToInteger (MkDecimal iPart Nothing Nothing) = Just (val 10 0 iPart)
 numberToInteger _ = Nothing
 
+numberToFixed :: Integer -&amp;gt; Number -&amp;gt; Maybe (Integer, Integer)
+numberToFixed _ (MkNumber base iPart) = Just (val (fromIntegral base) 0 iPart, 0)
+numberToFixed _ (MkDecimal iPart Nothing Nothing) = Just (val 10 0 iPart, 0)
+numberToFixed p (MkDecimal iPart (Just fPart) Nothing)
+    = let i = val 10 0 iPart
+          f = val 10 0 (integerTake p (fPart ++ repeat 0))
+          -- Sigh, we really want genericTake, but that's above us in
+          -- the hierarchy, so we define our own version here (actually
+          -- specialised to Integer)
+          integerTake             :: Integer -&amp;gt; [a] -&amp;gt; [a]
+          integerTake n _ | n &amp;lt;= 0 = []
+          integerTake _ []        =  []
+          integerTake n (x:xs)    =  x : integerTake (n-1) xs
+      in Just (i, f)
+numberToFixed _ _ = Nothing
+
 -- This takes a floatRange, and if the Rational would be outside of
 -- the floatRange then it may return Nothing. Not that it will not
 -- /necessarily/ return Nothing, but it is good enough to fix the
diff --git a/tests/all.T b/tests/all.T
index 8e11cf2..59354fe 100644
--- a/tests/all.T
+++ b/tests/all.T
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -20,6 +20,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; test('data-fixed-show-read', normal, compile_and_run, [''])
 test('showDouble', normal, compile_and_run, [''])
 test('readDouble001', normal, compile_and_run, [''])
 test('readInteger001', normal, compile_and_run, [''])
+test('readFixed001', normal, compile_and_run, [''])
 test('lex001', normal, compile_and_run, [''])
 test('take001', extra_run_opts('1'), compile_and_run, [''])
 test('genericNegative001', extra_run_opts('-1'), compile_and_run, [''])
diff --git a/tests/readFixed001.hs b/tests/readFixed001.hs
new file mode 100644
index 0000000..5336f9b
--- /dev/null
+++ b/tests/readFixed001.hs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+
+import Data.Fixed
+
+main :: IO ()
+main = do f "  (( (  12.3456  ) )  )  "
+          f "  (( (  12.3     ) )  )  "
+          f "  (( (  12.      ) )  )  "
+          f "  (( (  12       ) )  )  "
+          f "  (( - (  12.3456  ) )  )  "
+          f "  (( (  -12.3456  ) )  )  "
+
+f :: String -&amp;gt; IO ()
+f str = print (reads str :: [(Centi, String)])
diff --git a/tests/readFixed001.stdout b/tests/readFixed001.stdout
new file mode 100644
index 0000000..82b2030
--- /dev/null
+++ b/tests/readFixed001.stdout
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+[(12.34,"  ")]
+[(12.30,"  ")]
+[]
+[(12.00,"  ")]
+[]
+[(-12.34,"  ")]
&lt;/pre&gt;</description>
    <dc:creator>Ian Lynagh</dc:creator>
    <dc:date>2013-01-03T01:24:38</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15871">
    <title>[commit: base] master: Clarify the wording of the 'insert' haddock;fixes #7421 (08f3e69)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15871</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/base

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/08f3e69e34a889c8b85513b243935665a000bfac


commit 08f3e69e34a889c8b85513b243935665a000bfac
Author: Ian Lynagh &amp;lt;ian&amp;lt; at &amp;gt;well-typed.com&amp;gt;
Date:   Wed Jan 2 21:42:22 2013 +0000

    Clarify the wording of the 'insert' haddock; fixes #7421
    
    Wording suggested by Bart Massey.


 Data/List.hs |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/Data/List.hs b/Data/List.hs
index efd0fd1..0049237 100644
--- a/Data/List.hs
+++ b/Data/List.hs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -509,7 +509,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; mapAccumR f s (x:xs)    =  (s'', y:ys)
                                  (s', ys) = mapAccumR f s xs
 
 -- | The 'insert' function takes an element and a list and inserts the
--- element into the list at the last position where it is still less
+-- element into the list at the first position where it is less
 -- than or equal to the next element.  In particular, if the list
 -- is sorted before the call, the result will also be sorted.
 -- It is a special case of 'insertBy', which allows the programmer to
&lt;/pre&gt;</description>
    <dc:creator>Ian Lynagh</dc:creator>
    <dc:date>2013-01-03T01:24:35</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15870">
    <title>[commit: directory] master: Make getModificationTime return ahi-resolution time; fixes #7473 (62aa6b1)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15870</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/directory

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/62aa6b14da8fe8d26fca162b3b93228f0333ebe3


commit 62aa6b14da8fe8d26fca162b3b93228f0333ebe3
Author: Ian Lynagh &amp;lt;ian&amp;lt; at &amp;gt;well-typed.com&amp;gt;
Date:   Wed Jan 2 15:28:54 2013 +0000

    Make getModificationTime return a hi-resolution time; fixes #7473
    
    We were only getting an integral number of seconds before. This change
    only affects non-Windows platforms. Patch from Duncan Coutts.


 System/Directory.hs |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/System/Directory.hs b/System/Directory.hs
index 15c85e0..fe9c6f1 100644
--- a/System/Directory.hs
+++ b/System/Directory.hs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -969,14 +969,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; The operation may fail with:
 getModificationTime :: FilePath -&amp;gt; IO UTCTime
 getModificationTime name = do
 #ifdef mingw32_HOST_OS
- -- ToDo: use Win32 API
+ -- ToDo: use Win32 API so we can get sub-second resolution
  withFileStatus "getModificationTime" name $ \ st -&amp;gt; do
  modificationTime st
 #else
   stat &amp;lt;- Posix.getFileStatus name
-  let mod_time :: Posix.EpochTime
-      mod_time = Posix.modificationTime stat
-  return $ posixSecondsToUTCTime $ realToFrac mod_time
+  let mod_time :: POSIXTime
+      mod_time = Posix.modificationTimeHiRes stat
+  return $ posixSecondsToUTCTime mod_time
 #endif
 
 #endif /* __GLASGOW_HASKELL__ */
&lt;/pre&gt;</description>
    <dc:creator>Ian Lynagh</dc:creator>
    <dc:date>2013-01-02T17:55:35</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15869">
    <title>[commit: integer-gmp] master: Fix configure when we don't have a gmplibrary (d86166d)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15869</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/integer-gmp

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/d86166d5ca901eb339c4f1f5aca4d636ee86d91f


commit d86166d5ca901eb339c4f1f5aca4d636ee86d91f
Author: Ian Lynagh &amp;lt;igloo&amp;lt; at &amp;gt;earth.li&amp;gt;
Date:   Tue Jan 1 18:41:51 2013 +0000

    Fix configure when we don't have a gmp library


 configure.ac |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/configure.ac b/configure.ac
index 7ea296c..d7c0b3e 100644
--- a/configure.ac
+++ b/configure.ac
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -50,7 +50,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; else
     LOOK_FOR_GMP_LIB
     LOOK_FOR_GMP_FRAMEWORK
 fi
-if test "$HaveFrameworkGMP" = "YES" || test "$HaveLibGmp" = "NO"
+if test "$HaveFrameworkGMP" = "YES" || test "$HaveLibGmp" = "YES"
 then
     AC_CHECK_HEADER([gmp.h], , [AC_MSG_ERROR([Cannot find gmp.h])])
 fi
&lt;/pre&gt;</description>
    <dc:creator>Ian Lynagh</dc:creator>
    <dc:date>2013-01-01T19:44:07</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15868">
    <title>[commit: integer-gmp] master: Provide a way for OS X users toindicate a preference for the GMP framework (2cf2423)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15868</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/integer-gmp

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/2cf2423a0c0c1e6495812467deee4df0cb4320fa


commit 2cf2423a0c0c1e6495812467deee4df0cb4320fa
Author: Ian Lynagh &amp;lt;ian&amp;lt; at &amp;gt;well-typed.com&amp;gt;
Date:   Tue Jan 1 17:01:00 2013 +0000

    Provide a way for OS X users to indicate a preference for the GMP framework
    
    We used to always use the framework if it existed. Now the make variable
    GMP_PREFER_FRAMEWORK can be used to control whether the library or the
    framework is preferred.
    
    Fixes #7466.


 aclocal.m4   |   39 +++++++++++++++++++++++++++++++++++++++
 configure.ac |   49 ++++++++++++++++++++++---------------------------
 gmp/ghc.mk   |    4 ++++
 3 files changed, 65 insertions(+), 27 deletions(-)

diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..8a9c467
--- /dev/null
+++ b/aclocal.m4
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,39 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+
+dnl--------------------------------------------------------------------
+dnl * Check whether this machine has gmp/gmp3 installed
+dnl--------------------------------------------------------------------
+
+AC_DEFUN([LOOK_FOR_GMP_LIB],[
+    if test "$HaveFrameworkGMP" = "NO"
+    then
+        AC_CHECK_LIB([gmp],  [__gmpz_fdiv_qr],
+                     [HaveLibGmp=YES; GMP_LIBS=gmp])
+        if test "$HaveLibGmp" = "NO"
+        then
+            AC_CHECK_LIB([gmp3], [__gmpz_fdiv_qr],
+                         [HaveLibGmp=YES; GMP_LIBS=gmp3])
+        fi
+    fi
+])
+
+dnl--------------------------------------------------------------------
+dnl * Mac OS X only: check for GMP.framework
+dnl--------------------------------------------------------------------
+
+AC_DEFUN([LOOK_FOR_GMP_FRAMEWORK],[
+    if test "$HaveLibGmp" = "NO"
+    then
+        case $target_os in
+        darwin*)
+            AC_MSG_CHECKING([for GMP.framework])
+            save_libs="$LIBS"
+            LIBS="-framework GMP"
+            AC_TRY_LINK_FUNC(__gmpz_fdiv_qr,
+                             [HaveFrameworkGMP=YES; GMP_FRAMEWORK=GMP])
+            LIBS="$save_libs"
+            AC_MSG_RESULT([$HaveFrameworkGMP])
+            ;;
+        esac
+    fi
+])
+
diff --git a/configure.ac b/configure.ac
index b6a8003..7ea296c 100644
--- a/configure.ac
+++ b/configure.ac
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -27,38 +27,33 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; AC_ARG_WITH([gmp-libraries],
     [GMP_LIB_DIRS=$withval; LDFLAGS="-L$withval"],
     [GMP_LIB_DIRS=])
 
+AC_ARG_WITH([gmp-framework-preferred],
+  [AC_HELP_STRING([--with-gmp-framework-preferred],
+    [on OSX, prefer the GMP framework to the gmp lib])],
+    [GMP_PREFER_FRAMEWORK=YES],
+    [GMP_PREFER_FRAMEWORK=NO])
 
 dnl--------------------------------------------------------------------
-dnl * Check whether this machine has gmp/gmp3 installed
+dnl * Detect gmp
 dnl--------------------------------------------------------------------
 
-AC_CHECK_LIB([gmp],  [__gmpz_fdiv_qr],
-             [HaveLibGmp=YES; GMP_LIBS=gmp],
-             [HaveLibGmp=NO;  GMP_LIBS=])
-if test "$HaveLibGmp" = "NO"; then
-AC_CHECK_LIB([gmp3], [__gmpz_fdiv_qr],
-             [HaveLibGmp=YES; GMP_LIBS=gmp3],
-             [HaveLibGmp=NO;  GMP_LIBS=])
+HaveLibGmp=NO
+GMP_LIBS=
+HaveFrameworkGMP=NO
+GMP_FRAMEWORK=
+
+if test "$GMP_PREFER_FRAMEWORK" = "YES"
+then
+    LOOK_FOR_GMP_FRAMEWORK
+    LOOK_FOR_GMP_LIB
+else
+    LOOK_FOR_GMP_LIB
+    LOOK_FOR_GMP_FRAMEWORK
+fi
+if test "$HaveFrameworkGMP" = "YES" || test "$HaveLibGmp" = "NO"
+then
+    AC_CHECK_HEADER([gmp.h], , [AC_MSG_ERROR([Cannot find gmp.h])])
 fi
-
-dnl--------------------------------------------------------------------
-dnl * Mac OS X only: check for GMP.framework
-dnl--------------------------------------------------------------------
-
-case $target_os in
-  darwin*)
-    AC_MSG_CHECKING([for GMP.framework])
-    save_libs="$LIBS"
-    LIBS="-framework GMP"
-    AC_TRY_LINK_FUNC(__gmpz_fdiv_qr,
-      [HaveFrameworkGMP=YES; GMP_FRAMEWORK=GMP; GMP_LIBS=],
-      [HaveFrameworkGMP=NO])
-    LIBS="$save_libs"
-    AC_MSG_RESULT([$HaveFrameworkGMP])
-    ;;
-esac
-
-AC_CHECK_HEADER([gmp.h], , [HaveFrameworkGMP=NO; HaveLibGmp=NO; GMP_LIBS=])
 
 dnl--------------------------------------------------------------------
 dnl * Make sure we got some form of gmp
diff --git a/gmp/ghc.mk b/gmp/ghc.mk
index 8c60e6f..b39f36a 100644
--- a/gmp/ghc.mk
+++ b/gmp/ghc.mk
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -39,6 +39,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ifeq "$(findstring clean,$(MAKECMDGOALS))" ""
 include libraries/integer-gmp/gmp/config.mk
 endif
 
+ifeq "$(GMP_PREFER_FRAMEWORK)" "YES"
+libraries/integer-gmp_CC_OPTS += --with-gmp-framework-preferred
+endif
+
 libraries/integer-gmp_CC_OPTS += $(addprefix -I,$(GMP_INCLUDE_DIRS))
 libraries/integer-gmp_CC_OPTS += $(addprefix -L,$(GMP_LIB_DIRS))
&lt;/pre&gt;</description>
    <dc:creator>Ian Lynagh</dc:creator>
    <dc:date>2013-01-01T19:44:05</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15867">
    <title>[commit: directory] master: Fix Haddock markup (213a987)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15867</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/directory

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/213a9871a4a633c9c2e4707a43cfb7b4cee85694


commit 213a9871a4a633c9c2e4707a43cfb7b4cee85694
Author: Simon Hengel &amp;lt;sol&amp;lt; at &amp;gt;typeful.net&amp;gt;
Date:   Tue Oct 2 21:43:46 2012 +0200

    Fix Haddock markup


 System/Directory.hs |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/System/Directory.hs b/System/Directory.hs
index 759693c..15c85e0 100644
--- a/System/Directory.hs
+++ b/System/Directory.hs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1037,7 +1037,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; instead.
 On Unix, 'getHomeDirectory' returns the value of the &amp;lt; at &amp;gt;HOME&amp;lt; at &amp;gt;
 environment variable.  On Windows, the system is queried for a
 suitable path; a typical path might be 
-&amp;lt; at &amp;gt;C:/Documents And Settings/user&amp;lt; at &amp;gt;.
+&amp;lt; at &amp;gt;C:\/Documents And Settings\/user&amp;lt; at &amp;gt;.
 
 The operation may fail with:
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1112,7 +1112,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; instead.
 On Unix, 'getUserDocumentsDirectory' returns the value of the &amp;lt; at &amp;gt;HOME&amp;lt; at &amp;gt;
 environment variable.  On Windows, the system is queried for a
 suitable path; a typical path might be 
-&amp;lt; at &amp;gt;C:\/Documents and Settings\/user\/My Documents&amp;lt; at &amp;gt;.
+&amp;lt; at &amp;gt;C:\/Documents And Settings\/user\/My Documents&amp;lt; at &amp;gt;.
 
 The operation may fail with:
&lt;/pre&gt;</description>
    <dc:creator>Ian Lynagh</dc:creator>
    <dc:date>2013-01-01T19:43:35</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15866">
    <title>[commit: base] master: Expose Data.Fixed.Fixed's constructor (05c03d8)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15866</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/base

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/05c03d850a7da7bd708e9a9da7de2b9ba36b6041


commit 05c03d850a7da7bd708e9a9da7de2b9ba36b6041
Author: Ian Lynagh &amp;lt;ian&amp;lt; at &amp;gt;well-typed.com&amp;gt;
Date:   Tue Jan 1 15:04:47 2013 +0000

    Expose Data.Fixed.Fixed's constructor
    
    Discussed on libraries&amp;lt; at &amp;gt;, and summarised in
    http://www.haskell.org/pipermail/libraries/2012-December/019076.html


 Data/Fixed.hs |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/Data/Fixed.hs b/Data/Fixed.hs
index 81e7c03..b4a9857 100644
--- a/Data/Fixed.hs
+++ b/Data/Fixed.hs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -28,7 +28,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; module Data.Fixed
 (
     div',mod',divMod',
 
-    Fixed,HasResolution(..),
+    Fixed(..), HasResolution(..),
     showFixed,
     E0,Uni,
     E1,Deci,
&lt;/pre&gt;</description>
    <dc:creator>Ian Lynagh</dc:creator>
    <dc:date>2013-01-01T19:43:12</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15864">
    <title>[commit: base] master: BufferedIO: fix bug in writeBufNonBlockingintroduced by commit 7d39e100 (040313e)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15864</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/base

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/040313eb7d79aca47cb897479c6bca1af5e2ffb3


commit 040313eb7d79aca47cb897479c6bca1af5e2ffb3
Author: Joey Adams &amp;lt;joeyadams3.14159&amp;lt; at &amp;gt;gmail.com&amp;gt;
Date:   Mon Dec 24 12:44:22 2012 -0500

    BufferedIO: fix bug in writeBufNonBlocking introduced by commit 7d39e100
    
    bufferAdjustL does nothing but update bufL, and set bufL = bufR = 0
    when bufL == bufR.  It ignores the old bufL.
    
    writeBufNonBlocking is currently unused.  It is only used to implement
    flushWriteBuffer0, which is never called by base
    (hPutBufNonBlocking uses a blocking flush).


 GHC/IO/BufferedIO.hs |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/GHC/IO/BufferedIO.hs b/GHC/IO/BufferedIO.hs
index ef78d90..b715c61 100644
--- a/GHC/IO/BufferedIO.hs
+++ b/GHC/IO/BufferedIO.hs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -123,5 +123,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; writeBufNonBlocking dev bbuf = do
   let bytes = bufferElems bbuf
   res &amp;lt;- withBuffer bbuf $ \ptr -&amp;gt;
             IODevice.writeNonBlocking dev (ptr `plusPtr` bufL bbuf) bytes
-  return (res, bufferAdjustL res bbuf)
+  return (res, bufferAdjustL (bufL bbuf + res) bbuf)
&lt;/pre&gt;</description>
    <dc:creator>Joey Adams</dc:creator>
    <dc:date>2012-12-28T18:12:27</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15863">
    <title>[commit: base] master: GHC.IO.Buffer: use memmove instead of memcpyin slideContents (cb6f03d)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15863</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/base

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/cb6f03db3e0df85b47bb6086728cd51d982a46b9


commit cb6f03db3e0df85b47bb6086728cd51d982a46b9
Author: Joey Adams &amp;lt;joeyadams3.14159&amp;lt; at &amp;gt;gmail.com&amp;gt;
Date:   Mon Dec 24 12:42:01 2012 -0500

    GHC.IO.Buffer: use memmove instead of memcpy in slideContents


 GHC/IO/Buffer.hs |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/GHC/IO/Buffer.hs b/GHC/IO/Buffer.hs
index 8f677f0..eb46eb1 100644
--- a/GHC/IO/Buffer.hs
+++ b/GHC/IO/Buffer.hs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -256,12 +256,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; slideContents :: Buffer Word8 -&amp;gt; IO (Buffer Word8)
 slideContents buf&amp;lt; at &amp;gt;Buffer{ bufL=l, bufR=r, bufRaw=raw } = do
   let elems = r - l
   withRawBuffer raw $ \p -&amp;gt;
-      do _ &amp;lt;- memcpy p (p `plusPtr` l) (fromIntegral elems)
+      do _ &amp;lt;- memmove p (p `plusPtr` l) (fromIntegral elems)
          return ()
   return buf{ bufL=0, bufR=elems }
 
-foreign import ccall unsafe "memcpy"
-   memcpy :: Ptr a -&amp;gt; Ptr a -&amp;gt; CSize -&amp;gt; IO (Ptr ())
+foreign import ccall unsafe "memmove"
+   memmove :: Ptr a -&amp;gt; Ptr a -&amp;gt; CSize -&amp;gt; IO (Ptr a)
 
 summaryBuffer :: Buffer a -&amp;gt; String
 summaryBuffer buf = "buf" ++ show (bufSize buf) ++ "(" ++ show (bufL buf) ++ "-" ++ show (bufR buf) ++ ")"
&lt;/pre&gt;</description>
    <dc:creator>Joey Adams</dc:creator>
    <dc:date>2012-12-28T18:12:25</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15862">
    <title>[commit: base] master: Make sum and product INLINABLE (06e36c6)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15862</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/base

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/06e36c63fce9aef5d3d8d9efeab14263333d48bf


commit 06e36c63fce9aef5d3d8d9efeab14263333d48bf
Author: Simon Peyton Jones &amp;lt;simonpj&amp;lt; at &amp;gt;microsoft.com&amp;gt;
Date:   Mon Dec 24 14:44:31 2012 +0000

    Make sum and product INLINABLE
    
    This was causing the bad behaviour in Trac #7507,
    because 'sum' wasn't getting specialised to Int64.
    
    It also deals with Trac #4321, which had the same cause.
    
    This has a big effect on some nofib programs too:
    
    --------------------------------------------------------------------------------
            Program           Allocs   Runtime   Elapsed  TotalMem
    ------------------------------------------------------------------------
         bernouilli            -2.6%     -2.0%     -2.0%     +0.0%
               fft2           -23.8%      0.09      0.09    -16.7%
              fluid            -4.4%      0.01      0.01     +0.0%
             hidden            -3.2%     +2.1%     +1.8%     +0.0%
          integrate           -38.0%    -47.7%    -47.7%     -1.0%
               x2n1           -30.2%      0.01      0.01    -50.0%
    ------------------------------------------------------------------------
                Min           -38.0%    -47.7%    -47.7%    -50.0%
                Max            +0.4%    +11.2%    +11.8%     +6.9%
     Geometric Mean            -1.3%     +0.2%     +0.2%     -0.8%


 Data/List.hs |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/Data/List.hs b/Data/List.hs
index 9d09c0a..efd0fd1 100644
--- a/Data/List.hs
+++ b/Data/List.hs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1033,8 +1033,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; foldl1' _ []             =  errorEmptyList "foldl1'"
 
 {-# SPECIALISE sum     :: [Int] -&amp;gt; Int #-}
 {-# SPECIALISE sum     :: [Integer] -&amp;gt; Integer #-}
+{-# INLINABLE sum #-}
 {-# SPECIALISE product :: [Int] -&amp;gt; Int #-}
 {-# SPECIALISE product :: [Integer] -&amp;gt; Integer #-}
+{-# INLINABLE product #-}
+-- We make 'sum' and 'product' inlinable so that we get specialisations
+-- at other types.  See, for example, Trac #7507.
+
 -- | The 'sum' function computes the sum of a finite list of numbers.
 sum                     :: (Num a) =&amp;gt; [a] -&amp;gt; a
 -- | The 'product' function computes the product of a finite list of numbers.
&lt;/pre&gt;</description>
    <dc:creator>Simon Peyton Jones</dc:creator>
    <dc:date>2012-12-24T14:44:51</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15861">
    <title>[commit: base] master: Merge branch 'master' ofhttp://darcs.haskell.org/packages/base (f07215b)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15861</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/base

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/f07215b83132b9bc9b0078a0e0940934319f3360


commit f07215b83132b9bc9b0078a0e0940934319f3360
Merge: d9b6b25... 85bda3d...
Author: Simon Peyton Jones &amp;lt;simonpj&amp;lt; at &amp;gt;microsoft.com&amp;gt;
Date:   Mon Dec 24 09:50:04 2012 +0000

    Merge branch 'master' of http://darcs.haskell.org/packages/base

 GHC/TypeLits.hs   |   40 ++++++++++++++++++++++++++++++++++++++++
 tests/qsemn001.hs |    1 -
 2 files changed, 40 insertions(+), 1 deletions(-)
&lt;/pre&gt;</description>
    <dc:creator>Simon Peyton Jones</dc:creator>
    <dc:date>2012-12-24T14:44:49</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15860">
    <title>[commit: base] master: Define GHC.Read.expectP andText.Read.Lex.expect (d9b6b25)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15860</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/base

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/d9b6b25a30bfdaefb69c29dedb30eed06ae71e61


commit d9b6b25a30bfdaefb69c29dedb30eed06ae71e61
Author: Simon Peyton Jones &amp;lt;simonpj&amp;lt; at &amp;gt;microsoft.com&amp;gt;
Date:   Fri Dec 21 17:40:08 2012 +0000

    Define GHC.Read.expectP and Text.Read.Lex.expect
    
    They are now used by TcGenDeriv


 GHC/Read.lhs     |   29 ++++++++++++++++-------------
 Text/Read/Lex.hs |    7 ++++++-
 2 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/GHC/Read.lhs b/GHC/Read.lhs
index c5024fc..c542274 100644
--- a/GHC/Read.lhs
+++ b/GHC/Read.lhs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -32,7 +32,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; module GHC.Read
   , lexDigits
 
   -- defining readers
-  , lexP
+  , lexP, expectP
   , paren
   , parens
   , list
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -270,12 +270,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; lexP :: ReadPrec L.Lexeme
 -- ^ Parse a single lexeme
 lexP = lift L.lex
 
+expectP :: L.Lexeme -&amp;gt; ReadPrec ()
+expectP lexeme = lift (L.expect lexeme)
+
 paren :: ReadPrec a -&amp;gt; ReadPrec a
 -- ^ &amp;lt; at &amp;gt;(paren p)&amp;lt; at &amp;gt; parses \"(P0)\"
 --      where &amp;lt; at &amp;gt;p&amp;lt; at &amp;gt; parses \"P0\" in precedence context zero
-paren p = do L.Punc "(" &amp;lt;- lexP
-             x          &amp;lt;- reset p
-             L.Punc ")" &amp;lt;- lexP
+paren p = do expectP (L.Punc "(")
+             x &amp;lt;- reset p
+             expectP (L.Punc ")")
              return x
 
 parens :: ReadPrec a -&amp;gt; ReadPrec a
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -292,7 +295,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; list :: ReadPrec a -&amp;gt; ReadPrec [a]
 -- using the usual square-bracket syntax.
 list readx =
   parens
-  ( do L.Punc "[" &amp;lt;- lexP
+  ( do expectP (L.Punc "[")
        (listRest False +++ listNext)
   )
  where
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -408,12 +411,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; parenthesis-like objects such as (...) and [...] can be an argument to
 instance Read a =&amp;gt; Read (Maybe a) where
   readPrec =
     parens
-    (do L.Ident "Nothing" &amp;lt;- lexP
+    (do expectP (L.Ident "Nothing")
         return Nothing
      +++
      prec appPrec (
-        do L.Ident "Just" &amp;lt;- lexP
-           x              &amp;lt;- step readPrec
+        do expectP (L.Ident "Just")
+           x &amp;lt;- step readPrec
            return (Just x))
     )
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -427,7 +430,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; instance Read a =&amp;gt; Read [a] where
 
 instance  (Ix a, Read a, Read b) =&amp;gt; Read (Array a b)  where
     readPrec = parens $ prec appPrec $
-               do L.Ident "array" &amp;lt;- lexP
+               do expectP (L.Ident "array")
                   theBounds &amp;lt;- step readPrec
                   vals   &amp;lt;- step readPrec
                   return (array theBounds vals)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -504,9 +507,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; instance (Integral a, Read a) =&amp;gt; Read (Ratio a) where
   readPrec =
     parens
     ( prec ratioPrec
-      ( do x            &amp;lt;- step readPrec
-           L.Symbol "%" &amp;lt;- lexP
-           y            &amp;lt;- step readPrec
+      ( do x &amp;lt;- step readPrec
+           expectP (L.Symbol "%")
+           y &amp;lt;- step readPrec
            return (x % y)
       )
     )
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -543,7 +546,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; wrap_tup :: ReadPrec a -&amp;gt; ReadPrec a
 wrap_tup p = parens (paren p)
 
 read_comma :: ReadPrec ()
-read_comma = do { L.Punc "," &amp;lt;- lexP; return () }
+read_comma = expectP (L.Punc ",")
 
 read_tup2 :: (Read a, Read b) =&amp;gt; ReadPrec (a,b)
 -- Reads "a , b"  no parens!
diff --git a/Text/Read/Lex.hs b/Text/Read/Lex.hs
index f5a07f1..8a64e21 100644
--- a/Text/Read/Lex.hs
+++ b/Text/Read/Lex.hs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -22,7 +22,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; module Text.Read.Lex
   , numberToInteger, numberToRational, numberToRangedRational
 
   -- lexer
-  , lex
+  , lex, expect
   , hsLex
   , lexChar
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -144,6 +144,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; numberToRational (MkDecimal iPart mFPart mExp)
 lex :: ReadP Lexeme
 lex = skipSpaces &amp;gt;&amp;gt; lexToken
 
+expect :: Lexeme -&amp;gt; ReadP ()
+expect lexeme = do { skipSpaces 
+                   ; thing &amp;lt;- lexToken
+                   ; if thing == lexeme then return () else pfail }
+
 hsLex :: ReadP String
 -- ^ Haskell lexer: returns the lexed string, rather than the lexeme
 hsLex = do skipSpaces
&lt;/pre&gt;</description>
    <dc:creator>Simon Peyton Jones</dc:creator>
    <dc:date>2012-12-24T14:44:46</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15859">
    <title>[commit: base] master: Add functions that compare singletons forequality (with evidence) (85bda3d)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15859</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/base

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/85bda3d6e36fb8b3d7121ccc01c8ccfc3942431f


commit 85bda3d6e36fb8b3d7121ccc01c8ccfc3942431f
Author: Iavor S. Diatchki &amp;lt;iavor.diatchki&amp;lt; at &amp;gt;gmail.com&amp;gt;
Date:   Sat Dec 22 15:22:43 2012 -0800

    Add functions that compare singletons for equality (with evidence)


 GHC/TypeLits.hs |   40 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/GHC/TypeLits.hs b/GHC/TypeLits.hs
index 50a5c86..ed1f205 100644
--- a/GHC/TypeLits.hs
+++ b/GHC/TypeLits.hs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -29,10 +29,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; module GHC.TypeLits
   , type (&amp;lt;=), type (&amp;lt;=?), type (+), type (*), type (^)
   , type (-)
 
+    -- * Comparing for equality
+  , type (:~:) (..), eqSingNat, eqSingSym
+
     -- * Destructing type-nat singletons.
   , isZero, IsZero(..)
   , isEven, IsEven(..)
 
+
     -- * Matching on type-nats
   , Nat1(..), FromNat1
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -215,4 +219,40 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; type family FromNat1 (n :: Nat1) :: Nat
 type instance FromNat1 Zero     = 0
 type instance FromNat1 (Succ n) = 1 + FromNat1 n
 
+--------------------------------------------------------------------------------
+
+-- | A type that provides evidence for equality between two types.
+data (:~:) :: k -&amp;gt; k -&amp;gt; * where
+  Refl :: a :~: a
+
+instance Show (a :~: b) where
+  show Refl = "Refl"
+
+{- | Check if two type-natural singletons of potentially different types
+are indeed the same, by comparing their runtime representations.
+
+WARNING: in combination with `unsafeSingNat` this may lead to unsoudness:
+
+&amp;gt; eqSingNat (sing :: Sing 1) (unsafeSingNat 1 :: Sing 2)
+&amp;gt; == Just (Refl :: 1 :~: 2)
+-}
+
+eqSingNat :: Sing (m :: Nat) -&amp;gt; Sing (n :: Nat) -&amp;gt; Maybe (m :~: n)
+eqSingNat x y
+  | fromSing x == fromSing y  = Just (unsafeCoerce Refl)
+  | otherwise                 = Nothing
+
+
+{- | Check if two symbol singletons of potentially different types
+are indeed the same, by comparing their runtime representations.
+WARNING: in combination with `unsafeSingSymbol` this may lead to unsoudness
+(see `eqSingNat` for an example).
+-}
+
+eqSingSym:: Sing (m :: Symbol) -&amp;gt; Sing (n :: Symbol) -&amp;gt; Maybe (m :~: n)
+eqSingSym x y
+  | fromSing x == fromSing y  = Just (unsafeCoerce Refl)
+  | otherwise                 = Nothing
+
+
&lt;/pre&gt;</description>
    <dc:creator>Iavor Diatchki</dc:creator>
    <dc:date>2012-12-22T23:24:17</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15858">
    <title>[commit: template-haskell] master: Implement overlapping type familyinstances. (ccd7891)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15858</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/template-haskell

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/ccd7891c536b29b8bea96eb92520f46e21390e39


commit ccd7891c536b29b8bea96eb92520f46e21390e39
Author: Richard Eisenberg &amp;lt;eir&amp;lt; at &amp;gt;cis.upenn.edu&amp;gt;
Date:   Fri Dec 21 20:57:04 2012 -0500

    Implement overlapping type family instances.
    
    An ordered, overlapping type family instance is introduced by 'type
    instance
    where', followed by equations. See the new section in the user manual
    (7.7.2.2) for details. The canonical example is Boolean equality at the
    type
    level:
    
    type family Equals (a :: k) (b :: k) :: Bool
    type instance where
      Equals a a = True
      Equals a b = False
    
    A branched family instance, such as this one, checks its equations in
    order
    and applies only the first the matches. As explained in the note
    [Instance
    checking within groups] in FamInstEnv.lhs, we must be careful not to
    simplify,
    say, (Equals Int b) to False, because b might later unify with Int.
    
    This commit includes all of the commits on the overlapping-tyfams
    branch. SPJ
    requested that I combine all my commits over the past several months
    into one
    monolithic commit. The following GHC repos are affected: ghc, testsuite,
    utils/haddock, libraries/template-haskell, and libraries/dph.
    
    Here are some details for the interested:
    
    - The definition of CoAxiom has been moved from TyCon.lhs to a
      new file CoAxiom.lhs. I made this decision because of the
      number of definitions necessary to support BranchList.
    
    - BranchList is a GADT whose type tracks whether it is a
      singleton list or not-necessarily-a-singleton-list. The reason
      I introduced this type is to increase static checking of places
      where GHC code assumes that a FamInst or CoAxiom is indeed a
      singleton. This assumption takes place roughly 10 times
      throughout the code. I was worried that a future change to GHC
      would invalidate the assumption, and GHC might subtly fail to
      do the right thing. By explicitly labeling CoAxioms and
      FamInsts as being Unbranched (singleton) or
      Branched (not-necessarily-singleton), we make this assumption
      explicit and checkable. Furthermore, to enforce the accuracy of
      this label, the list of branches of a CoAxiom or FamInst is
      stored using a BranchList, whose constructors constrain its
      type index appropriately.
    
    I think that the decision to use BranchList is probably the most
    controversial decision I made from a code design point of view.
    Although I provide conversions to/from ordinary lists, it is more
    efficient to use the brList... functions provided in CoAxiom than
    always to convert. The use of these functions does not wander far
    from the core CoAxiom/FamInst logic.
    
    BranchLists are motivated and explained in the note [Branched axioms] in
    CoAxiom.lhs.
    
    - The CoAxiom type has changed significantly. You can see the new
      type in CoAxiom.lhs. It uses a CoAxBranch type to track
      branches of the CoAxiom. Correspondingly various functions
      producing and consuming CoAxioms had to change, including the
      binary layout of interface files.
    
    - To get branched axioms to work correctly, it is important to have a
      notion
      of type "apartness": two types are apart if they cannot unify, and no
      substitution of variables can ever get them to unify, even after type
    family
      simplification. (This is different than the normal failure to unify
    because
      of the type family bit.) This notion in encoded in tcApartTys, in
    Unify.lhs.
      Because apartness is finer-grained than unification, the tcUnifyTys
    now
      calls tcApartTys.
    
    - CoreLinting axioms has been updated, both to reflect the new
      form of CoAxiom and to enforce the apartness rules of branch
      application. The formalization of the new rules is in
      docs/core-spec/core-spec.pdf.
    
    - The FamInst type (in types/FamInstEnv.lhs) has changed
      significantly, paralleling the changes to CoAxiom. Of course,
      this forced minor changes in many files.
    
    - There are several new Notes in FamInstEnv.lhs, including one
      discussing confluent overlap and why we're not doing it.
    
    - lookupFamInstEnv, lookupFamInstEnvConflicts, and
      lookup_fam_inst_env' (the function that actually does the work)
      have all been more-or-less completely rewritten. There is a
      Note [lookup_fam_inst_env' implementation] describing the
      implementation. One of the changes that affects other files is
      to change the type of matches from a pair of (FamInst, [Type])
      to a new datatype (which now includes the index of the matching
      branch). This seemed a better design.
    
    - The TySynInstD constructor in Template Haskell was updated to
      use the new datatype TySynEqn. I also bumped the TH version
      number, requiring changes to DPH cabal files. (That's why the
      DPH repo has an overlapping-tyfams branch.)
    
    - As SPJ requested, I refactored some of the code in HsDecls:
    
     * splitting up TyDecl into SynDecl and DataDecl, correspondingly
       changing HsTyDefn to HsDataDefn (with only one constructor)
    
     * splitting FamInstD into TyFamInstD and DataFamInstD and
       splitting FamInstDecl into DataFamInstDecl and TyFamInstDecl
    
     * making the ClsInstD take a ClsInstDecl, for parallelism with
       InstDecl's other constructors
    
     * changing constructor TyFamily into FamDecl
    
     * creating a FamilyDecl type that stores the details for a family
       declaration; this is useful because FamilyDecls can appear in classes
    but
       other decls cannot
    
     * restricting the associated types and associated type defaults for a
     * class
       to be the new, more restrictive types
    
     * splitting cid_fam_insts into cid_tyfam_insts and cid_datafam_insts,
       according to the new types
    
     * perhaps one or two more that I'm overlooking
    
    None of these changes has far-reaching implications.
    
    - The user manual, section 7.7.2.2, is updated to describe the new type
      family
      instances.

 Language/Haskell/TH.hs        |    6 +++---
 Language/Haskell/TH/Lib.hs    |   15 +++++++++++----
 Language/Haskell/TH/Ppr.hs    |    8 +++++++-
 Language/Haskell/TH/Syntax.hs |   14 +++++++++++++-
 4 files changed, 34 insertions(+), 9 deletions(-)


Diff suppressed because of size. To see it, use:

    git show ccd7891c536b29b8bea96eb92520f46e21390e39
&lt;/pre&gt;</description>
    <dc:creator>Richard Eisenberg</dc:creator>
    <dc:date>2012-12-22T02:00:19</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15857">
    <title>[commit: base] master: remove unnecessary STM import (8afc23c)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.haskell.cvs.libraries/15857</link>
    <description>&lt;pre&gt;Repository : ssh://darcs.haskell.org//srv/darcs/packages/base

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/8afc23c65498a0aeedc93290816e5930f03bbcf8


commit 8afc23c65498a0aeedc93290816e5930f03bbcf8
Author: Simon Marlow &amp;lt;marlowsd&amp;lt; at &amp;gt;gmail.com&amp;gt;
Date:   Fri Dec 21 14:33:24 2012 +0000

    remove unnecessary STM import


 tests/qsemn001.hs |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/tests/qsemn001.hs b/tests/qsemn001.hs
index c98f62e..86c0eae 100644
--- a/tests/qsemn001.hs
+++ b/tests/qsemn001.hs
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2,7 +2,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 import Control.Concurrent
 import Control.Exception
 import Control.Monad
-import Control.Concurrent.STM
 
 new = newQSemN
 wait = waitQSemN
&lt;/pre&gt;</description>
    <dc:creator>Simon Marlow</dc:creator>
    <dc:date>2012-12-21T15:43:39</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.lang.haskell.cvs.libraries">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.lang.haskell.cvs.libraries</link>
  </textinput>
</rdf:RDF>
