Hello community,

here is the log from the commit of package pointfree for openSUSE:Factory 
checked in at 2017-04-13 10:45:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pointfree (Old)
 and      /work/SRC/openSUSE:Factory/.pointfree.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "pointfree"

Thu Apr 13 10:45:16 2017 rev:6 rq:485183 version:1.1.1.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/pointfree/pointfree.changes      2016-10-19 
13:05:06.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.pointfree.new/pointfree.changes 2017-04-13 
10:45:18.323430649 +0200
@@ -1,0 +2,12 @@
+Tue Mar 14 09:25:08 UTC 2017 - psim...@suse.com
+
+- Update to version 1.1.1.3 with cabal2obs.
+
+-------------------------------------------------------------------
+Wed Feb 22 14:56:11 UTC 2017 - psim...@suse.com
+
+- Apply "update-dependencies-for-lts-8.patch" downloaded from
+  https://github.com/bmillwood/pointfree/pull/22.patch to fix
+  broken dependencies in LTS 8.x.
+
+-------------------------------------------------------------------

Old:
----
  pointfree-1.1.1.2.tar.gz

New:
----
  pointfree-1.1.1.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ pointfree.spec ++++++
--- /var/tmp/diff_new_pack.MTqeAE/_old  2017-04-13 10:45:19.031330540 +0200
+++ /var/tmp/diff_new_pack.MTqeAE/_new  2017-04-13 10:45:19.035329975 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package pointfree
 #
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
 %global pkg_name pointfree
 %bcond_with tests
 Name:           %{pkg_name}
-Version:        1.1.1.2
+Version:        1.1.1.3
 Release:        0
 Summary:        Tool for refactoring expressions into pointfree form
 License:        MIT

++++++ pointfree-1.1.1.2.tar.gz -> pointfree-1.1.1.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pointfree-1.1.1.2/ChangeLog 
new/pointfree-1.1.1.3/ChangeLog
--- old/pointfree-1.1.1.2/ChangeLog     2016-08-31 18:54:54.000000000 +0200
+++ new/pointfree-1.1.1.3/ChangeLog     2017-03-11 18:07:19.000000000 +0100
@@ -1,3 +1,7 @@
+v1.1.1.3:
+* Dependency update for HSE 1.19, HUnit 1.5 (thanks Nikolay Amiantov)
+* Fix bug due to incautious naming of temporary variables (thanks Jack 
Fransham)
+
 v1.1.1.2:
 * Dependency update for base 4.9, QuickCheck 2.9
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pointfree-1.1.1.2/Plugin/Pl/Common.hs 
new/pointfree-1.1.1.3/Plugin/Pl/Common.hs
--- old/pointfree-1.1.1.2/Plugin/Pl/Common.hs   2016-08-31 18:54:54.000000000 
+0200
+++ new/pointfree-1.1.1.3/Plugin/Pl/Common.hs   2017-03-11 18:07:19.000000000 
+0100
@@ -105,35 +105,35 @@
 minPrec = 0
 
 -- operator precedences are needed both for parsing and prettyprinting
-operators :: [[(String, (Assoc, Int))]]
+operators :: [[(String, (Assoc (), Int))]]
 operators = (map . map . second . second $ (+shift))
