Hello community,
here is the log from the commit of package ghc-anonymous-sums for
openSUSE:Factory checked in at 2017-03-03 17:47:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-anonymous-sums (Old)
and /work/SRC/openSUSE:Factory/.ghc-anonymous-sums.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-anonymous-sums"
Fri Mar 3 17:47:56 2017 rev:2 rq:461602 version:0.6.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-anonymous-sums/ghc-anonymous-sums.changes
2016-09-25 14:31:48.000000000 +0200
+++
/work/SRC/openSUSE:Factory/.ghc-anonymous-sums.new/ghc-anonymous-sums.changes
2017-03-03 17:48:08.722521446 +0100
@@ -1,0 +2,5 @@
+Sun Feb 12 14:19:38 UTC 2017 - [email protected]
+
+- Update to version 0.6.0.0 with cabal2obs.
+
+-------------------------------------------------------------------
Old:
----
anonymous-sums-0.4.0.0.tar.gz
New:
----
anonymous-sums-0.6.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-anonymous-sums.spec ++++++
--- /var/tmp/diff_new_pack.PTowwY/_old 2017-03-03 17:48:09.558403398 +0100
+++ /var/tmp/diff_new_pack.PTowwY/_new 2017-03-03 17:48:09.562402833 +0100
@@ -1,7 +1,7 @@
#
# spec file for package ghc-anonymous-sums
#
-# 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
@@ -18,15 +18,17 @@
%global pkg_name anonymous-sums
Name: ghc-%{pkg_name}
-Version: 0.4.0.0
+Version: 0.6.0.0
Release: 0
Summary: Anonymous sum types
License: BSD-3-Clause
-Group: System/Libraries
+Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0:
https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz
BuildRequires: ghc-Cabal-devel
+BuildRequires: ghc-lens-devel
BuildRequires: ghc-rpm-macros
+BuildRequires: ghc-template-haskell-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@@ -47,15 +49,12 @@
%prep
%setup -q -n %{pkg_name}-%{version}
-
%build
%ghc_lib_build
-
%install
%ghc_lib_install
-
%post devel
%ghc_pkg_recache
++++++ anonymous-sums-0.4.0.0.tar.gz -> anonymous-sums-0.6.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/anonymous-sums-0.4.0.0/ChangeLog
new/anonymous-sums-0.6.0.0/ChangeLog
--- old/anonymous-sums-0.4.0.0/ChangeLog 2014-02-24 02:46:04.000000000
+0100
+++ new/anonymous-sums-0.6.0.0/ChangeLog 2016-12-23 20:30:20.000000000
+0100
@@ -10,3 +10,7 @@
Version 0.2.2.0
* added S1. Still debating whether and how to add S0.
+
+Version 0.6.0.0
+
+* Completely changed types and module names, and added Prisms
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/anonymous-sums-0.4.0.0/Data/Sums.hs
new/anonymous-sums-0.6.0.0/Data/Sums.hs
--- old/anonymous-sums-0.4.0.0/Data/Sums.hs 2014-02-24 02:46:04.000000000
+0100
+++ new/anonymous-sums-0.6.0.0/Data/Sums.hs 1970-01-01 01:00:00.000000000
+0100
@@ -1,550 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE EmptyDataDecls #-}
-
--- Text of this module generated by the generate-sums.hs
--- script, included with the source of the anonymous-sums
--- package.
-
--- | Anonymous sum types.
---
--- Provides functionality similar to that of tuples, but
--- for sum types rather than product types. Less clumsy
--- than using nested 'Either'.
-
-module Data.Sums where
-
-import Data.Typeable
-import Control.Exception
-
--- * Anonymous sum types
-
-data S0 deriving Typeable
-
-instance Eq S0 where _ == _ = undefined
-instance Ord S0 where compare _ _ = undefined
-instance Read S0 where readsPrec _ = undefined
-instance Show S0 where show _ = undefined
-instance Exception S0
-
-data S1 a = S1a a deriving (Eq, Ord, Read, Show, Typeable)
-instance (Typeable a, Show a) => Exception (S1 a)
-
-data S2 a b = S2a a | S2b b deriving (Eq, Ord, Read, Show, Typeable)
-instance (Typeable a, Show a, Typeable b, Show b) => Exception (S2 a b)
-
-data S3 a b c = S3a a | S3b b | S3c c deriving (Eq, Ord, Read, Show, Typeable)
-instance (Typeable a, Show a, Typeable b, Show b, Typeable c, Show c) =>
Exception (S3 a b c)
-
-data S4 a b c d = S4a a | S4b b | S4c c | S4d d deriving (Eq, Ord, Read, Show,
Typeable)
-instance (Typeable a, Show a, Typeable b, Show b, Typeable c, Show c, Typeable
d, Show d) => Exception (S4 a b c d)
-
-data S5 a b c d e = S5a a | S5b b | S5c c | S5d d | S5e e deriving (Eq, Ord,
Read, Show, Typeable)
-instance (Typeable a, Show a, Typeable b, Show b, Typeable c, Show c, Typeable
d, Show d, Typeable e, Show e) => Exception (S5 a b c d e)
-
-data S6 a b c d e f = S6a a | S6b b | S6c c | S6d d | S6e e | S6f f deriving
(Eq, Ord, Read, Show, Typeable)
-instance (Typeable a, Show a, Typeable b, Show b, Typeable c, Show c, Typeable
d, Show d, Typeable e, Show e, Typeable f, Show f) => Exception (S6 a b c d e f)
-
-data S7 a b c d e f g = S7a a | S7b b | S7c c | S7d d | S7e e | S7f f | S7g g
deriving (Eq, Ord, Read, Show, Typeable)
-instance (Typeable a, Show a, Typeable b, Show b, Typeable c, Show c, Typeable
d, Show d, Typeable e, Show e, Typeable f, Show f, Typeable g, Show g) =>
Exception (S7 a b c d e f g)
-
-data S8 a b c d e f g h = S8a a | S8b b | S8c c | S8d d | S8e e | S8f f | S8g
g | S8h h deriving (Eq, Ord, Read, Show)
-
-data S9 a b c d e f g h i = S9a a | S9b b | S9c c | S9d d | S9e e | S9f f |
S9g g | S9h h | S9i i deriving (Eq, Ord, Read, Show)
-
-data S10 a b c d e f g h i j = S10a a | S10b b | S10c c | S10d d | S10e e |
S10f f | S10g g | S10h h | S10i i | S10j j deriving (Eq, Ord, Read, Show)
-
-data S11 a b c d e f g h i j k = S11a a | S11b b | S11c c | S11d d | S11e e |
S11f f | S11g g | S11h h | S11i i | S11j j | S11k k deriving (Eq, Ord, Read,
Show)
-
-data S12 a b c d e f g h i j k l = S12a a | S12b b | S12c c | S12d d | S12e e
| S12f f | S12g g | S12h h | S12i i | S12j j | S12k k | S12l l deriving (Eq,
Ord, Read, Show)
-
-data S13 a b c d e f g h i j k l m = S13a a | S13b b | S13c c | S13d d | S13e
e | S13f f | S13g g | S13h h | S13i i | S13j j | S13k k | S13l l | S13m m
deriving (Eq, Ord, Read, Show)
-
-data S14 a b c d e f g h i j k l m n = S14a a | S14b b | S14c c | S14d d |
S14e e | S14f f | S14g g | S14h h | S14i i | S14j j | S14k k | S14l l | S14m m
| S14n n deriving (Eq, Ord, Read, Show)
-
-data S15 a b c d e f g h i j k l m n o = S15a a | S15b b | S15c c | S15d d |
S15e e | S15f f | S15g g | S15h h | S15i i | S15j j | S15k k | S15l l | S15m m
| S15n n | S15o o deriving (Eq, Ord, Read, Show)
-
--- * Partitioning
-
-partitionS0 :: [S0] -> ()
-partitionS0 _ = ()
-
-partitionS1 :: [S1 a] -> ([a])
-partitionS1 = foldr fn ([])
- where
- fn it (as) = case it of
- S1a a -> (a:as)
-
-partitionS2 :: [S2 a b] -> ([a], [b])
-partitionS2 = foldr fn ([], [])
- where
- fn it (as, bs) = case it of
- S2a a -> (a:as, bs)
- S2b b -> (as, b:bs)
-
-partitionS3 :: [S3 a b c] -> ([a], [b], [c])
-partitionS3 = foldr fn ([], [], [])
- where
- fn it (as, bs, cs) = case it of
- S3a a -> (a:as, bs, cs)
- S3b b -> (as, b:bs, cs)
- S3c c -> (as, bs, c:cs)
-
-partitionS4 :: [S4 a b c d] -> ([a], [b], [c], [d])
-partitionS4 = foldr fn ([], [], [], [])
- where
- fn it (as, bs, cs, ds) = case it of
- S4a a -> (a:as, bs, cs, ds)
- S4b b -> (as, b:bs, cs, ds)
- S4c c -> (as, bs, c:cs, ds)
- S4d d -> (as, bs, cs, d:ds)
-
-partitionS5 :: [S5 a b c d e] -> ([a], [b], [c], [d], [e])
-partitionS5 = foldr fn ([], [], [], [], [])
- where
- fn it (as, bs, cs, ds, es) = case it of
- S5a a -> (a:as, bs, cs, ds, es)
- S5b b -> (as, b:bs, cs, ds, es)
- S5c c -> (as, bs, c:cs, ds, es)
- S5d d -> (as, bs, cs, d:ds, es)
- S5e e -> (as, bs, cs, ds, e:es)
-
-partitionS6 :: [S6 a b c d e f] -> ([a], [b], [c], [d], [e], [f])
-partitionS6 = foldr fn ([], [], [], [], [], [])
- where
- fn it (as, bs, cs, ds, es, fs) = case it of
- S6a a -> (a:as, bs, cs, ds, es, fs)
- S6b b -> (as, b:bs, cs, ds, es, fs)
- S6c c -> (as, bs, c:cs, ds, es, fs)
- S6d d -> (as, bs, cs, d:ds, es, fs)
- S6e e -> (as, bs, cs, ds, e:es, fs)
- S6f f -> (as, bs, cs, ds, es, f:fs)
-
-partitionS7 :: [S7 a b c d e f g] -> ([a], [b], [c], [d], [e], [f], [g])
-partitionS7 = foldr fn ([], [], [], [], [], [], [])
- where
- fn it (as, bs, cs, ds, es, fs, gs) = case it of
- S7a a -> (a:as, bs, cs, ds, es, fs, gs)
- S7b b -> (as, b:bs, cs, ds, es, fs, gs)
- S7c c -> (as, bs, c:cs, ds, es, fs, gs)
- S7d d -> (as, bs, cs, d:ds, es, fs, gs)
- S7e e -> (as, bs, cs, ds, e:es, fs, gs)
- S7f f -> (as, bs, cs, ds, es, f:fs, gs)
- S7g g -> (as, bs, cs, ds, es, fs, g:gs)
-
-partitionS8 :: [S8 a b c d e f g h] -> ([a], [b], [c], [d], [e], [f], [g], [h])
-partitionS8 = foldr fn ([], [], [], [], [], [], [], [])
- where
- fn it (as, bs, cs, ds, es, fs, gs, hs) = case it of
- S8a a -> (a:as, bs, cs, ds, es, fs, gs, hs)
- S8b b -> (as, b:bs, cs, ds, es, fs, gs, hs)
- S8c c -> (as, bs, c:cs, ds, es, fs, gs, hs)
- S8d d -> (as, bs, cs, d:ds, es, fs, gs, hs)
- S8e e -> (as, bs, cs, ds, e:es, fs, gs, hs)
- S8f f -> (as, bs, cs, ds, es, f:fs, gs, hs)
- S8g g -> (as, bs, cs, ds, es, fs, g:gs, hs)
- S8h h -> (as, bs, cs, ds, es, fs, gs, h:hs)
-
-partitionS9 :: [S9 a b c d e f g h i] -> ([a], [b], [c], [d], [e], [f], [g],
[h], [i])
-partitionS9 = foldr fn ([], [], [], [], [], [], [], [], [])
- where
- fn it (as, bs, cs, ds, es, fs, gs, hs, is) = case it of
- S9a a -> (a:as, bs, cs, ds, es, fs, gs, hs, is)
- S9b b -> (as, b:bs, cs, ds, es, fs, gs, hs, is)
- S9c c -> (as, bs, c:cs, ds, es, fs, gs, hs, is)
- S9d d -> (as, bs, cs, d:ds, es, fs, gs, hs, is)
- S9e e -> (as, bs, cs, ds, e:es, fs, gs, hs, is)
- S9f f -> (as, bs, cs, ds, es, f:fs, gs, hs, is)
- S9g g -> (as, bs, cs, ds, es, fs, g:gs, hs, is)
- S9h h -> (as, bs, cs, ds, es, fs, gs, h:hs, is)
- S9i i -> (as, bs, cs, ds, es, fs, gs, hs, i:is)
-
-partitionS10 :: [S10 a b c d e f g h i j] -> ([a], [b], [c], [d], [e], [f],
[g], [h], [i], [j])
-partitionS10 = foldr fn ([], [], [], [], [], [], [], [], [], [])
- where
- fn it (as, bs, cs, ds, es, fs, gs, hs, is, js) = case it of
- S10a a -> (a:as, bs, cs, ds, es, fs, gs, hs, is, js)
- S10b b -> (as, b:bs, cs, ds, es, fs, gs, hs, is, js)
- S10c c -> (as, bs, c:cs, ds, es, fs, gs, hs, is, js)
- S10d d -> (as, bs, cs, d:ds, es, fs, gs, hs, is, js)
- S10e e -> (as, bs, cs, ds, e:es, fs, gs, hs, is, js)
- S10f f -> (as, bs, cs, ds, es, f:fs, gs, hs, is, js)
- S10g g -> (as, bs, cs, ds, es, fs, g:gs, hs, is, js)
- S10h h -> (as, bs, cs, ds, es, fs, gs, h:hs, is, js)
- S10i i -> (as, bs, cs, ds, es, fs, gs, hs, i:is, js)
- S10j j -> (as, bs, cs, ds, es, fs, gs, hs, is, j:js)
-
-partitionS11 :: [S11 a b c d e f g h i j k] -> ([a], [b], [c], [d], [e], [f],
[g], [h], [i], [j], [k])
-partitionS11 = foldr fn ([], [], [], [], [], [], [], [], [], [], [])
- where
- fn it (as, bs, cs, ds, es, fs, gs, hs, is, js, ks) = case it of
- S11a a -> (a:as, bs, cs, ds, es, fs, gs, hs, is, js, ks)
- S11b b -> (as, b:bs, cs, ds, es, fs, gs, hs, is, js, ks)
- S11c c -> (as, bs, c:cs, ds, es, fs, gs, hs, is, js, ks)
- S11d d -> (as, bs, cs, d:ds, es, fs, gs, hs, is, js, ks)
- S11e e -> (as, bs, cs, ds, e:es, fs, gs, hs, is, js, ks)
- S11f f -> (as, bs, cs, ds, es, f:fs, gs, hs, is, js, ks)
- S11g g -> (as, bs, cs, ds, es, fs, g:gs, hs, is, js, ks)
- S11h h -> (as, bs, cs, ds, es, fs, gs, h:hs, is, js, ks)
- S11i i -> (as, bs, cs, ds, es, fs, gs, hs, i:is, js, ks)
- S11j j -> (as, bs, cs, ds, es, fs, gs, hs, is, j:js, ks)
- S11k k -> (as, bs, cs, ds, es, fs, gs, hs, is, js, k:ks)
-
-partitionS12 :: [S12 a b c d e f g h i j k l] -> ([a], [b], [c], [d], [e],
[f], [g], [h], [i], [j], [k], [l])
-partitionS12 = foldr fn ([], [], [], [], [], [], [], [], [], [], [], [])
- where
- fn it (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls) = case it of
- S12a a -> (a:as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls)
- S12b b -> (as, b:bs, cs, ds, es, fs, gs, hs, is, js, ks, ls)
- S12c c -> (as, bs, c:cs, ds, es, fs, gs, hs, is, js, ks, ls)
- S12d d -> (as, bs, cs, d:ds, es, fs, gs, hs, is, js, ks, ls)
- S12e e -> (as, bs, cs, ds, e:es, fs, gs, hs, is, js, ks, ls)
- S12f f -> (as, bs, cs, ds, es, f:fs, gs, hs, is, js, ks, ls)
- S12g g -> (as, bs, cs, ds, es, fs, g:gs, hs, is, js, ks, ls)
- S12h h -> (as, bs, cs, ds, es, fs, gs, h:hs, is, js, ks, ls)
- S12i i -> (as, bs, cs, ds, es, fs, gs, hs, i:is, js, ks, ls)
- S12j j -> (as, bs, cs, ds, es, fs, gs, hs, is, j:js, ks, ls)
- S12k k -> (as, bs, cs, ds, es, fs, gs, hs, is, js, k:ks, ls)
- S12l l -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, l:ls)
-
-partitionS13 :: [S13 a b c d e f g h i j k l m] -> ([a], [b], [c], [d], [e],
[f], [g], [h], [i], [j], [k], [l], [m])
-partitionS13 = foldr fn ([], [], [], [], [], [], [], [], [], [], [], [], [])
- where
- fn it (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms) = case it of
- S13a a -> (a:as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms)
- S13b b -> (as, b:bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms)
- S13c c -> (as, bs, c:cs, ds, es, fs, gs, hs, is, js, ks, ls, ms)
- S13d d -> (as, bs, cs, d:ds, es, fs, gs, hs, is, js, ks, ls, ms)
- S13e e -> (as, bs, cs, ds, e:es, fs, gs, hs, is, js, ks, ls, ms)
- S13f f -> (as, bs, cs, ds, es, f:fs, gs, hs, is, js, ks, ls, ms)
- S13g g -> (as, bs, cs, ds, es, fs, g:gs, hs, is, js, ks, ls, ms)
- S13h h -> (as, bs, cs, ds, es, fs, gs, h:hs, is, js, ks, ls, ms)
- S13i i -> (as, bs, cs, ds, es, fs, gs, hs, i:is, js, ks, ls, ms)
- S13j j -> (as, bs, cs, ds, es, fs, gs, hs, is, j:js, ks, ls, ms)
- S13k k -> (as, bs, cs, ds, es, fs, gs, hs, is, js, k:ks, ls, ms)
- S13l l -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, l:ls, ms)
- S13m m -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, m:ms)
-
-partitionS14 :: [S14 a b c d e f g h i j k l m n] -> ([a], [b], [c], [d], [e],
[f], [g], [h], [i], [j], [k], [l], [m], [n])
-partitionS14 = foldr fn ([], [], [], [], [], [], [], [], [], [], [], [], [],
[])
- where
- fn it (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns) = case it of
- S14a a -> (a:as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns)
- S14b b -> (as, b:bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns)
- S14c c -> (as, bs, c:cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns)
- S14d d -> (as, bs, cs, d:ds, es, fs, gs, hs, is, js, ks, ls, ms, ns)
- S14e e -> (as, bs, cs, ds, e:es, fs, gs, hs, is, js, ks, ls, ms, ns)
- S14f f -> (as, bs, cs, ds, es, f:fs, gs, hs, is, js, ks, ls, ms, ns)
- S14g g -> (as, bs, cs, ds, es, fs, g:gs, hs, is, js, ks, ls, ms, ns)
- S14h h -> (as, bs, cs, ds, es, fs, gs, h:hs, is, js, ks, ls, ms, ns)
- S14i i -> (as, bs, cs, ds, es, fs, gs, hs, i:is, js, ks, ls, ms, ns)
- S14j j -> (as, bs, cs, ds, es, fs, gs, hs, is, j:js, ks, ls, ms, ns)
- S14k k -> (as, bs, cs, ds, es, fs, gs, hs, is, js, k:ks, ls, ms, ns)
- S14l l -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, l:ls, ms, ns)
- S14m m -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, m:ms, ns)
- S14n n -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, n:ns)
-
-partitionS15 :: [S15 a b c d e f g h i j k l m n o] -> ([a], [b], [c], [d],
[e], [f], [g], [h], [i], [j], [k], [l], [m], [n], [o])
-partitionS15 = foldr fn ([], [], [], [], [], [], [], [], [], [], [], [], [],
[], [])
- where
- fn it (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns, os) = case
it of
- S15a a -> (a:as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns, os)
- S15b b -> (as, b:bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns, os)
- S15c c -> (as, bs, c:cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns, os)
- S15d d -> (as, bs, cs, d:ds, es, fs, gs, hs, is, js, ks, ls, ms, ns, os)
- S15e e -> (as, bs, cs, ds, e:es, fs, gs, hs, is, js, ks, ls, ms, ns, os)
- S15f f -> (as, bs, cs, ds, es, f:fs, gs, hs, is, js, ks, ls, ms, ns, os)
- S15g g -> (as, bs, cs, ds, es, fs, g:gs, hs, is, js, ks, ls, ms, ns, os)
- S15h h -> (as, bs, cs, ds, es, fs, gs, h:hs, is, js, ks, ls, ms, ns, os)
- S15i i -> (as, bs, cs, ds, es, fs, gs, hs, i:is, js, ks, ls, ms, ns, os)
- S15j j -> (as, bs, cs, ds, es, fs, gs, hs, is, j:js, ks, ls, ms, ns, os)
- S15k k -> (as, bs, cs, ds, es, fs, gs, hs, is, js, k:ks, ls, ms, ns, os)
- S15l l -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, l:ls, ms, ns, os)
- S15m m -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, m:ms, ns, os)
- S15n n -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, n:ns, os)
- S15o o -> (as, bs, cs, ds, es, fs, gs, hs, is, js, ks, ls, ms, ns, o:os)
-
--- * Case analysis
-
-caseS0 :: S0 -> z
-caseS0 = undefined
-
-caseS1 :: (a -> z) -> S1 a -> z
-caseS1 fa s1 = case s1 of
- S1a a -> fa a
-
-caseS2 :: (a -> z) -> (b -> z) -> S2 a b -> z
-caseS2 fa fb s2 = case s2 of
- S2a a -> fa a
- S2b b -> fb b
-
-caseS3 :: (a -> z) -> (b -> z) -> (c -> z) -> S3 a b c -> z
-caseS3 fa fb fc s3 = case s3 of
- S3a a -> fa a
- S3b b -> fb b
- S3c c -> fc c
-
-caseS4 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> S4 a b c d -> z
-caseS4 fa fb fc fd s4 = case s4 of
- S4a a -> fa a
- S4b b -> fb b
- S4c c -> fc c
- S4d d -> fd d
-
-caseS5 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> S5 a b c
d e -> z
-caseS5 fa fb fc fd fe s5 = case s5 of
- S5a a -> fa a
- S5b b -> fb b
- S5c c -> fc c
- S5d d -> fd d
- S5e e -> fe e
-
-caseS6 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f -> z)
-> S6 a b c d e f -> z
-caseS6 fa fb fc fd fe ff s6 = case s6 of
- S6a a -> fa a
- S6b b -> fb b
- S6c c -> fc c
- S6d d -> fd d
- S6e e -> fe e
- S6f f -> ff f
-
-caseS7 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f -> z)
-> (g -> z) -> S7 a b c d e f g -> z
-caseS7 fa fb fc fd fe ff fg s7 = case s7 of
- S7a a -> fa a
- S7b b -> fb b
- S7c c -> fc c
- S7d d -> fd d
- S7e e -> fe e
- S7f f -> ff f
- S7g g -> fg g
-
-caseS8 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f -> z)
-> (g -> z) -> (h -> z) -> S8 a b c d e f g h -> z
-caseS8 fa fb fc fd fe ff fg fh s8 = case s8 of
- S8a a -> fa a
- S8b b -> fb b
- S8c c -> fc c
- S8d d -> fd d
- S8e e -> fe e
- S8f f -> ff f
- S8g g -> fg g
- S8h h -> fh h
-
-caseS9 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f -> z)
-> (g -> z) -> (h -> z) -> (i -> z) -> S9 a b c d e f g h i -> z
-caseS9 fa fb fc fd fe ff fg fh fi s9 = case s9 of
- S9a a -> fa a
- S9b b -> fb b
- S9c c -> fc c
- S9d d -> fd d
- S9e e -> fe e
- S9f f -> ff f
- S9g g -> fg g
- S9h h -> fh h
- S9i i -> fi i
-
-caseS10 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f ->
z) -> (g -> z) -> (h -> z) -> (i -> z) -> (j -> z) -> S10 a b c d e f g h i j
-> z
-caseS10 fa fb fc fd fe ff fg fh fi fj s10 = case s10 of
- S10a a -> fa a
- S10b b -> fb b
- S10c c -> fc c
- S10d d -> fd d
- S10e e -> fe e
- S10f f -> ff f
- S10g g -> fg g
- S10h h -> fh h
- S10i i -> fi i
- S10j j -> fj j
-
-caseS11 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f ->
z) -> (g -> z) -> (h -> z) -> (i -> z) -> (j -> z) -> (k -> z) -> S11 a b c d e
f g h i j k -> z
-caseS11 fa fb fc fd fe ff fg fh fi fj fk s11 = case s11 of
- S11a a -> fa a
- S11b b -> fb b
- S11c c -> fc c
- S11d d -> fd d
- S11e e -> fe e
- S11f f -> ff f
- S11g g -> fg g
- S11h h -> fh h
- S11i i -> fi i
- S11j j -> fj j
- S11k k -> fk k
-
-caseS12 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f ->
z) -> (g -> z) -> (h -> z) -> (i -> z) -> (j -> z) -> (k -> z) -> (l -> z) ->
S12 a b c d e f g h i j k l -> z
-caseS12 fa fb fc fd fe ff fg fh fi fj fk fl s12 = case s12 of
- S12a a -> fa a
- S12b b -> fb b
- S12c c -> fc c
- S12d d -> fd d
- S12e e -> fe e
- S12f f -> ff f
- S12g g -> fg g
- S12h h -> fh h
- S12i i -> fi i
- S12j j -> fj j
- S12k k -> fk k
- S12l l -> fl l
-
-caseS13 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f ->
z) -> (g -> z) -> (h -> z) -> (i -> z) -> (j -> z) -> (k -> z) -> (l -> z) ->
(m -> z) -> S13 a b c d e f g h i j k l m -> z
-caseS13 fa fb fc fd fe ff fg fh fi fj fk fl fm s13 = case s13 of
- S13a a -> fa a
- S13b b -> fb b
- S13c c -> fc c
- S13d d -> fd d
- S13e e -> fe e
- S13f f -> ff f
- S13g g -> fg g
- S13h h -> fh h
- S13i i -> fi i
- S13j j -> fj j
- S13k k -> fk k
- S13l l -> fl l
- S13m m -> fm m
-
-caseS14 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f ->
z) -> (g -> z) -> (h -> z) -> (i -> z) -> (j -> z) -> (k -> z) -> (l -> z) ->
(m -> z) -> (n -> z) -> S14 a b c d e f g h i j k l m n -> z
-caseS14 fa fb fc fd fe ff fg fh fi fj fk fl fm fn s14 = case s14 of
- S14a a -> fa a
- S14b b -> fb b
- S14c c -> fc c
- S14d d -> fd d
- S14e e -> fe e
- S14f f -> ff f
- S14g g -> fg g
- S14h h -> fh h
- S14i i -> fi i
- S14j j -> fj j
- S14k k -> fk k
- S14l l -> fl l
- S14m m -> fm m
- S14n n -> fn n
-
-caseS15 :: (a -> z) -> (b -> z) -> (c -> z) -> (d -> z) -> (e -> z) -> (f ->
z) -> (g -> z) -> (h -> z) -> (i -> z) -> (j -> z) -> (k -> z) -> (l -> z) ->
(m -> z) -> (n -> z) -> (o -> z) -> S15 a b c d e f g h i j k l m n o -> z
-caseS15 fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo s15 = case s15 of
- S15a a -> fa a
- S15b b -> fb b
- S15c c -> fc c
- S15d d -> fd d
- S15e e -> fe e
- S15f f -> ff f
- S15g g -> fg g
- S15h h -> fh h
- S15i i -> fi i
- S15j j -> fj j
- S15k k -> fk k
- S15l l -> fl l
- S15m m -> fm m
- S15n n -> fn n
- S15o o -> fo o
-
--- * Mapping
-
-mapS0 :: S0 -> S0
-mapS0 = id
-
-mapS1 :: (a -> a1) -> S1 a -> S1 a1
-mapS1 a = caseS1 (S1a . a)
-
-mapS2 :: (a -> a1) -> (b -> b1) -> S2 a b -> S2 a1 b1
-mapS2 a b = caseS2 (S2a . a) (S2b . b)
-
-mapS3 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> S3 a b c -> S3 a1 b1 c1
-mapS3 a b c = caseS3 (S3a . a) (S3b . b) (S3c . c)
-
-mapS4 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> S4 a b c d -> S4
a1 b1 c1 d1
-mapS4 a b c d = caseS4 (S4a . a) (S4b . b) (S4c . c) (S4d . d)
-
-mapS5 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> S5 a
b c d e -> S5 a1 b1 c1 d1 e1
-mapS5 a b c d e = caseS5 (S5a . a) (S5b . b) (S5c . c) (S5d . d) (S5e . e)
-
-mapS6 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f
-> f1) -> S6 a b c d e f -> S6 a1 b1 c1 d1 e1 f1
-mapS6 a b c d e f = caseS6 (S6a . a) (S6b . b) (S6c . c) (S6d . d) (S6e . e)
(S6f . f)
-
-mapS7 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f
-> f1) -> (g -> g1) -> S7 a b c d e f g -> S7 a1 b1 c1 d1 e1 f1 g1
-mapS7 a b c d e f g = caseS7 (S7a . a) (S7b . b) (S7c . c) (S7d . d) (S7e . e)
(S7f . f) (S7g . g)
-
-mapS8 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f
-> f1) -> (g -> g1) -> (h -> h1) -> S8 a b c d e f g h -> S8 a1 b1 c1 d1 e1 f1
g1 h1
-mapS8 a b c d e f g h = caseS8 (S8a . a) (S8b . b) (S8c . c) (S8d . d) (S8e .
e) (S8f . f) (S8g . g) (S8h . h)
-
-mapS9 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f
-> f1) -> (g -> g1) -> (h -> h1) -> (i -> i1) -> S9 a b c d e f g h i -> S9 a1
b1 c1 d1 e1 f1 g1 h1 i1
-mapS9 a b c d e f g h i = caseS9 (S9a . a) (S9b . b) (S9c . c) (S9d . d) (S9e
. e) (S9f . f) (S9g . g) (S9h . h) (S9i . i)
-
-mapS10 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f
-> f1) -> (g -> g1) -> (h -> h1) -> (i -> i1) -> (j -> j1) -> S10 a b c d e f g
h i j -> S10 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1
-mapS10 a b c d e f g h i j = caseS10 (S10a . a) (S10b . b) (S10c . c) (S10d .
d) (S10e . e) (S10f . f) (S10g . g) (S10h . h) (S10i . i) (S10j . j)
-
-mapS11 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f
-> f1) -> (g -> g1) -> (h -> h1) -> (i -> i1) -> (j -> j1) -> (k -> k1) -> S11
a b c d e f g h i j k -> S11 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1
-mapS11 a b c d e f g h i j k = caseS11 (S11a . a) (S11b . b) (S11c . c) (S11d
. d) (S11e . e) (S11f . f) (S11g . g) (S11h . h) (S11i . i) (S11j . j) (S11k .
k)
-
-mapS12 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f
-> f1) -> (g -> g1) -> (h -> h1) -> (i -> i1) -> (j -> j1) -> (k -> k1) -> (l
-> l1) -> S12 a b c d e f g h i j k l -> S12 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1
-mapS12 a b c d e f g h i j k l = caseS12 (S12a . a) (S12b . b) (S12c . c)
(S12d . d) (S12e . e) (S12f . f) (S12g . g) (S12h . h) (S12i . i) (S12j . j)
(S12k . k) (S12l . l)
-
-mapS13 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f
-> f1) -> (g -> g1) -> (h -> h1) -> (i -> i1) -> (j -> j1) -> (k -> k1) -> (l
-> l1) -> (m -> m1) -> S13 a b c d e f g h i j k l m -> S13 a1 b1 c1 d1 e1 f1
g1 h1 i1 j1 k1 l1 m1
-mapS13 a b c d e f g h i j k l m = caseS13 (S13a . a) (S13b . b) (S13c . c)
(S13d . d) (S13e . e) (S13f . f) (S13g . g) (S13h . h) (S13i . i) (S13j . j)
(S13k . k) (S13l . l) (S13m . m)
-
-mapS14 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f
-> f1) -> (g -> g1) -> (h -> h1) -> (i -> i1) -> (j -> j1) -> (k -> k1) -> (l
-> l1) -> (m -> m1) -> (n -> n1) -> S14 a b c d e f g h i j k l m n -> S14 a1
b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1
-mapS14 a b c d e f g h i j k l m n = caseS14 (S14a . a) (S14b . b) (S14c . c)
(S14d . d) (S14e . e) (S14f . f) (S14g . g) (S14h . h) (S14i . i) (S14j . j)
(S14k . k) (S14l . l) (S14m . m) (S14n . n)
-
-mapS15 :: (a -> a1) -> (b -> b1) -> (c -> c1) -> (d -> d1) -> (e -> e1) -> (f
-> f1) -> (g -> g1) -> (h -> h1) -> (i -> i1) -> (j -> j1) -> (k -> k1) -> (l
-> l1) -> (m -> m1) -> (n -> n1) -> (o -> o1) -> S15 a b c d e f g h i j k l m
n o -> S15 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1
-mapS15 a b c d e f g h i j k l m n o = caseS15 (S15a . a) (S15b . b) (S15c .
c) (S15d . d) (S15e . e) (S15f . f) (S15g . g) (S15h . h) (S15i . i) (S15j . j)
(S15k . k) (S15l . l) (S15m . m) (S15n . n) (S15o . o)
-
--- * Mapping in a Functor
-
-mapS0f :: Functor ftr => S0 -> ftr S0
-mapS0f = undefined
-
-mapS1f :: Functor ftr =>
- (a -> ftr a1) -> S1 a -> ftr (S1 a1)
-mapS1f a = caseS1 (fmap S1a . a)
-
-mapS2f :: Functor ftr =>
- (a -> ftr a1) -> (b -> ftr b1) -> S2 a b -> ftr (S2 a1 b1)
-mapS2f a b = caseS2 (fmap S2a . a) (fmap S2b . b)
-
-mapS3f :: Functor ftr =>
- (a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> S3 a b c -> ftr (S3 a1 b1
c1)
-mapS3f a b c = caseS3 (fmap S3a . a) (fmap S3b . b) (fmap S3c . c)
-
-mapS4f :: Functor ftr =>
- (a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> S4 a b c
d -> ftr (S4 a1 b1 c1 d1)
-mapS4f a b c d = caseS4 (fmap S4a . a) (fmap S4b . b) (fmap S4c . c) (fmap S4d
. d)
-
-mapS5f :: Functor ftr =>
- (a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e ->
ftr e1) -> S5 a b c d e -> ftr (S5 a1 b1 c1 d1 e1)
-mapS5f a b c d e = caseS5 (fmap S5a . a) (fmap S5b . b) (fmap S5c . c) (fmap
S5d . d) (fmap S5e . e)
-
-mapS6f :: Functor ftr =>
- (a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e ->
ftr e1) -> (f -> ftr f1) -> S6 a b c d e f -> ftr (S6 a1 b1 c1 d1 e1 f1)
-mapS6f a b c d e f = caseS6 (fmap S6a . a) (fmap S6b . b) (fmap S6c . c) (fmap
S6d . d) (fmap S6e . e) (fmap S6f . f)
-
-mapS7f :: Functor ftr =>
- (a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e ->
ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> S7 a b c d e f g -> ftr (S7 a1 b1
c1 d1 e1 f1 g1)
-mapS7f a b c d e f g = caseS7 (fmap S7a . a) (fmap S7b . b) (fmap S7c . c)
(fmap S7d . d) (fmap S7e . e) (fmap S7f . f) (fmap S7g . g)
-
-mapS8f :: Functor ftr =>
- (a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e ->
ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> (h -> ftr h1) -> S8 a b c d e f g
h -> ftr (S8 a1 b1 c1 d1 e1 f1 g1 h1)
-mapS8f a b c d e f g h = caseS8 (fmap S8a . a) (fmap S8b . b) (fmap S8c . c)
(fmap S8d . d) (fmap S8e . e) (fmap S8f . f) (fmap S8g . g) (fmap S8h . h)
-
-mapS9f :: Functor ftr =>
- (a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e ->
ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> (h -> ftr h1) -> (i -> ftr i1) ->
S9 a b c d e f g h i -> ftr (S9 a1 b1 c1 d1 e1 f1 g1 h1 i1)
-mapS9f a b c d e f g h i = caseS9 (fmap S9a . a) (fmap S9b . b) (fmap S9c . c)
(fmap S9d . d) (fmap S9e . e) (fmap S9f . f) (fmap S9g . g) (fmap S9h . h)
(fmap S9i . i)
-
-mapS10f :: Functor ftr =>
- (a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e ->
ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> (h -> ftr h1) -> (i -> ftr i1) ->
(j -> ftr j1) -> S10 a b c d e f g h i j -> ftr (S10 a1 b1 c1 d1 e1 f1 g1 h1 i1
j1)
-mapS10f a b c d e f g h i j = caseS10 (fmap S10a . a) (fmap S10b . b) (fmap
S10c . c) (fmap S10d . d) (fmap S10e . e) (fmap S10f . f) (fmap S10g . g) (fmap
S10h . h) (fmap S10i . i) (fmap S10j . j)
-
-mapS11f :: Functor ftr =>
- (a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e ->
ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> (h -> ftr h1) -> (i -> ftr i1) ->
(j -> ftr j1) -> (k -> ftr k1) -> S11 a b c d e f g h i j k -> ftr (S11 a1 b1
c1 d1 e1 f1 g1 h1 i1 j1 k1)
-mapS11f a b c d e f g h i j k = caseS11 (fmap S11a . a) (fmap S11b . b) (fmap
S11c . c) (fmap S11d . d) (fmap S11e . e) (fmap S11f . f) (fmap S11g . g) (fmap
S11h . h) (fmap S11i . i) (fmap S11j . j) (fmap S11k . k)
-
-mapS12f :: Functor ftr =>
- (a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e ->
ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> (h -> ftr h1) -> (i -> ftr i1) ->
(j -> ftr j1) -> (k -> ftr k1) -> (l -> ftr l1) -> S12 a b c d e f g h i j k l
-> ftr (S12 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1)
-mapS12f a b c d e f g h i j k l = caseS12 (fmap S12a . a) (fmap S12b . b)
(fmap S12c . c) (fmap S12d . d) (fmap S12e . e) (fmap S12f . f) (fmap S12g . g)
(fmap S12h . h) (fmap S12i . i) (fmap S12j . j) (fmap S12k . k) (fmap S12l . l)
-
-mapS13f :: Functor ftr =>
- (a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e ->
ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> (h -> ftr h1) -> (i -> ftr i1) ->
(j -> ftr j1) -> (k -> ftr k1) -> (l -> ftr l1) -> (m -> ftr m1) -> S13 a b c d
e f g h i j k l m -> ftr (S13 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1)
-mapS13f a b c d e f g h i j k l m = caseS13 (fmap S13a . a) (fmap S13b . b)
(fmap S13c . c) (fmap S13d . d) (fmap S13e . e) (fmap S13f . f) (fmap S13g . g)
(fmap S13h . h) (fmap S13i . i) (fmap S13j . j) (fmap S13k . k) (fmap S13l . l)
(fmap S13m . m)
-
-mapS14f :: Functor ftr =>
- (a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e ->
ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> (h -> ftr h1) -> (i -> ftr i1) ->
(j -> ftr j1) -> (k -> ftr k1) -> (l -> ftr l1) -> (m -> ftr m1) -> (n -> ftr
n1) -> S14 a b c d e f g h i j k l m n -> ftr (S14 a1 b1 c1 d1 e1 f1 g1 h1 i1
j1 k1 l1 m1 n1)
-mapS14f a b c d e f g h i j k l m n = caseS14 (fmap S14a . a) (fmap S14b . b)
(fmap S14c . c) (fmap S14d . d) (fmap S14e . e) (fmap S14f . f) (fmap S14g . g)
(fmap S14h . h) (fmap S14i . i) (fmap S14j . j) (fmap S14k . k) (fmap S14l . l)
(fmap S14m . m) (fmap S14n . n)
-
-mapS15f :: Functor ftr =>
- (a -> ftr a1) -> (b -> ftr b1) -> (c -> ftr c1) -> (d -> ftr d1) -> (e ->
ftr e1) -> (f -> ftr f1) -> (g -> ftr g1) -> (h -> ftr h1) -> (i -> ftr i1) ->
(j -> ftr j1) -> (k -> ftr k1) -> (l -> ftr l1) -> (m -> ftr m1) -> (n -> ftr
n1) -> (o -> ftr o1) -> S15 a b c d e f g h i j k l m n o -> ftr (S15 a1 b1 c1
d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1)
-mapS15f a b c d e f g h i j k l m n o = caseS15 (fmap S15a . a) (fmap S15b .
b) (fmap S15c . c) (fmap S15d . d) (fmap S15e . e) (fmap S15f . f) (fmap S15g .
g) (fmap S15h . h) (fmap S15i . i) (fmap S15j . j) (fmap S15k . k) (fmap S15l .
l) (fmap S15m . m) (fmap S15n . n) (fmap S15o . o)
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/anonymous-sums-0.4.0.0/Makefile
new/anonymous-sums-0.6.0.0/Makefile
--- old/anonymous-sums-0.4.0.0/Makefile 2014-02-24 02:46:04.000000000 +0100
+++ new/anonymous-sums-0.6.0.0/Makefile 1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
-Data/Sums.hs : generate-sums.hs
- runghc generate-sums.hs Data.Sums 15 > Data/Sums.hs
-
-clean :
- rm Data/Sums.hs
- runhaskell Setup clean
-
-dist : Data/Sums.hs
- runhaskell Setup configure
- runhaskell Setup sdist
-
-test : Data/Sums.hs sunlight-test.hs
- runghc sunlight-test.hs
-
-.PHONY: clean
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/anonymous-sums-0.4.0.0/Sums/Internal.hs
new/anonymous-sums-0.6.0.0/Sums/Internal.hs
--- old/anonymous-sums-0.4.0.0/Sums/Internal.hs 1970-01-01 01:00:00.000000000
+0100
+++ new/anonymous-sums-0.6.0.0/Sums/Internal.hs 2016-12-23 20:30:20.000000000
+0100
@@ -0,0 +1,92 @@
+{-# LANGUAGE TemplateHaskell #-}
+module Sums.Internal where
+
+import Data.Foldable (foldl')
+import qualified Language.Haskell.TH as T
+import qualified Control.Lens as Lens
+
+-- | Given the number of constructors, create a new data type.
+-- Derives Eq, Ord, and Show, except for S0, which has no derives.
+sumDeclaration :: Int -> T.Dec
+sumDeclaration i = T.DataD cxt name types Nothing ctors derives
+ where
+ cxt = []
+ name = T.mkName ("S" ++ show i)
+ types = map mkType [1..i]
+ where
+ mkType n = T.PlainTV (T.mkName ("t" ++ show n))
+ ctors = map mkCtor [1..i]
+ where
+ mkCtor n = T.NormalC (T.mkName ("S" ++ show i ++ "_" ++ show n))
+ [ ( T.Bang T.NoSourceUnpackedness T.NoSourceStrictness
+ , T.VarT (T.mkName ("t" ++ show n))
+ ) ]
+ derives
+ | i == 0 = []
+ | otherwise = map T.ConT [''Eq, ''Ord, ''Show]
+
+-- | Given the number of constructors and this particular constructor
+-- number, return a type signature for a prism.
+prismSig :: Int -> Int -> T.DecQ
+prismSig nCtors thisCtor = T.sigD name ty
+ where
+ name = T.mkName ("_S" ++ show nCtors ++ "_" ++ show thisCtor)
+ ty = [t| Lens.Prism $(big) $(big') $(little) $(little') |]
+ var = T.varT . T.mkName
+ little = var ("t" ++ show thisCtor)
+ little' = var ("t" ++ show thisCtor ++ "'")
+ mkTypes maker = foldl' T.appT start tys
+ where
+ start = T.conT (T.mkName ("S" ++ show nCtors))
+ tys = map maker [1..nCtors]
+ big = mkTypes (\n -> var ("t" ++ show n))
+ big' = mkTypes f
+ where
+ f n
+ | n /= thisCtor = var ("t" ++ show n)
+ | otherwise = var ("t" ++ show n ++ "'")
+
+
+-- | Given the number of constructors and the particular constructor
+-- number, return the prism itself.
+prismDecl :: Int -> Int -> T.DecQ
+prismDecl nCtors thisCtor = T.valD prismPat prismBody []
+ where
+ otherCtorName n = T.mkName ("S" ++ show nCtors ++ "_" ++ show n)
+ thisCtorName = otherCtorName thisCtor
+ prismPat = T.varP (T.mkName ("_S" ++ show nCtors ++ "_" ++ show thisCtor))
+ prismBody = T.normalB expn
+ where
+ expn = [| Lens.prism $(make) $(decon) |]
+ where
+ make = T.conE thisCtorName
+ decon = do
+ x <- T.newName "x"
+ let caseExpn = T.caseE (T.varE x) matches
+ T.lam1E (T.varP x) caseExpn
+ matches = found : notFounds
+ found = do
+ x <- T.newName "x"
+ let pat = T.conP thisCtorName [T.varP x]
+ body = T.normalB [| Right $(T.varE x) |]
+ T.match pat body []
+ notFounds = map mkNotFound . filter (/= thisCtor) $ [1..nCtors]
+ mkNotFound i = do
+ x <- T.newName "x"
+ let pat = T.conP (otherCtorName i) [T.varP x]
+ body = T.normalB
+ [| Left $ $(T.conE (otherCtorName i)) $(T.varE x) |]
+ T.match pat body []
+
+-- | Given the number of ctors and this ctor number, return a
+-- signature and the prism itself.
+prismSigAndDecl :: Int -> Int -> T.DecsQ
+prismSigAndDecl nCtors thisCtor = sequence
+ [ prismSig nCtors thisCtor
+ , prismDecl nCtors thisCtor
+ ]
+
+-- | Given the number of ctors, return all prisms.
+prismsForSingleType :: Int -> T.DecsQ
+prismsForSingleType i
+ = fmap concat . traverse (prismSigAndDecl i) $ [1..i]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/anonymous-sums-0.4.0.0/Sums/Prisms.hs
new/anonymous-sums-0.6.0.0/Sums/Prisms.hs
--- old/anonymous-sums-0.4.0.0/Sums/Prisms.hs 1970-01-01 01:00:00.000000000
+0100
+++ new/anonymous-sums-0.6.0.0/Sums/Prisms.hs 2016-12-23 20:30:20.000000000
+0100
@@ -0,0 +1,9 @@
+{-# LANGUAGE TemplateHaskell #-}
+
+-- | Prisms to extract and manipulate values from a sum type.
+module Sums.Prisms where
+
+import Sums
+import Sums.Internal
+
+$( fmap (reverse . concat) . traverse prismsForSingleType $ [1..15] )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/anonymous-sums-0.4.0.0/Sums.hs
new/anonymous-sums-0.6.0.0/Sums.hs
--- old/anonymous-sums-0.4.0.0/Sums.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/anonymous-sums-0.6.0.0/Sums.hs 2016-12-23 20:30:20.000000000 +0100
@@ -0,0 +1,9 @@
+{-# LANGUAGE TemplateHaskell #-}
+
+-- | Anonymous sum types. Like tuples, but for sum types rather than
+-- product types. Easier than using nested 'Either'.
+module Sums where
+
+import Sums.Internal
+
+$(return . map sumDeclaration $ [0..15])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/anonymous-sums-0.4.0.0/anonymous-sums.cabal
new/anonymous-sums-0.6.0.0/anonymous-sums.cabal
--- old/anonymous-sums-0.4.0.0/anonymous-sums.cabal 2014-02-24
02:46:04.000000000 +0100
+++ new/anonymous-sums-0.6.0.0/anonymous-sums.cabal 2016-12-23
20:30:20.000000000 +0100
@@ -2,7 +2,7 @@
-- documentation, see http://haskell.org/cabal/users-guide/
name: anonymous-sums
-version: 0.4.0.0
+version: 0.6.0.0
synopsis: Anonymous sum types
description:
Anonymous sum types. Like tuples, but for sum types rather than
@@ -16,30 +16,20 @@
category: Data
build-type: Simple
cabal-version: >=1.10
-extra-source-files: README.md, ChangeLog, Makefile
-tested-with: GHC==7.4.1, GHC==7.6.3
+extra-source-files: README.md, ChangeLog
source-repository head
type: git
location: https://github.com/massysett/anonymous-sums.git
--- Dependencies reflect ghc 7.6. ghc 7.4 had a different
--- Generics interface.
library
- exposed-modules: Data.Sums
- build-depends: base >=4.5.0.0 && <5
+ exposed-modules: Sums, Sums.Prisms
+ other-modules: Sums.Internal
+ build-depends:
+ base >=4.9.0.0 && <5
+ , template-haskell >= 2.11
+ , lens >= 4.14
+ other-extensions: TemplateHaskell
default-language: Haskell2010
ghc-options: -Wall
-Executable generate-sums
- main-is: generate-sums.hs
- ghc-options: -Wall
- build-depends: base >=4.5.0.0 && <5
- default-language: Haskell2010
- if ! flag (build-generator)
- buildable: False
-
-Flag build-generator
- Description: Build binary to generate program source
- Default: False
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/anonymous-sums-0.4.0.0/generate-sums.hs
new/anonymous-sums-0.6.0.0/generate-sums.hs
--- old/anonymous-sums-0.4.0.0/generate-sums.hs 2014-02-24 02:46:04.000000000
+0100
+++ new/anonymous-sums-0.6.0.0/generate-sums.hs 1970-01-01 01:00:00.000000000
+0100
@@ -1,290 +0,0 @@
-module Main where
-
-import Data.List
-import System.Environment
-import qualified System.IO as IO
-import System.Exit
-
-dataDeclaration
- :: Int
- -- ^ Number of type variables. Must be at least 0.
- -> String
-dataDeclaration i
- | i == 0 = dataDeclaration0
- | otherwise = dataDeclarationN i
-
-dataDeclaration0 :: String
-dataDeclaration0 = unlines
- [ "data S0 deriving Typeable"
- , ""
- , "instance Eq S0 where _ == _ = undefined"
- , "instance Ord S0 where compare _ _ = undefined"
- , "instance Read S0 where readsPrec _ = undefined"
- , "instance Show S0 where show _ = undefined"
- , "instance Exception S0"
- , ""
- ]
-
-
-dataDeclarationN
- :: Int
- -- ^ Number of type variables. Must be at least 1.
- -> String
-dataDeclarationN i =
- "data " ++ sType i ++ " = "
- ++ constructors
- ++ " deriving (Eq, Ord, Read, Show"
- ++ (if i <= 7 then ", Typeable)" else ")")
- ++ "\n"
- ++ exceptionInstance i
- where
- constructors = list " | " . map mkConst
- $ ls
- mkConst l = 'S' : show i ++ l : ' ' : l : []
- ls = letters i
-
-exceptionInstance :: Int -> String
-exceptionInstance i
- | i > 7 = "\n"
- | otherwise = "instance " ++ constraint
- ++ "Exception (" ++ sType i ++ ")\n\n"
- where
- constraint
- | i == 0 = ""
- | otherwise = "(" ++ list ", " ls ++ ") => "
- where
- ls = map constrain . letters $ i
- constrain c = "Typeable " ++ s ++ ", Show " ++ s
- where s = [c]
-
-letter :: Int -> Char
-letter i = toEnum (97 + i)
-
-sType :: Int -> String
-sType i = 'S' : show i ++ types
- where
- types | i == 0 = ""
- | otherwise = " " ++ intersperse ' ' ls
- ls = letters i
-
-letters :: Int -> [Char]
-letters i = map letter [0..(i - 1)]
-
-list :: [a] -> [[a]] -> [a]
-list s = concat . intersperse s
-
-partitionDef :: Int -> String
-partitionDef i
- | i == 0 = partitionDef0
- | otherwise = partitionDefN i
-
-partitionDef0 :: String
-partitionDef0 = unlines
- [ "partitionS0 :: [S0] -> ()"
- , "partitionS0 _ = ()"
- , ""
- ]
-
-partitionDefN :: Int -> String
-partitionDefN i = sig ++ decl
- where
- sig = fName ++ " :: ["
- ++ sType i ++ "] -> " ++ tuple ++ "\n"
- tuple = "(" ++ (list ", " . map lsSig $ ls)
- ++ ")"
- ls = letters i
- lsSig l = '[' : l : ']' : []
- fName = "partitionS" ++ show i
-
- decl = fName ++ " = foldr fn " ++ tup ++ "\n" ++ whr
- where
- tup = "(" ++ (list ", " . replicate i $ "[]")
- ++ ")"
- whr = " where\n" ++ cse
- cse = " fn it " ++ tup ++ " = case it of\n" ++ cases ++ "\n"
- where
- tup = "("
- ++ ( list ", " . map (\l -> l:'s':[])
- $ ls)
- ++ ")"
- cases = concatMap mkCase ls
- mkCase l = " S" ++ show i ++ l : ' ' : l
- : " -> ("
- ++ (list ", " . map mkLetter $ ls)
- ++ ")\n"
- where
- mkLetter ltr
- | ltr == l = l : ':' : l : 's' : []
- | otherwise = ltr : 's' : []
-
-caseDef :: Int -> String
-caseDef i
- | i == 0 = caseDef0
- | otherwise = caseDefN i
-
-caseDef0 :: String
-caseDef0 = unlines
- [ "caseS0 :: S0 -> z"
- , "caseS0 = undefined"
- , ""
- ]
-
-caseDefN :: Int -> String
-caseDefN i = sig ++ decl
- where
- sig = fName ++ " :: " ++ fns
- ++ " -> " ++ sType i ++ " -> z\n"
- fns = list " -> " . map mkFn $ ls
- ls = letters i
- mkFn l = '(' : l : " -> " ++ "z)"
- fName = "caseS" ++ show i
-
- decl = fName ++ " " ++ (list " " hofNames) ++ " " ++ sName
- ++ " = case " ++ sName ++ " of\n" ++ cases ++ "\n"
- sName = 's' : show i
- hofNames = map (\s -> 'f':s:[]) ls
- cases = concatMap mkCase ls
- mkCase l = " S" ++ show i ++ l : ' ' : l
- : " -> " ++ ('f' : l : ' ' : l : "\n")
-
-mapDef :: Int -> String
-mapDef i
- | i == 0 = mapDef0
- | otherwise = mapDefN i
-
-mapDef0 :: String
-mapDef0 = unlines
- [ "mapS0 :: S0 -> S0"
- , "mapS0 = id"
- , ""
- ]
-
-mapDefN :: Int -> String
-mapDefN i = sig ++ decl
- where
- fName = "mapS" ++ show i
- sig = fName ++ " :: " ++ list " -> "
- (fns ++ sType i : resType : []) ++ "\n"
- resType = 'S' : show i ++ (' ' : list " " ls')
- ls = letters i
- ls' = map (\l -> l : '1' : []) ls
- fns = map mkFn ls
- mkFn l = '(' : l : " -> " ++ l : "1)"
-
- decl = fName ++ " " ++ list " " (map (:[]) ls) ++ " = "
- ++ "caseS" ++ show i ++ " " ++ (list " " . map mkMapper $ ls)
- ++ "\n\n"
- mkMapper l = "(S" ++ show i ++ l : " . " ++ l : ")"
-
-mapDefA :: Int -> String
-mapDefA i
- | i == 0 = mapDefA0
- | otherwise = mapDefAN i
-
-mapDefA0 :: String
-mapDefA0 = unlines
- [ "mapS0f :: Functor ftr => S0 -> ftr S0"
- , "mapS0f = undefined"
- , ""
- ]
-
-mapDefAN :: Int -> String
-mapDefAN i = sig ++ decl
- where
- fName = "mapS" ++ show i ++ "f"
- sig = fName ++ " :: "
- ++ "Functor ftr =>\n"
- ++ " " ++ list " -> "
- (fns ++ sType i : resType : []) ++ "\n"
- resType = "ftr (" ++ 'S' : show i ++ (' ' : list " " ls')
- ++ ")"
- ls = letters i
- ls' = map (\l -> l : '1' : []) ls
- fns = map mkFn ls
- mkFn l = '(' : l : " -> " ++ "ftr " ++ l : "1)"
-
- decl = fName ++ " " ++ list " " (map (:[]) ls) ++ " = "
- ++ "caseS" ++ show i ++ " " ++ (list " " . map mkMapper $ ls)
- ++ "\n\n"
- mkMapper l = "(fmap S" ++ show i ++ l : " . " ++ l : ")"
-
-makeModule
- :: String
- -- ^ Module name
- -> Int
- -- ^ Maximum number of type variables
- -> String
-
-makeModule n i =
- pragmas ++ notice ++ leadHaddocks ++ modName
- ++ imports ++ datas ++ parts
- ++ cases ++ maps ++ mapFs
- where
-
- pragmas = "{-# LANGUAGE DeriveDataTypeable #-}\n"
- ++ "{-# LANGUAGE EmptyDataDecls #-}\n\n"
-
- notice = unlines
- [ "-- Text of this module generated by the generate-sums.hs"
- , "-- script, included with the source of the anonymous-sums"
- , "-- package."
- , ""
- ]
-
- leadHaddocks = unlines
- [ "-- | Anonymous sum types."
- , "--"
- , "-- Provides functionality similar to that of tuples, but"
- , "-- for sum types rather than product types. Less clumsy"
- , "-- than using nested 'Either'."
- , ""
- ]
-
- modName = "module " ++ n ++ " where\n\n"
-
- imports = unlines
- [ "import Data.Typeable"
- , "import Control.Exception"
- , ""
- ]
-
- datas = "-- * Anonymous sum types\n\n"
- ++ concatMap dataDeclaration vs
-
- parts = "-- * Partitioning\n\n"
- ++ concatMap partitionDef vs
-
- cases = "-- * Case analysis\n\n"
- ++ concatMap caseDef vs
-
- maps = "-- * Mapping\n\n"
- ++ concatMap mapDef vs
-
- mapFs = "-- * Mapping in a Functor\n\n"
- ++ concatMap mapDefA vs
-
- vs = [0..i]
-
-usage
- :: String
- -- ^ Program name
- -> String
-usage n = unlines
- [ "usage: " ++ n ++ " MODULE_NAME NUM_VARS"
- , "where"
- , " MODULE_NAME is the name of the module you are"
- , " creating; e.g. 'Data.Sums'"
- , " NUM_VARS is the maximum number of type variables"
- , " you will create."
- , ""
- , " Output is sent to standard output."
- ]
-
-main :: IO ()
-main = do
- as <- getArgs
- pn <- getProgName
- (name, nVars) <- case as of
- x:y:[] -> return (x, read y)
- _ -> IO.hPutStr IO.stderr (usage pn) >> exitFailure
- putStr $ makeModule name nVars