-  [[inf "." AssocRight 9, inf "!!" AssocLeft 9],
-   [inf name AssocRight 8 | name <- ["^", "^^", "**"]],
-   [inf name AssocLeft 7
+  [[inf "." (AssocRight ()) 9, inf "!!" (AssocLeft ()) 9],
+   [inf name (AssocRight ()) 8 | name <- ["^", "^^", "**"]],
+   [inf name (AssocLeft ()) 7
      | name <- ["*", "/", "`quot`", "`rem`", "`div`", "`mod`", ":%", "%"]],
-   [inf name AssocLeft 6  | name <- ["+", "-"]],
-   [inf name AssocRight 5 | name <- [":", "++"]],
-   [inf name AssocNone 4 
+   [inf name (AssocLeft ()) 6  | name <- ["+", "-"]],
+   [inf name (AssocRight ()) 5 | name <- [":", "++"]],
+   [inf name (AssocNone ()) 4
      | name <- ["==", "/=", "<", "<=", ">=", ">", "`elem`", "`notElem`"]],
-   [inf "&&" AssocRight 3],
-   [inf "||" AssocRight 2],
-   [inf ">>" AssocLeft 1, inf ">>=" AssocLeft 1, inf "=<<" AssocRight 1],
-   [inf name AssocRight 0 | name <- ["$", "$!", "`seq`"]]
+   [inf "&&" (AssocRight ()) 3],
+   [inf "||" (AssocRight ()) 2],
+   [inf ">>" (AssocLeft ()) 1, inf ">>=" (AssocLeft ()) 1, inf "=<<" 
(AssocRight ()) 1],
+   [inf name (AssocRight ()) 0 | name <- ["$", "$!", "`seq`"]]
   ] where
   inf name assoc fx = (name, (assoc, fx))
 
 reservedOps :: [String]
 reservedOps = ["->", "..", "="]
 
-opFM :: M.Map String (Assoc, Int)
+opFM :: M.Map String (Assoc (), Int)
 opFM = (M.fromList $ concat operators)
 
-lookupOp :: String -> Maybe (Assoc, Int)
+lookupOp :: String -> Maybe (Assoc (), Int)
 lookupOp k = M.lookup k opFM
 
-lookupFix :: String -> (Assoc, Int)
+lookupFix :: String -> (Assoc (), Int)
 lookupFix str = case lookupOp $ str of
-  Nothing -> (AssocLeft, 9 + shift)
+  Nothing -> ((AssocLeft ()), 9 + shift)
   Just x  -> x
 
 readM :: (Monad m, Read a) => String -> m a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pointfree-1.1.1.2/Plugin/Pl/Parser.hs 
new/pointfree-1.1.1.3/Plugin/Pl/Parser.hs
--- old/pointfree-1.1.1.2/Plugin/Pl/Parser.hs   2016-08-31 18:54:54.000000000 
+0200
+++ new/pointfree-1.1.1.3/Plugin/Pl/Parser.hs   2017-03-11 18:07:19.000000000 
+0100
@@ -4,83 +4,83 @@
 
 import qualified Language.Haskell.Exts as HSE
 
-todo :: (Show e) => e -> a
-todo thing = error ("pointfree: not supported: " ++ show thing)
+todo :: (Functor e, Show (e ())) => e a -> r
+todo thing = error ("pointfree: not supported: " ++ show (fmap (const ()) 
thing))
 
-nameString :: HSE.Name -> (Fixity, String)
-nameString (HSE.Ident s) = (Pref, s)
-nameString (HSE.Symbol s) = (Inf, s)
-
-qnameString :: HSE.QName -> (Fixity, String)
-qnameString (HSE.Qual m n) = fmap ((HSE.prettyPrint m ++ ".") ++) (nameString 
n)
-qnameString (HSE.UnQual n) = nameString n
-qnameString (HSE.Special sc) = case sc of
-  HSE.UnitCon -> (Pref, "()")
-  HSE.ListCon -> (Pref, "[]")
-  HSE.FunCon -> (Inf, "->")
-  HSE.TupleCon HSE.Boxed n -> (Inf, replicate (n-1) ',')
+nameString :: HSE.Name a -> (Fixity, String)
+nameString (HSE.Ident _ s) = (Pref, s)
+nameString (HSE.Symbol _ s) = (Inf, s)
+
+qnameString :: HSE.QName a -> (Fixity, String)
+qnameString (HSE.Qual _ m n) = fmap ((HSE.prettyPrint m ++ ".") ++) 
(nameString n)
+qnameString (HSE.UnQual _ n) = nameString n
+qnameString (HSE.Special _ sc) = case sc of
+  HSE.UnitCon _ -> (Pref, "()")
+  HSE.ListCon _ -> (Pref, "[]")
+  HSE.FunCon _ -> (Inf, "->")
+  HSE.TupleCon _ HSE.Boxed n -> (Inf, replicate (n-1) ',')
   HSE.TupleCon{} -> todo sc
-  HSE.Cons -> (Inf, ":")
-  HSE.UnboxedSingleCon -> todo sc
+  HSE.Cons _ -> (Inf, ":")
+  HSE.UnboxedSingleCon{} -> todo sc
 
-opString :: HSE.QOp -> (Fixity, String)
-opString (HSE.QVarOp qn) = qnameString qn
-opString (HSE.QConOp qn) = qnameString qn
+opString :: HSE.QOp a -> (Fixity, String)
+opString (HSE.QVarOp _ qn) = qnameString qn
+opString (HSE.QConOp _ qn) = qnameString qn
 
 list :: [Expr] -> Expr
 list = foldr (\y ys -> cons `App` y `App` ys) nil
 
-hseToExpr :: HSE.Exp -> Expr
+hseToExpr :: HSE.Exp a -> Expr
 hseToExpr expr = case expr of
-  HSE.Var qn -> uncurry Var (qnameString qn)
+  HSE.Var _ qn -> uncurry Var (qnameString qn)
   HSE.IPVar{} -> todo expr
-  HSE.Con qn -> uncurry Var (qnameString qn)
-  HSE.Lit l -> case l of
-    HSE.String s -> list (map (Var Pref . show) s)
+  HSE.Con _ qn -> uncurry Var (qnameString qn)
+  HSE.Lit _ l -> case l of
+    HSE.String _ _ s -> list (map (Var Pref . show) s)
     _ -> Var Pref (HSE.prettyPrint l)
-  HSE.InfixApp p op q -> apps (Var Inf (snd (opString op))) [p,q]
-  HSE.App f x -> hseToExpr f `App` hseToExpr x
-  HSE.NegApp e -> Var Pref "negate" `App` hseToExpr e
+  HSE.InfixApp _ p op q -> apps (Var Inf (snd (opString op))) [p,q]
+  HSE.App _ f x -> hseToExpr f `App` hseToExpr x
+  HSE.NegApp _ e -> Var Pref "negate" `App` hseToExpr e
   HSE.Lambda _ ps e -> foldr (Lambda . hseToPattern) (hseToExpr e) ps
-  HSE.Let bs e -> case bs of
-    HSE.BDecls ds -> Let (map hseToDecl ds) (hseToExpr e)
-    HSE.IPBinds ips -> todo ips
-  HSE.If b t f -> apps if' [b,t,f]
+  HSE.Let _ bs e -> case bs of
+    HSE.BDecls _ ds -> Let (map hseToDecl ds) (hseToExpr e)
+    HSE.IPBinds _ ips -> todo ips
+  HSE.If _ b t f -> apps if' [b,t,f]
   HSE.Case{} -> todo expr
   HSE.Do{} -> todo expr
   HSE.MDo{} -> todo expr
-  HSE.Tuple HSE.Boxed es -> apps (Var Inf (replicate (length es - 1) ','))  es
+  HSE.Tuple _ HSE.Boxed es -> apps (Var Inf (replicate (length es - 1) ','))  
es
   HSE.TupleSection{} -> todo expr
-  HSE.List xs -> list (map hseToExpr xs)
-  HSE.Paren e -> hseToExpr e
-  HSE.LeftSection l op -> Var Inf (snd (opString op)) `App` hseToExpr l
-  HSE.RightSection op r -> flip' `App` Var Inf (snd (opString op)) `App` 
hseToExpr r
+  HSE.List _ xs -> list (map hseToExpr xs)
+  HSE.Paren _ e -> hseToExpr e
+  HSE.LeftSection _ l op -> Var Inf (snd (opString op)) `App` hseToExpr l
+  HSE.RightSection _ op r -> flip' `App` Var Inf (snd (opString op)) `App` 
hseToExpr r
   HSE.RecConstr{} -> todo expr
   HSE.RecUpdate{} -> todo expr
-  HSE.EnumFrom x -> apps (Var Pref "enumFrom") [x]
-  HSE.EnumFromTo x y -> apps (Var Pref "enumFromTo") [x,y]
-  HSE.EnumFromThen x y -> apps (Var Pref "enumFromThen") [x,y]
-  HSE.EnumFromThenTo x y z -> apps (Var Pref "enumFromThenTo") [x,y,z]
+  HSE.EnumFrom _ x -> apps (Var Pref "enumFrom") [x]
+  HSE.EnumFromTo _ x y -> apps (Var Pref "enumFromTo") [x,y]
+  HSE.EnumFromThen _ x y -> apps (Var Pref "enumFromThen") [x,y]
+  HSE.EnumFromThenTo _ x y z -> apps (Var Pref "enumFromThenTo") [x,y,z]
   _ -> todo expr
 
-apps :: Expr -> [HSE.Exp] -> Expr
+apps :: Expr -> [HSE.Exp a] -> Expr
 apps f xs = foldl (\a x -> a `App` hseToExpr x) f xs 
 
-hseToDecl :: HSE.Decl -> Decl
+hseToDecl :: HSE.Decl a -> Decl
 hseToDecl dec = case dec of
-  HSE.PatBind _ (HSE.PVar n) (HSE.UnGuardedRhs e) Nothing ->
+  HSE.PatBind _ (HSE.PVar _ n) (HSE.UnGuardedRhs _ e) Nothing ->
     Define (snd (nameString n)) (hseToExpr e)
-  HSE.FunBind [HSE.Match _ n ps Nothing (HSE.UnGuardedRhs e) Nothing] ->
+  HSE.FunBind _ [HSE.Match _ n ps (HSE.UnGuardedRhs _ e) Nothing] ->
     Define (snd (nameString n)) (foldr (\p x -> Lambda (hseToPattern p) x) 
(hseToExpr e) ps)
   _ -> todo dec
 
-hseToPattern :: HSE.Pat -> Pattern
+hseToPattern :: HSE.Pat a -> Pattern
 hseToPattern pat = case pat of
-  HSE.PVar n -> PVar (snd (nameString n))
-  HSE.PInfixApp l (HSE.Special HSE.Cons) r -> PCons (hseToPattern l) 
(hseToPattern r)
-  HSE.PTuple HSE.Boxed [p,q] -> PTuple (hseToPattern p) (hseToPattern q)
-  HSE.PParen p -> hseToPattern p
-  HSE.PWildCard -> PVar "_"
+  HSE.PVar _ n -> PVar (snd (nameString n))
+  HSE.PInfixApp _ l (HSE.Special _ (HSE.Cons _)) r -> PCons (hseToPattern l) 
(hseToPattern r)
+  HSE.PTuple _ HSE.Boxed [p,q] -> PTuple (hseToPattern p) (hseToPattern q)
+  HSE.PParen _ p -> hseToPattern p
+  HSE.PWildCard _ -> PVar "_"
   _ -> todo pat
 
 parsePF :: String -> Either String TopLevel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pointfree-1.1.1.2/Plugin/Pl/PrettyPrinter.hs 
new/pointfree-1.1.1.3/Plugin/Pl/PrettyPrinter.hs
--- old/pointfree-1.1.1.2/Plugin/Pl/PrettyPrinter.hs    2016-08-31 
18:54:54.000000000 +0200
+++ new/pointfree-1.1.1.3/Plugin/Pl/PrettyPrinter.hs    2017-03-11 
18:07:19.000000000 +0100
@@ -107,13 +107,13 @@
     showsPrec f2 e2 where
       fixity = snd $ lookupFix fx
       (f1, f2) = case fst $ lookupFix fx of
-        AssocRight -> (fixity+1, fixity + infixSafe e2 AssocLeft fixity)
-        AssocLeft  -> (fixity + infixSafe e1 AssocRight fixity, fixity+1)
-        AssocNone  -> (fixity+1, fixity+1)
+        AssocRight _ -> (fixity+1, fixity + infixSafe e2 (AssocLeft ()) fixity)
+        AssocLeft _ -> (fixity + infixSafe e1 (AssocRight ()) fixity, fixity+1)
+        AssocNone _ -> (fixity+1, fixity+1)
 
       -- This is a little bit awkward, but at least seems to produce no false
       -- results anymore
-      infixSafe :: SExpr -> Assoc -> Int -> Int
+      infixSafe :: SExpr -> Assoc () -> Int -> Int
       infixSafe (SInfix fx'' _ _) assoc fx'
         | lookupFix fx'' == (assoc, fx') = 1
         | otherwise = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pointfree-1.1.1.2/Plugin/Pl/Transform.hs 
new/pointfree-1.1.1.3/Plugin/Pl/Transform.hs
--- old/pointfree-1.1.1.2/Plugin/Pl/Transform.hs        2016-08-31 
18:54:54.000000000 +0200
+++ new/pointfree-1.1.1.3/Plugin/Pl/Transform.hs        2017-03-11 
18:07:19.000000000 +0100
@@ -89,32 +89,68 @@
 transform :: Expr -> Expr
 transform = transform' . alphaRename . unLet
 
+-- Infinite generator of variable names.
+varNames :: [String]
+varNames = concatMap (flip replicateM usableChars) [1..]
+  where
+    usableChars = ['a'..'z']
+
+-- First variable name not already in use
+fresh :: [String] -> String
+fresh variables = head . filter (not . flip elem variables) $ varNames
+
+names :: Expr -> [String]
+names (Var _ str)     = [str]
+-- Lambda pattern names are rewritten to be meaningless/unwritable, so we don't
+-- need to include them here. Variables from lambdas used in expressions are
+-- also rewritten, but there's no reason to special-case it unless it's 
provably
+-- poor-performing to scan over the result in `fresh`, which I doubt it is.
+names (Lambda _ exp)  = names exp
+names (App exp1 exp2) = names exp1 ++ names exp2
+names (Let dlcs exp)  = concatMap dnames dlcs ++ names exp
+  where
+    dnames (Define nm exp) = nm : names exp
+
 transform' :: Expr -> Expr
-transform' (Let {}) = assert False bt
-transform' (Var f v) = Var f v
-transform' (App e1 e2) = App (transform' e1) (transform' e2)
-transform' (Lambda (PTuple p1 p2) e) 
-  = transform' $ Lambda (PVar "z") $ 
-      (Lambda p1 $ Lambda p2 $ e) `App` f `App` s where
-    f = Var Pref "fst" `App` Var Pref "z"
-    s = Var Pref "snd" `App` Var Pref "z"
-transform' (Lambda (PCons p1 p2) e) 
-  = transform' $ Lambda (PVar "z") $ 
-      (Lambda p1 $ Lambda p2 $ e) `App` f `App` s where
-    f = Var Pref "head" `App` Var Pref "z"
-    s = Var Pref "tail" `App` Var Pref "z"
-transform' (Lambda (PVar v) e) = transform' $ getRidOfV e where
-  getRidOfV (Var f v') | v == v'   = id'
-                       | otherwise = const' `App` Var f v'
-  getRidOfV l@(Lambda pat _) = assert (not $ v `occursP` pat) $ 
-    getRidOfV $ transform' l
-  getRidOfV (Let {}) = assert False bt
-  getRidOfV e'@(App e1 e2) 
-    | fr1 && fr2 = scomb `App` getRidOfV e1 `App` getRidOfV e2
-    | fr1 = flip' `App` getRidOfV e1 `App` e2
-    | Var _ v' <- e2, v' == v = e1
-    | fr2 = comp `App` e1 `App` getRidOfV e2
-    | True = const' `App` e'
-    where
-      fr1 = v `isFreeIn` e1
-      fr2 = v `isFreeIn` e2
+transform' exp = go exp
+  where
+    -- Explicit sharing for readability
+    vars = names exp
+
+    go (Let {}) =
+      assert False bt
+    go (Var f v) =
+      Var f v
+    go (App e1 e2) =
+      App (go e1) (go e2)
+    go (Lambda (PTuple p1 p2) e) =
+      go $
+        Lambda (PVar var) $ (Lambda p1 . Lambda p2 $ e) `App` f `App` s
+      where
+        var   = fresh vars
+        f     = Var Pref "fst" `App` Var Pref var
+        s     = Var Pref "snd" `App` Var Pref var
+    go (Lambda (PCons p1 p2) e) =
+      go $
+        Lambda (PVar var) $ (Lambda p1 . Lambda p2 $ e) `App` f `App` s
+      where
+        var = fresh vars
+        f   = Var Pref "head" `App` Var Pref var
+        s   = Var Pref "tail" `App` Var Pref var
+    go (Lambda (PVar v) e) =
+      go $ getRidOfV e
+      where
+        getRidOfV (Var f v') | v == v'   = id'
+                             | otherwise = const' `App` Var f v'
+        getRidOfV l@(Lambda pat _) =
+          assert (not $ v `occursP` pat) $ getRidOfV $ go l
+        getRidOfV (Let {}) = assert False bt
+        getRidOfV e'@(App e1 e2)
+          | fr1 && fr2 = scomb `App` getRidOfV e1 `App` getRidOfV e2
+          | fr1 = flip' `App` getRidOfV e1 `App` e2
+          | Var _ v' <- e2, v' == v = e1
+          | fr2 = comp `App` e1 `App` getRidOfV e2
+          | True = const' `App` e'
+          where
+            fr1 = v `isFreeIn` e1
+            fr2 = v `isFreeIn` e2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pointfree-1.1.1.2/pointfree.cabal 
new/pointfree-1.1.1.3/pointfree.cabal
--- old/pointfree-1.1.1.2/pointfree.cabal       2016-08-31 18:54:54.000000000 
+0200
+++ new/pointfree-1.1.1.3/pointfree.cabal       2017-03-11 18:07:19.000000000 
+0100
@@ -1,7 +1,7 @@
 Cabal-Version: >= 1.8
 
 Name:     pointfree
-Version:  1.1.1.2
+Version:  1.1.1.3
 Category: Tool
 Synopsis: Tool for refactoring expressions into pointfree form
 
@@ -29,7 +29,7 @@
   Build-depends: base >= 4.5 && < 4.10,
                  array >= 0.3 && < 0.6,
                  containers >= 0.4 && < 0.6,
-                 haskell-src-exts == 1.17.*,
+                 haskell-src-exts >= 1.18 && < 1.20,
                  transformers < 0.6
   Other-modules: Plugin.Pl.Common
                  Plugin.Pl.Parser
@@ -45,7 +45,7 @@
   Build-depends: base >= 4.3 && < 4.10,
                  array >= 0.3 && < 0.6,
                  containers >= 0.4 && < 0.6,
-                 haskell-src-exts == 1.17.*,
+                 haskell-src-exts >= 1.18 && < 1.20,
                  transformers < 0.6
   Other-modules: Plugin.Pl.Common
                  Plugin.Pl.Parser
@@ -64,8 +64,8 @@
     array >= 0.3 && < 0.6,
     base < 5,
     containers >= 0.3 && < 0.6,
-    haskell-src-exts == 1.17.*,
-    HUnit >= 1.1 && < 1.4,
+    haskell-src-exts >= 1.18 && < 1.20,
+    HUnit >= 1.1 && < 1.6,
     QuickCheck >= 2.1 && < 2.10,
     transformers < 0.6
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pointfree-1.1.1.2/test/Test.hs 
new/pointfree-1.1.1.3/test/Test.hs
--- old/pointfree-1.1.1.2/test/Test.hs  2016-08-31 18:54:54.000000000 +0200
+++ new/pointfree-1.1.1.3/test/Test.hs  2017-03-11 18:07:19.000000000 +0100
@@ -186,7 +186,9 @@
   unitTest "let x = const 3 y; y = const 4 x in x + y" ["7"], -- yay!
   unitTest "(\\n -> (return 0) ± (return $ sqrt n))" ["(return 0 ±) . return . 
sqrt"],
   unitTest "\\b -> (\\c -> ((Control.Monad.>>=) c) (\\g -> 
Control.Applicative.pure (b g)))"
-    ["flip (Control.Monad.>>=) . (Control.Applicative.pure .)"]
+    ["flip (Control.Monad.>>=) . (Control.Applicative.pure .)"],
+  unitTest "\\(x, y) -> z" ["const z"],
+  unitTest "\\(x, y) -> a" ["const a"]
   ]
 
 main :: IO ()


Reply via email to