unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#38596] [PATCH] Add PureScript
@ 2019-12-13 18:46 John Soo
  2019-12-18 13:50 ` John Soo
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: John Soo @ 2019-12-13 18:46 UTC (permalink / raw)
  To: 38596


[-- Attachment #1.1: Type: text/plain, Size: 490 bytes --]

Hi Guix,

Here are my patches for PureScript, a haskell inspired language that
compiles to JavaScript.

I took all dependencies with the exception of one from stackage lts14.

The exception is language-javascript. What do I do about that?

There were a few more dependencies that are not in the stackage lts, but I
did not make them publically available and placed them in purescript.scm.

I did a lint and fixed most of the errors I could and built with --rounds=2
--check.

Thanks!

John

[-- Attachment #1.2: Type: text/html, Size: 695 bytes --]

[-- Attachment #2: 0001-gnu-Add-ghc-utf8-light.patch --]
[-- Type: text/x-patch, Size: 1456 bytes --]

From 16ec7613fbbfec298b0e537a77b52ca9efc02644 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:00:31 -0800
Subject: [PATCH 01/22] gnu: Add ghc-utf8-light.

* gnu/packages/haskell-xyz.scm (ghc-utf8-light): New variable.
---
 gnu/packages/haskell-xyz.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 773164ea0a..8d27d64cc0 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -12188,6 +12188,27 @@ a style ready for qualification, that is, you should import them by
 parser that uses ByteStrings for parsing and representing the URI data.")
     (license license:bsd-3)))
 
+(define-public ghc-utf8-light
+  (package
+    (name "ghc-utf8-light")
+    (version "0.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/utf8-light/utf8-light-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0rwyc5z331yfnm4hpx0sph6i1zvkd1z10vvglhnp0vc9wy644k0q"))))
+    (build-system haskell-build-system)
+    (home-page
+     "http://hackage.haskell.org/package/utf8-light")
+    (synopsis "Lightweight unicode support for Haskell")
+    (description "Lightweight UTF8 handling.")
+    (license license:bsd-3)))
+
 (define-public ghc-utf8-string
   (package
     (name "ghc-utf8-string")
-- 
2.24.0


[-- Attachment #3: 0002-gnu-Add-ghc-transformers.patch --]
[-- Type: text/x-patch, Size: 2397 bytes --]

From d0a31d8c493512295e5994f8b5934215bc9928a3 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:04:13 -0800
Subject: [PATCH 02/22] gnu: Add ghc-transformers.

* gnu/packages/haskell-xyz.scm (ghc-transformers): New variable.
---
 gnu/packages/haskell-xyz.scm | 43 ++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 8d27d64cc0..0e130d6b8a 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -11644,6 +11644,49 @@ from a shell.  The @code{tldr} pages are a community effort to simplify the
 man pages with practical examples.")
     (license license:bsd-3)))
 
+(define-public ghc-transformers
+  (package
+    (name "ghc-transformers")
+    (version "0.5.6.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/transformers/transformers-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0v66j5k0xqk51pmca55wq192qyw2p43s2mgxlz4f95q2c1fpjs5n"))))
+    (build-system haskell-build-system)
+    (home-page
+     "http://hackage.haskell.org/package/transformers")
+    (synopsis "Concrete functor and monad transformers")
+    (description
+     "A portable library of functor and monad transformers, inspired
+by the paper \"Functional Programming with Overloading and
+Higher-Order Polymorphism\", by Mark P Jones, in Advanced School of
+Functional Programming, 1995
+http://web.cecs.pdx.edu/~mpj/pubs/springschool.html.
+
+This package contains:
+@itemize
+@item
+the monad transformer class (in \"Control.Monad.Trans.Class\")
+@item
+concrete functor and monad
+transformers, each with associated operations and functions to lift
+operations associated with other transformers.
+@end itemize
+The package can be used on its own in portable Haskell code, in which
+case operations need to be manually lifted through transformer
+stacks (see \"Control.Monad.Trans.Class\" for some
+examples). Alternatively, it can be used with the non-portable monad
+classes in the mtl or monads-tf packages, which automatically lift
+operations introduced by monad transformers through other
+transformers.")
+    (license license:bsd-3)))
+
 (define-public ghc-transformers-base
   (package
     (name "ghc-transformers-base")
-- 
2.24.0


[-- Attachment #4: 0005-gnu-Add-ghc-wai-websockets.patch --]
[-- Type: text/x-patch, Size: 1735 bytes --]

From 797e6e0a70ba525d34c635f9d85abf6c8b538070 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:37:29 -0800
Subject: [PATCH 05/22] gnu: Add ghc-wai-websockets.

* gnu/packages/haskell-web.scm (ghc-wai-websockets): New variable.
---
 gnu/packages/haskell-web.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 28cb6537fe..93e8b17cf1 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -707,6 +707,36 @@ http://www.w3.org/TR/websockets/
 @end itemize")
     (license license:bsd-3)))
 
+(define-public ghc-wai-websockets
+  (package
+    (name "ghc-wai-websockets")
+    (version "3.0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/wai-websockets/wai-websockets-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0b2xmdsrsqpssyib53wbr6r8hf75789ndyyanv37sv99iyqcwz4i"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-wai" ,ghc-wai)
+       ("ghc-case-insensitive" ,ghc-case-insensitive)
+       ("ghc-network" ,ghc-network)
+       ("ghc-websockets" ,ghc-websockets)
+       ("ghc-http-types" ,ghc-http-types)))
+    (arguments
+     `(#:configure-flags '("--flags=-example")))
+    (home-page "https://github.com/yesodweb/wai")
+    (synopsis
+     "Provide a bridge between WAI and the websockets package")
+    (description
+     "Use websockets with WAI applications, primarily those hosted via Warp.")
+    (license license:expat)))
+
 (define-public ghc-xss-sanitize
   (package
     (name "ghc-xss-sanitize")
-- 
2.24.0


[-- Attachment #5: 0004-gnu-Add-ghc-websockets.patch --]
[-- Type: text/x-patch, Size: 2623 bytes --]

From 923e56a888728de8479fbb9c4534b85a032ffa29 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:12:42 -0800
Subject: [PATCH 04/22] gnu: Add ghc-websockets.

* gnu/packages/haskell-web.scm (ghc-websockets): New variable.
---
 gnu/packages/haskell-web.scm | 53 ++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 5888e8542e..28cb6537fe 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -654,6 +654,59 @@ limitation, automatic pruning, energy saving and replay resistance.")
 a WAI handler, via the native Haskell TLS implementation.")
     (license license:expat)))
 
+(define-public ghc-websockets
+  (package
+    (name "ghc-websockets")
+    (version "0.12.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/websockets/websockets-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1vp3790w3hmr6v96314vdx74f7sg2c7hvnc93gafq0xhbxnr7nvx"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-base64-bytestring" ,ghc-base64-bytestring)
+       ("ghc-bytestring-builder" ,ghc-bytestring-builder)
+       ("ghc-case-insensitive" ,ghc-case-insensitive)
+       ("ghc-network" ,ghc-network)
+       ("ghc-random" ,ghc-random)
+       ("ghc-sha" ,ghc-sha)
+       ("ghc-streaming-commons" ,ghc-streaming-commons)
+       ("ghc-entropy" ,ghc-entropy)))
+    (native-inputs
+     `(("ghc-hunit" ,ghc-hunit)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-test-framework" ,ghc-test-framework)
+       ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
+       ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)))
+    (home-page "https://jaspervdj.be/websockets/")
+    (synopsis
+     "Way to write WebSocket-capable servers in Haskell")
+    (description
+     "This library allows you to write WebSocket-capable servers.
+
+An example server:
+https://github.com/jaspervdj/websockets/blob/master/example/server.lhs
+An example client:
+https://github.com/jaspervdj/websockets/blob/master/example/client.hs
+
+See also:
+@itemize
+@item
+The specification of the WebSocket protocol:
+http://www.whatwg.org/specs/web-socket-protocol/.
+@item
+The JavaScript API for dealing with WebSockets:
+http://www.w3.org/TR/websockets/
+@end itemize")
+    (license license:bsd-3)))
+
 (define-public ghc-xss-sanitize
   (package
     (name "ghc-xss-sanitize")
-- 
2.24.0


[-- Attachment #6: 0003-gnu-Add-ghc-tasty-hspec.patch --]
[-- Type: text/x-patch, Size: 1866 bytes --]

From c087681c4488010678429962440dd818af570846 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:06:52 -0800
Subject: [PATCH 03/22] gnu: Add ghc-tasty-hspec.

* gnu/packages/haskell-check.scm (ghc-tasty-hspec): New variable.
---
 gnu/packages/haskell-check.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index c6e89460ea..7942f2019a 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -215,6 +215,39 @@ with the @url{https://hackage.haskell.org/package/tasty, tasty testing
 framework}.")
     (license license:bsd-3)))
 
+(define-public ghc-tasty-hspec
+  (package
+    (name "ghc-tasty-hspec")
+    (version "1.1.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/tasty-hspec/tasty-hspec-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0i9kdzjpk750sa078jj3iyhp72k0177zk7vxl131r6dkyz09x27y"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-hspec" ,ghc-hspec)
+       ("ghc-hspec-core" ,ghc-hspec-core)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-smallcheck" ,ghc-tasty-smallcheck)
+       ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)))
+    (arguments
+     `(#:cabal-revision
+       ("4" "1yppwhs2r2rlwrzli9ccv5ldgl95h5p7pqhsr898r3das6daf6sk")))
+    (home-page
+     "https://github.com/mitchellwrosen/tasty-hspec")
+    (synopsis
+     "Hspec support for the Tasty test framework")
+    (description
+     "This package provides a Tasty provider for Hspec test suites.")
+    (license license:bsd-3)))
+
 (define-public ghc-tasty-hunit
   (package
     (name "ghc-tasty-hunit")
-- 
2.24.0


[-- Attachment #7: 0006-gnu-Add-ghc-sourcemap.patch --]
[-- Type: text/x-patch, Size: 1858 bytes --]

From bedcac4849278a1dbfddd016a7639ebec46bee2f Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:39:09 -0800
Subject: [PATCH 06/22] gnu: Add ghc-sourcemap.

gnu/pacakges/haskell-web.scm (ghc-sourcemap): New variable.
---
 gnu/packages/haskell-web.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 93e8b17cf1..1aa92a84c2 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1678,3 +1678,36 @@ cookies, serving files, and more.")
     (description
      "Haskell library which exposes zero-copy sendfile functionality in a portable way.")
     (license license:bsd-3)))
+
+(define-public ghc-sourcemap
+  (package
+    (name "ghc-sourcemap")
+    (version "0.1.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/sourcemap/sourcemap-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0ynfm44ym8y592wnzdwa0d05dbkffyyg5sm26y5ylzpynk64r85r"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-utf8-string" ,ghc-utf8-string)))
+    (arguments
+     `(#:tests? #f))
+    (home-page
+     "http://hackage.haskell.org/package/sourcemap")
+    (synopsis
+     "Implementation of source maps as proposed by Google and Mozilla")
+    (description
+     "Implementation of source maps, revision 3, proposed by Google
+and Mozilla here https://wiki.mozilla.org/DevTools/Features/SourceMap
+and here
+https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit")
+    (license license:bsd-3)))
-- 
2.24.0


[-- Attachment #8: 0007-gnu-Add-ghc-mtl-compat.patch --]
[-- Type: text/x-patch, Size: 2215 bytes --]

From 0f4adfb5df5fb6c2878a64a2cedca9284ac9f027 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 09:32:28 -0800
Subject: [PATCH 07/22] gnu: Add ghc-mtl-compat.

* gnu/packages/haskell-xyz.scm (ghc-mtl-compat): New variable.
---
 gnu/packages/haskell-xyz.scm | 39 ++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 0e130d6b8a..0661b2f22f 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -7505,6 +7505,45 @@ semi-direct products, \"deletable\" monoids, \"split\" monoids, and
 \"cut\" monoids.")
     (license license:bsd-3)))
 
+(define-public ghc-mtl-compat
+  (package
+    (name "ghc-mtl-compat")
+    (version "0.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/mtl-compat/mtl-compat-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "17iszr5yb4f17g8mq6i74hsamii8z6m2qfsmgzs78mhiwa7kjm8r"))))
+    (build-system haskell-build-system)
+    (arguments
+     `(#:tests? #f
+       #:haddock? #f))
+    (home-page
+     "https://github.com/haskell-compat/mtl-compat")
+    (synopsis
+     "Backported Control.Monad.Except module from mtl")
+    (description
+     "This package backports the \"Control.Monad.Except\" module from
+mtl (if using mtl-2.2.0.1 or earlier), which reexports the ExceptT
+monad transformer and the MonadError class.
+
+This package should only be used if there is a need to use the
+Control.Monad.Except module specifically.  If you just want the mtl
+class instances for ExceptT, use transformers-compat instead, since
+mtl-compat does nothing but reexport the instances from that package.
+
+Note that unlike how mtl-2.2 or later works, the
+\"Control.Monad.Except\" module defined in this package exports all of
+ExceptT's monad class instances.  Therefore, you may have to declare
+import Control.Monad.Except () at the top of your file to get all of
+the ExceptT instances in scope.")
+    (license license:bsd-3)))
+
 (define-public ghc-murmur-hash
   (package
     (name "ghc-murmur-hash")
-- 
2.24.0


[-- Attachment #9: 0008-gnu-Add-ghc-protolude.patch --]
[-- Type: text/x-patch, Size: 1563 bytes --]

From fd3606def5d43eb5f7296df4b0892479662b16a9 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:40:38 -0800
Subject: [PATCH 08/22] gnu: Add ghc-protolude.

* gnu/packages/haskell-xyz.scm (ghc-protolude): New variable.
---
 gnu/packages/haskell-xyz.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 0661b2f22f..827df4a21a 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -8863,6 +8863,32 @@ API.")
     (description "This library provides profunctors for Haskell.")
     (license license:bsd-3)))
 
+(define-public ghc-protolude
+  (package
+    (name "ghc-protolude")
+    (version "0.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/protolude/protolude-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0zzkyxz0vmcbncpid7gp72fpjj0fla3gqhlfkij5c5lg12skjgfj"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-async" ,ghc-async)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-mtl-compat" ,ghc-mtl-compat)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)))
+    (home-page "https://github.com/sdiehl/protolude")
+    (synopsis "Small prelude")
+    (description
+     "A sensible set of defaults for writing custom Preludes.")
+    (license license:expat)))
+
 (define-public ghc-psqueues
   (package
     (name "ghc-psqueues")
-- 
2.24.0


[-- Attachment #10: 0009-gnu-Add-ghc-pattern-arrows.patch --]
[-- Type: text/x-patch, Size: 1549 bytes --]

From 999eccceaa9076654ec4b050f687810662cf85f3 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:41:40 -0800
Subject: [PATCH 09/22] gnu: Add ghc-pattern-arrows.

* gnu/packages/haskell-xyz.scm (ghc-pattern-arrows): New variable.
---
 gnu/packages/haskell-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 827df4a21a..ec8cd841a0 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -8499,6 +8499,29 @@ of two versions of a source file.  It provides a good balance between
 performance, nice output for humans, and simplicity of implementation.")
     (license license:bsd-3)))
 
+(define-public ghc-pattern-arrows
+  (package
+    (name "ghc-pattern-arrows")
+    (version "0.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/pattern-arrows/pattern-arrows-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "13q7bj19hd60rnjfc05wxlyck8llxy11z3mns8kxg197wxrdkhkg"))))
+    (build-system haskell-build-system)
+    (home-page
+     "https://blog.functorial.com/posts/2013-10-27-Pretty-Printing-Arrows.html")
+    (synopsis "Arrows for Pretty Printing")
+    (description
+     "A library for generating concise pretty printers based on precedence
+rules.")
+    (license license:expat)))
+
 (define-public ghc-pcre-light
   (package
     (name "ghc-pcre-light")
-- 
2.24.0


[-- Attachment #11: 0010-gnu-Add-ghc-language-javascript.patch --]
[-- Type: text/x-patch, Size: 1842 bytes --]

From 6767d3787f3196a3af228d9c039d4fffa9fda2f0 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:43:44 -0800
Subject: [PATCH 10/22] gnu: Add ghc-language-javascript.

* gnu/packages/haskell-web.scm (ghc-language-javascript): New variable.
---
 gnu/packages/haskell-web.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 1aa92a84c2..55351c4332 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1711,3 +1711,35 @@ and Mozilla here https://wiki.mozilla.org/DevTools/Features/SourceMap
 and here
 https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit")
     (license license:bsd-3)))
+
+(define-public ghc-language-javascript
+  (package
+    (name "ghc-language-javascript")
+    (version "0.7.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/language-javascript/language-javascript-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "15bpqpkjf2y3fk8wff9zlnkpsjc63bnbvhlkxrs9alj0bikq17nk"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-blaze-builder" ,ghc-blaze-builder)
+       ("ghc-utf8-string" ,ghc-utf8-string)))
+    (native-inputs
+     `(("ghc-alex" ,ghc-alex)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-happy" ,ghc-happy)
+       ("ghc-hspec" ,ghc-hspec)
+       ("ghc-utf8-light" ,ghc-utf8-light)))
+    (home-page
+     "https://github.com/erikd/language-javascript")
+    (synopsis "Parser for JavaScript")
+    (description
+     "Parses Javascript into an Abstract Syntax Tree (AST).  Initially intended
+as frontend to hjsmin.")
+    (license license:bsd-3)))
-- 
2.24.0


[-- Attachment #12: 0011-gnu-Add-ghc-bower-json.patch --]
[-- Type: text/x-patch, Size: 1929 bytes --]

From 5e5547f43a6763bbba5f3f58cf0b2936dcebf8d8 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:44:47 -0800
Subject: [PATCH 11/22] gnu: Add ghc-bower-json.

* gnu/packages/haskell-web.scm (ghc-bower-json): New variable.
---
 gnu/packages/haskell-web.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 55351c4332..cf6e7f4051 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1743,3 +1743,35 @@ https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/
      "Parses Javascript into an Abstract Syntax Tree (AST).  Initially intended
 as frontend to hjsmin.")
     (license license:bsd-3)))
+
+(define-public ghc-bower-json
+  (package
+    (name "ghc-bower-json")
+    (version "1.0.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/bower-json/bower-json-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0wvygg3rdbxzrmr61a9w6ddv9pfric85ih8hnxyk0ydzn7i59abs"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-aeson-better-errors" ,ghc-aeson-better-errors)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-transformers" ,ghc-transformers)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)))
+    (native-inputs
+     `(("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-hunit" ,ghc-tasty-hunit)))
+    (home-page "https://github.com/hdgarrood/bower-json")
+    (synopsis "Read bower.json from Haskell")
+    (description
+     "Bower is a package manager for the web (see http://bower.io).  This
+package provides a data type and ToJSON/FromJSON instances for Bower's package
+manifest file,bower.json.")
+    (license license:expat)))
-- 
2.24.0


[-- Attachment #13: 0013-gnu-Add-ghc-assoc.patch --]
[-- Type: text/x-patch, Size: 1620 bytes --]

From 3fafac630b78ac64bc83fc9d556f851e73e5620a Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:44:49 -0800
Subject: [PATCH 13/22] gnu: Add ghc-assoc.

* gnu/packages/haskell-xyz.scm (ghc-assoc): New variable.
---
 gnu/packages/haskell-xyz.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index ec8cd841a0..5436bde877 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -451,6 +451,34 @@ colored output using the ansi-terminal package.")
 style.")
     (license license:bsd-3)))
 
+(define-public ghc-assoc
+  (package
+    (name "ghc-assoc")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/assoc/assoc-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1m9n4vp190bvn2wcrd4ggfwa9pi93jp0zgx02mdgywn2zfidw020"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-bifunctors" ,ghc-bifunctors)
+       ("ghc-tagged" ,ghc-tagged)))
+    (home-page
+     "http://hackage.haskell.org/package/assoc")
+    (synopsis
+     "Swap and assoc: Symmetric and Semigroupy Bifunctors")
+    (description
+     "Provides generalisations of @code{swap :: (a,b) -> (b,a)} and
+@code{assoc :: ((a,b),c) -> (a,(b,c))} to @code{Bifunctor}s supporting
+similar operations (e.g. @code{Either}, @code{These}).")
+    (license license:bsd-3)))
+
 (define-public ghc-async
   (package
     (name "ghc-async")
-- 
2.24.0


[-- Attachment #14: 0015-gnu-Add-ghc-semialign.patch --]
[-- Type: text/x-patch, Size: 2208 bytes --]

From 56a3d7d513e2d7e6d5f101941ffd7e0067150f75 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:48:25 -0800
Subject: [PATCH 15/22] gnu: Add ghc-semialign.

* gnu/packages/haskell-xyz.scm (ghc-semialign): New variable.
---
 gnu/packages/haskell-xyz.scm | 40 ++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index b484d08619..ee0ea9ef23 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -10036,6 +10036,46 @@ Haskell")
 a memory chunk that will be auto-scrubbed after it run out of scope.")
     (license license:bsd-3)))
 
+(define-public ghc-semialign
+  (package
+    (name "ghc-semialign")
+    (version "1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/semialign/semialign-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "004x0a80sqqdgvsyk4z0nasxpi6z3g1d8kgwj804bj9ka8dlc75m"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-these" ,ghc-these)
+       ("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-tagged" ,ghc-tagged)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-semigroupoids" ,ghc-semigroupoids)))
+    (arguments
+     `(#:cabal-revision
+       ("1"
+        "0qnqnyfng4kwy2h2anrcy5id2ijnawava3zcc5h5b8ri1y6ks6zi")))
+    (home-page
+     "https://github.com/isomorphism/these")
+    (synopsis
+     "Align and Zip type-classes from the common Semialign ancestor ")
+    (description
+     "The major use of @code{These} of this is provided by the
+@code{align} member of @code{Semialign} class, representing a
+generalized notion of \"zipping with padding\" that combines
+structures without truncating to the size of the smaller input.  It
+turns out that @code{zip} operation fits well the @code{Semialign}
+class, forming lattice-like structure.")
+    (license license:bsd-3)))
+
 (define-public ghc-semigroupoids
   (package
     (name "ghc-semigroupoids")
-- 
2.24.0


[-- Attachment #15: 0014-gnu-Add-ghc-these.patch --]
[-- Type: text/x-patch, Size: 2699 bytes --]

From 96c9533c459333ba771768d159056f76d4b13f8d Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:45:42 -0800
Subject: [PATCH 14/22] gnu: Add ghc-these.

* gnu/packages/haskell-xyz.scm (ghc-these): New variable.
---
 gnu/packages/haskell-xyz.scm | 57 ++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 5436bde877..b484d08619 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -11520,6 +11520,63 @@ and @code{Eq} instances.  These instances used to live in the haskell-src-meta
 package, and that's where the version number started.")
     (license license:bsd-3)))
 
+(define-public ghc-these
+  (package
+    (name "ghc-these")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/these/these-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1k0pi65g7cm9hzdw6my6bzz2zvddkmj1qs45ymqmi316bpiixk3r"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-assoc" ,ghc-assoc)
+       ("ghc-semigroupoids" ,ghc-semigroupoids)
+       ("ghc-quickcheck" ,ghc-quickcheck)))
+    (arguments
+     `(#:cabal-revision
+       ("1"
+        "0923r86fnmgpx0msm68aszirh2n19nn5bccgjxfh2146jw4z7w3z")))
+    (home-page
+     "https://github.com/isomorphism/these")
+    (synopsis "Either-or-both data type")
+    (description
+     "This package provides a data type @code{These a b} which can
+hold a value of either type or values of each type.  This is usually
+thought of as an \"inclusive or\" type (contrasting @code{Either a b} as
+\"exclusive or\") or as an \"outer join\" type (contrasting @code{(a, b)}
+as \"inner join\").
+
+@code{data These a b = This a | That b | These a b}
+
+Since version 1, this package was split into parts:
+
+@itemize
+@item
+https://hackage.haskell.org/package/semialign For @code{Align} and
+@code{Zip} type-classes.
+@item
+https://hackage.haskell.org/package/semialign-indexed For
+@code{SemialignWithIndex} class, providing @code{ialignWith} and
+@code{izipWith}
+@item
+https://hackage.haskell.org/package/these-lens For lens combinators.
+@item
+http://hackage.haskell.org/package/monad-chronicle For transformers
+variant of @code{These}.
+@end itemize")
+    (license license:bsd-3)))
+
 (define-public ghc-threads
   (package
     (name "ghc-threads")
-- 
2.24.0


[-- Attachment #16: 0012-gnu-Add-ghc-aeson-better-errors.patch --]
[-- Type: text/x-patch, Size: 2019 bytes --]

From e8dce97ced78ca44aed6d00eb26de210b8d76d70 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:45:59 -0800
Subject: [PATCH 12/22] gnu: Add ghc-aeson-better-errors.

* gnu/packages/haskell-web.scm (ghc-aeson-better-errors): New variable.
---
 gnu/packages/haskell-web.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index cf6e7f4051..a242648d0c 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -971,6 +971,39 @@ the function @code{aesonQQ} that compile-time converts a string representation
 of a JSON value into a @code{Data.Aeson.Value}.")
     (license license:expat)))
 
+(define-public ghc-aeson-better-errors
+  (package
+    (name "ghc-aeson-better-errors")
+    (version "0.9.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/aeson-better-errors/aeson-better-errors-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "09vkyrhwak3bmpfsqcd2az8hfqqkxyhg468hv5avgisy0nzh3w38"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-dlist" ,ghc-dlist)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)
+       ("ghc-void" ,ghc-void)))
+    (home-page
+     "https://github.com/hdgarrood/aeson-better-errors")
+    (synopsis
+     "Better error messages when decoding JSON values in Haskell")
+    (description
+     "A small package which gives you the tools to build parsers to decode
+JSON values, and gives good error messages when parsing fails.  See also
+http://harry.garrood.me/blog/aeson-better-errors/.")
+    (license license:expat)))
+
 (define-public ghc-multipart
   (package
     (name "ghc-multipart")
-- 
2.24.0


[-- Attachment #17: 0016-gnu-Add-ghc-happy-1.19.9.patch --]
[-- Type: text/x-patch, Size: 2779 bytes --]

From 815e63ca1cf3a1b03d7d4fea8cfd8fd719031bba Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:52:48 -0800
Subject: [PATCH 16/22] gnu: Add ghc-happy@1.19.9

* gnu/packages/purescript.scm (ghc-happy-1.19.9): New file, New variable.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add purescript.scm.
---
 gnu/local.mk                |  1 +
 gnu/packages/purescript.scm | 44 +++++++++++++++++++++++++++++++++++++
 2 files changed, 45 insertions(+)
 create mode 100644 gnu/packages/purescript.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 7f8715235d..bfae54efef 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -405,6 +405,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pretty-print.scm			\
   %D%/packages/protobuf.scm			\
   %D%/packages/pure.scm				\
+  %D$/packages/purescript.scm			\
   %D%/packages/pv.scm				\
   %D%/packages/python.scm			\
   %D%/packages/python-check.scm			\
diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
new file mode 100644
index 0000000000..ba90f9c23b
--- /dev/null
+++ b/gnu/packages/purescript.scm
@@ -0,0 +1,44 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages purescript)
+  #:use-module (gnu packages haskell-xyz)
+  #:use-module (gnu packages haskell-check)
+  #:use-module (gnu packages haskell-crypto)
+  #:use-module (gnu packages haskell-web)
+  #:use-module ((gnu packages python) #:select (python))
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix packages)
+  #:use-module (guix build-system haskell)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define ghc-happy-1.19.9
+  (package
+    (inherit ghc-happy)
+    (version "1.19.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/happy/happy-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "138xpxdb7x62lpmgmb6b3v3vgdqqvqn4273jaap3mjmc2gla709y"))))))
-- 
2.24.0


[-- Attachment #18: 0017-gnu-Add-ghc-clock-0.7.2.patch --]
[-- Type: text/x-patch, Size: 1044 bytes --]

From d25325d9bd210f2a76dd652bf7f54342284cc15b Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:53:33 -0800
Subject: [PATCH 17/22] gnu: Add ghc-clock@0.7.2.

* gnu/packages/purescript.scm (ghc-clock-0.7.2): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index ba90f9c23b..d430e62fcd 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -42,3 +42,18 @@
        (sha256
         (base32
          "138xpxdb7x62lpmgmb6b3v3vgdqqvqn4273jaap3mjmc2gla709y"))))))
+
+(define ghc-clock-0.7.2
+  (package
+    (inherit ghc-clock)
+    (version "0.7.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/"
+             "clock/"
+             "clock-" version ".tar.gz"))
+       (sha256
+        (base32
+         "07v91s20halsqjmziqb1sqjp2sjpckl9by7y28aaklwqi2bh2rl8"))))))
-- 
2.24.0


[-- Attachment #19: 0018-gnu-Add-ghc-glob-0.9.3.patch --]
[-- Type: text/x-patch, Size: 1063 bytes --]

From f9b7878afd48fa334ea6eda3389e0ffd64698ad4 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:54:12 -0800
Subject: [PATCH 18/22] gnu: Add ghc-glob@0.9.3.

* gnu/packages/purescript.scm (ghc-glob-0.9.3): New variable.
---
 gnu/packages/purescript.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index d430e62fcd..8bfbf5411d 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -57,3 +57,17 @@
        (sha256
         (base32
          "07v91s20halsqjmziqb1sqjp2sjpckl9by7y28aaklwqi2bh2rl8"))))))
+
+(define ghc-glob-0.9.3
+  (package
+    (inherit ghc-glob)
+    (version "0.9.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "Glob-" version "/"
+                           "Glob-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1s69lk3ic6zlkikhvb78ly9wl3g70a1h1m6ndhsca01pp8z8axrs"))))))
-- 
2.24.0


[-- Attachment #20: 0019-gnu-Add-ghc-ansi-terminal-0.8.2.patch --]
[-- Type: text/x-patch, Size: 1086 bytes --]

From 7513d5ab826db8df597632e87e7d13e10c2de083 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:54:51 -0800
Subject: [PATCH 19/22] gnu: Add ghc-ansi-terminal@0.8.2.

* gnu/packages/purescript.scm (ghc-ansi-terminal-0.8.2): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 8bfbf5411d..30abc05c2e 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -71,3 +71,18 @@
        (sha256
         (base32
          "1s69lk3ic6zlkikhvb78ly9wl3g70a1h1m6ndhsca01pp8z8axrs"))))))
+
+(define ghc-ansi-terminal-0.8.2
+  (package
+    (inherit ghc-ansi-terminal)
+    (version "0.8.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/ansi-terminal/ansi-terminal-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "147ss9wz03ww6ypbv6yh5vi1wfrfcaqm8r6nxh50vnp7254359wh"))))))
-- 
2.24.0


[-- Attachment #21: 0020-gnu-Add-ghc-lifted-async-0.10.0.4.patch --]
[-- Type: text/x-patch, Size: 1105 bytes --]

From b088c1ee02e1978875dca0c3155d8bbb22c32a8b Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:55:24 -0800
Subject: [PATCH 20/22] gnu: Add ghc-lifted-async@0.10.0.4

* gnu/packages/purescript.scm (ghc-lifted-async-0.10.0.4): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 30abc05c2e..10e69151df 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -86,3 +86,18 @@
        (sha256
         (base32
          "147ss9wz03ww6ypbv6yh5vi1wfrfcaqm8r6nxh50vnp7254359wh"))))))
+
+(define ghc-lifted-async-0.10.0.4
+  (package
+    (inherit ghc-lifted-async)
+    (version "0.10.0.4")
+    (source
+     (origin
+       (inherit (package-source ghc-lifted-async))
+       (uri (string-append
+             "mirror://hackage/package/lifted-async/lifted-async-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0cwl1d0wjpdk0v1l1qxiqiksmak950c8gx169c1q77cg0z18ijf9"))))))
-- 
2.24.0


[-- Attachment #22: 0022-gnu-Add-purescript.patch --]
[-- Type: text/x-patch, Size: 4153 bytes --]

From 3137a5c8b78683c9abcc7337b20febbf7f33b1eb Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 09:21:50 -0800
Subject: [PATCH 22/22] gnu: Add purescript.

* gnu/packages/purescript.scm (purescript): New variable.
---
 gnu/packages/purescript.scm | 89 +++++++++++++++++++++++++++++++++++++
 1 file changed, 89 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 8936e1bb87..7b60aae097 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -116,3 +116,92 @@
        (sha256
         (base32
          "1xacvl5wf47cz61igb94zf961b9ks0yhr02myxgjf53clm70dg6j"))))))
+
+(define-public purescript
+  (package
+    (name "purescript")
+    (version "0.13.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/purescript/purescript-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0plqzlcfaw2ik2im7aq8yy1b1y88cnc8qd7wwaayndbdz060s9j4"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-glob" ,ghc-glob-0.9.3)
+       ("ghc-aeson" ,ghc-aeson)
+       ("ghc-aeson-better-errors" ,ghc-aeson-better-errors)
+       ("ghc-aeson-pretty" ,ghc-aeson-pretty)
+       ("ghc-ansi-terminal" ,ghc-ansi-terminal-0.8.2)
+       ("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-blaze-html" ,ghc-blaze-html)
+       ("ghc-bower-json" ,ghc-bower-json)
+       ("ghc-boxes" ,ghc-boxes)
+       ("ghc-cheapskate" ,ghc-cheapskate)
+       ("ghc-clock" ,ghc-clock-0.7.2)
+       ("ghc-cryptonite" ,ghc-cryptonite)
+       ("ghc-data-ordlist" ,ghc-data-ordlist)
+       ("ghc-dlist" ,ghc-dlist)
+       ("ghc-edit-distance" ,ghc-edit-distance)
+       ("ghc-file-embed" ,ghc-file-embed)
+       ("ghc-fsnotify" ,ghc-fsnotify)
+       ("ghc-happy" ,ghc-happy)
+       ("ghc-language-javascript" ,ghc-language-javascript)
+       ("ghc-lifted-async" ,ghc-lifted-async-0.10.0.4)
+       ("ghc-lifted-base" ,ghc-lifted-base)
+       ("ghc-memory" ,ghc-memory)
+       ("ghc-microlens-platform" ,ghc-microlens-platform)
+       ("ghc-monad-control" ,ghc-monad-control)
+       ("ghc-monad-logger" ,ghc-monad-logger)
+       ("ghc-network" ,ghc-network-3.0.1.1)
+       ("ghc-parallel" ,ghc-parallel)
+       ("ghc-pattern-arrows" ,ghc-pattern-arrows)
+       ("ghc-protolude" ,ghc-protolude)
+       ("ghc-regex-tdfa" ,ghc-regex-tdfa)
+       ("ghc-safe" ,ghc-safe)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-semialign" ,ghc-semialign)
+       ("ghc-semigroups" ,ghc-semigroups)
+       ("ghc-sourcemap" ,ghc-sourcemap)
+       ("ghc-split" ,ghc-split)
+       ("ghc-stringsearch" ,ghc-stringsearch)
+       ("ghc-syb" ,ghc-syb)
+       ("ghc-these" ,ghc-these)
+       ("ghc-transformers-base" ,ghc-transformers-base)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-utf8-string" ,ghc-utf8-string)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint)
+       ("ghc-http-types" ,ghc-http-types)
+       ("ghc-network" ,ghc-network)
+       ("ghc-optparse-applicative" ,ghc-optparse-applicative)
+       ("ghc-wai" ,ghc-wai)
+       ("ghc-wai-websockets" ,ghc-wai-websockets)
+       ("ghc-warp" ,ghc-warp)
+       ("ghc-websockets" ,ghc-websockets)
+       ("ghc-gitrev" ,ghc-gitrev)))
+    (native-inputs
+     `(("ghc-happy" ,ghc-happy-1.19.9)
+       ("ghc-hunit" ,ghc-hunit)
+       ("ghc-hspec" ,ghc-hspec)
+       ("hspec-discover" ,hspec-discover)
+       ("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-hspec" ,ghc-tasty-hspec)))
+    (arguments
+     `(;; Tests require npm
+       #:tests? #f
+       ;; Haddock fails
+       #:haddock? #f
+       #:configure-flags '("--flags=release")))
+    (home-page "http://www.purescript.org/")
+    (synopsis "Haskell inspired programming language compiling to JavaScript")
+    (description
+     "A small strongly, statically typed programming language with
+expressive types, inspired by Haskell and compiling to JavaScript.")
+    (license license:bsd-3)))
-- 
2.24.0


[-- Attachment #23: 0021-gnu-Add-ghc-network-3.0.1.1.patch --]
[-- Type: text/x-patch, Size: 1068 bytes --]

From ad769be9b6c0aba12bff28d5d41bb3333414b146 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:56:13 -0800
Subject: [PATCH 21/22] gnu: Add ghc-network@3.0.1.1

* gnu/packages/purescript.scm (ghc-network-3.0.1.1): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 10e69151df..8936e1bb87 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -101,3 +101,18 @@
        (sha256
         (base32
          "0cwl1d0wjpdk0v1l1qxiqiksmak950c8gx169c1q77cg0z18ijf9"))))))
+
+(define ghc-network-3.0.1.1
+  (package
+    (inherit ghc-network)
+    (version "3.0.1.1")
+    (source
+     (origin
+       (inherit (package-source ghc-network))
+       (uri (string-append
+             "mirror://hackage/package/network/network-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1xacvl5wf47cz61igb94zf961b9ks0yhr02myxgjf53clm70dg6j"))))))
-- 
2.24.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#38596] [PATCH] Add PureScript
  2019-12-13 18:46 [bug#38596] [PATCH] Add PureScript John Soo
@ 2019-12-18 13:50 ` John Soo
  2019-12-18 14:30 ` John Soo
  2020-04-11 20:12 ` [bug#38596] [PATCH] gnu: " John Soo
  2 siblings, 0 replies; 9+ messages in thread
From: John Soo @ 2019-12-18 13:50 UTC (permalink / raw)
  To: 38596, Brett Gilio


[-- Attachment #1.1: Type: text/plain, Size: 91 bytes --]

Hi all,

I realized I had a typo in the final patch.

Here are my updated patches.

- John

[-- Attachment #1.2: Type: text/html, Size: 199 bytes --]

[-- Attachment #2: 0001-gnu-Add-ghc-utf8-light.patch --]
[-- Type: text/x-patch, Size: 1456 bytes --]

From c86d47d54781b83f736622edf17603ee2671f4a6 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:00:31 -0800
Subject: [PATCH 01/22] gnu: Add ghc-utf8-light.

* gnu/packages/haskell-xyz.scm (ghc-utf8-light): New variable.
---
 gnu/packages/haskell-xyz.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 773164ea0a..8d27d64cc0 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -12188,6 +12188,27 @@ a style ready for qualification, that is, you should import them by
 parser that uses ByteStrings for parsing and representing the URI data.")
     (license license:bsd-3)))
 
+(define-public ghc-utf8-light
+  (package
+    (name "ghc-utf8-light")
+    (version "0.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/utf8-light/utf8-light-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0rwyc5z331yfnm4hpx0sph6i1zvkd1z10vvglhnp0vc9wy644k0q"))))
+    (build-system haskell-build-system)
+    (home-page
+     "http://hackage.haskell.org/package/utf8-light")
+    (synopsis "Lightweight unicode support for Haskell")
+    (description "Lightweight UTF8 handling.")
+    (license license:bsd-3)))
+
 (define-public ghc-utf8-string
   (package
     (name "ghc-utf8-string")
-- 
2.24.0


[-- Attachment #3: 0003-gnu-Add-ghc-tasty-hspec.patch --]
[-- Type: text/x-patch, Size: 1866 bytes --]

From b088cd27f98d47b39e9906b796ef4d3f3cdaba7d Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:06:52 -0800
Subject: [PATCH 03/22] gnu: Add ghc-tasty-hspec.

* gnu/packages/haskell-check.scm (ghc-tasty-hspec): New variable.
---
 gnu/packages/haskell-check.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index c6e89460ea..7942f2019a 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -215,6 +215,39 @@ with the @url{https://hackage.haskell.org/package/tasty, tasty testing
 framework}.")
     (license license:bsd-3)))
 
+(define-public ghc-tasty-hspec
+  (package
+    (name "ghc-tasty-hspec")
+    (version "1.1.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/tasty-hspec/tasty-hspec-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0i9kdzjpk750sa078jj3iyhp72k0177zk7vxl131r6dkyz09x27y"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-hspec" ,ghc-hspec)
+       ("ghc-hspec-core" ,ghc-hspec-core)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-smallcheck" ,ghc-tasty-smallcheck)
+       ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)))
+    (arguments
+     `(#:cabal-revision
+       ("4" "1yppwhs2r2rlwrzli9ccv5ldgl95h5p7pqhsr898r3das6daf6sk")))
+    (home-page
+     "https://github.com/mitchellwrosen/tasty-hspec")
+    (synopsis
+     "Hspec support for the Tasty test framework")
+    (description
+     "This package provides a Tasty provider for Hspec test suites.")
+    (license license:bsd-3)))
+
 (define-public ghc-tasty-hunit
   (package
     (name "ghc-tasty-hunit")
-- 
2.24.0


[-- Attachment #4: 0002-gnu-Add-ghc-transformers.patch --]
[-- Type: text/x-patch, Size: 2398 bytes --]

From 11db97c6f480ba7b439f06dd2ba96ace3639efd8 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:04:13 -0800
Subject: [PATCH 02/22] gnu: Add ghc-transformers.

* gnu/packages/haskell-xyz.scm (ghc-transformers): New variable.
---
 gnu/packages/haskell-xyz.scm | 43 ++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 8d27d64cc0..64a27e8484 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -11644,6 +11644,49 @@ from a shell.  The @code{tldr} pages are a community effort to simplify the
 man pages with practical examples.")
     (license license:bsd-3)))
 
+(define-public ghc-transformers
+  (package
+    (name "ghc-transformers")
+    (version "0.5.6.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/transformers/transformers-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0v66j5k0xqk51pmca55wq192qyw2p43s2mgxlz4f95q2c1fpjs5n"))))
+    (build-system haskell-build-system)
+    (home-page
+     "http://hackage.haskell.org/package/transformers")
+    (synopsis "Concrete functor and monad transformers")
+    (description
+     "A portable library of functor and monad transformers, inspired
+by the paper \"Functional Programming with Overloading and
+Higher-Order Polymorphism\", by Mark P Jones, in Advanced School of
+Functional Programming, 1995
+http://web.cecs.pdx.edu/~mpj/pubs/springschool.html.
+
+This package contains:
+@itemize
+@item
+the monad transformer class (in \"Control.Monad.Trans.Class\")
+@item
+concrete functor and monad
+transformers, each with associated operations and functions to lift
+operations associated with other transformers.
+@end itemize
+The package can be used on its own in portable Haskell code, in which
+case operations need to be manually lifted through transformer
+stacks (see \"Control.Monad.Trans.Class\" for some
+examples).  Alternatively, it can be used with the non-portable monad
+classes in the mtl or monads-tf packages, which automatically lift
+operations introduced by monad transformers through other
+transformers.")
+    (license license:bsd-3)))
+
 (define-public ghc-transformers-base
   (package
     (name "ghc-transformers-base")
-- 
2.24.0


[-- Attachment #5: 0004-gnu-Add-ghc-websockets.patch --]
[-- Type: text/x-patch, Size: 2623 bytes --]

From 7864084a1a6271e7c52cc4fa588892e796d2e362 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:12:42 -0800
Subject: [PATCH 04/22] gnu: Add ghc-websockets.

* gnu/packages/haskell-web.scm (ghc-websockets): New variable.
---
 gnu/packages/haskell-web.scm | 53 ++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 5888e8542e..28cb6537fe 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -654,6 +654,59 @@ limitation, automatic pruning, energy saving and replay resistance.")
 a WAI handler, via the native Haskell TLS implementation.")
     (license license:expat)))
 
+(define-public ghc-websockets
+  (package
+    (name "ghc-websockets")
+    (version "0.12.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/websockets/websockets-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1vp3790w3hmr6v96314vdx74f7sg2c7hvnc93gafq0xhbxnr7nvx"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-base64-bytestring" ,ghc-base64-bytestring)
+       ("ghc-bytestring-builder" ,ghc-bytestring-builder)
+       ("ghc-case-insensitive" ,ghc-case-insensitive)
+       ("ghc-network" ,ghc-network)
+       ("ghc-random" ,ghc-random)
+       ("ghc-sha" ,ghc-sha)
+       ("ghc-streaming-commons" ,ghc-streaming-commons)
+       ("ghc-entropy" ,ghc-entropy)))
+    (native-inputs
+     `(("ghc-hunit" ,ghc-hunit)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-test-framework" ,ghc-test-framework)
+       ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
+       ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)))
+    (home-page "https://jaspervdj.be/websockets/")
+    (synopsis
+     "Way to write WebSocket-capable servers in Haskell")
+    (description
+     "This library allows you to write WebSocket-capable servers.
+
+An example server:
+https://github.com/jaspervdj/websockets/blob/master/example/server.lhs
+An example client:
+https://github.com/jaspervdj/websockets/blob/master/example/client.hs
+
+See also:
+@itemize
+@item
+The specification of the WebSocket protocol:
+http://www.whatwg.org/specs/web-socket-protocol/.
+@item
+The JavaScript API for dealing with WebSockets:
+http://www.w3.org/TR/websockets/
+@end itemize")
+    (license license:bsd-3)))
+
 (define-public ghc-xss-sanitize
   (package
     (name "ghc-xss-sanitize")
-- 
2.24.0


[-- Attachment #6: 0005-gnu-Add-ghc-wai-websockets.patch --]
[-- Type: text/x-patch, Size: 1735 bytes --]

From 91d25803c4a707e69336c3573b203de04c9f0991 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:37:29 -0800
Subject: [PATCH 05/22] gnu: Add ghc-wai-websockets.

* gnu/packages/haskell-web.scm (ghc-wai-websockets): New variable.
---
 gnu/packages/haskell-web.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 28cb6537fe..93e8b17cf1 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -707,6 +707,36 @@ http://www.w3.org/TR/websockets/
 @end itemize")
     (license license:bsd-3)))
 
+(define-public ghc-wai-websockets
+  (package
+    (name "ghc-wai-websockets")
+    (version "3.0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/wai-websockets/wai-websockets-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0b2xmdsrsqpssyib53wbr6r8hf75789ndyyanv37sv99iyqcwz4i"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-wai" ,ghc-wai)
+       ("ghc-case-insensitive" ,ghc-case-insensitive)
+       ("ghc-network" ,ghc-network)
+       ("ghc-websockets" ,ghc-websockets)
+       ("ghc-http-types" ,ghc-http-types)))
+    (arguments
+     `(#:configure-flags '("--flags=-example")))
+    (home-page "https://github.com/yesodweb/wai")
+    (synopsis
+     "Provide a bridge between WAI and the websockets package")
+    (description
+     "Use websockets with WAI applications, primarily those hosted via Warp.")
+    (license license:expat)))
+
 (define-public ghc-xss-sanitize
   (package
     (name "ghc-xss-sanitize")
-- 
2.24.0


[-- Attachment #7: 0006-gnu-Add-ghc-sourcemap.patch --]
[-- Type: text/x-patch, Size: 1858 bytes --]

From b1aff2f62ee59d037e0b4ef2a0e7f44215b95134 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:39:09 -0800
Subject: [PATCH 06/22] gnu: Add ghc-sourcemap.

gnu/pacakges/haskell-web.scm (ghc-sourcemap): New variable.
---
 gnu/packages/haskell-web.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 93e8b17cf1..1aa92a84c2 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1678,3 +1678,36 @@ cookies, serving files, and more.")
     (description
      "Haskell library which exposes zero-copy sendfile functionality in a portable way.")
     (license license:bsd-3)))
+
+(define-public ghc-sourcemap
+  (package
+    (name "ghc-sourcemap")
+    (version "0.1.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/sourcemap/sourcemap-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0ynfm44ym8y592wnzdwa0d05dbkffyyg5sm26y5ylzpynk64r85r"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-utf8-string" ,ghc-utf8-string)))
+    (arguments
+     `(#:tests? #f))
+    (home-page
+     "http://hackage.haskell.org/package/sourcemap")
+    (synopsis
+     "Implementation of source maps as proposed by Google and Mozilla")
+    (description
+     "Implementation of source maps, revision 3, proposed by Google
+and Mozilla here https://wiki.mozilla.org/DevTools/Features/SourceMap
+and here
+https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit")
+    (license license:bsd-3)))
-- 
2.24.0


[-- Attachment #8: 0007-gnu-Add-ghc-mtl-compat.patch --]
[-- Type: text/x-patch, Size: 2215 bytes --]

From 2ffb8346f135c791c0932e84dcc87a61b3d5481a Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 09:32:28 -0800
Subject: [PATCH 07/22] gnu: Add ghc-mtl-compat.

* gnu/packages/haskell-xyz.scm (ghc-mtl-compat): New variable.
---
 gnu/packages/haskell-xyz.scm | 39 ++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 64a27e8484..f1c8ae1e89 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -7505,6 +7505,45 @@ semi-direct products, \"deletable\" monoids, \"split\" monoids, and
 \"cut\" monoids.")
     (license license:bsd-3)))
 
+(define-public ghc-mtl-compat
+  (package
+    (name "ghc-mtl-compat")
+    (version "0.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/mtl-compat/mtl-compat-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "17iszr5yb4f17g8mq6i74hsamii8z6m2qfsmgzs78mhiwa7kjm8r"))))
+    (build-system haskell-build-system)
+    (arguments
+     `(#:tests? #f
+       #:haddock? #f))
+    (home-page
+     "https://github.com/haskell-compat/mtl-compat")
+    (synopsis
+     "Backported Control.Monad.Except module from mtl")
+    (description
+     "This package backports the \"Control.Monad.Except\" module from
+mtl (if using mtl-2.2.0.1 or earlier), which reexports the ExceptT
+monad transformer and the MonadError class.
+
+This package should only be used if there is a need to use the
+Control.Monad.Except module specifically.  If you just want the mtl
+class instances for ExceptT, use transformers-compat instead, since
+mtl-compat does nothing but reexport the instances from that package.
+
+Note that unlike how mtl-2.2 or later works, the
+\"Control.Monad.Except\" module defined in this package exports all of
+ExceptT's monad class instances.  Therefore, you may have to declare
+import Control.Monad.Except () at the top of your file to get all of
+the ExceptT instances in scope.")
+    (license license:bsd-3)))
+
 (define-public ghc-murmur-hash
   (package
     (name "ghc-murmur-hash")
-- 
2.24.0


[-- Attachment #9: 0009-gnu-Add-ghc-pattern-arrows.patch --]
[-- Type: text/x-patch, Size: 1549 bytes --]

From 7fa28aeb1c55d793e2cb3e0bd9c695af3323e8ae Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:41:40 -0800
Subject: [PATCH 09/22] gnu: Add ghc-pattern-arrows.

* gnu/packages/haskell-xyz.scm (ghc-pattern-arrows): New variable.
---
 gnu/packages/haskell-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index ad29e62670..b57103d98b 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -8499,6 +8499,29 @@ of two versions of a source file.  It provides a good balance between
 performance, nice output for humans, and simplicity of implementation.")
     (license license:bsd-3)))
 
+(define-public ghc-pattern-arrows
+  (package
+    (name "ghc-pattern-arrows")
+    (version "0.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/pattern-arrows/pattern-arrows-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "13q7bj19hd60rnjfc05wxlyck8llxy11z3mns8kxg197wxrdkhkg"))))
+    (build-system haskell-build-system)
+    (home-page
+     "https://blog.functorial.com/posts/2013-10-27-Pretty-Printing-Arrows.html")
+    (synopsis "Arrows for Pretty Printing")
+    (description
+     "A library for generating concise pretty printers based on precedence
+rules.")
+    (license license:expat)))
+
 (define-public ghc-pcre-light
   (package
     (name "ghc-pcre-light")
-- 
2.24.0


[-- Attachment #10: 0010-gnu-Add-ghc-language-javascript.patch --]
[-- Type: text/x-patch, Size: 1842 bytes --]

From 74cec1d6ab428759d8e540df38071caa66af27df Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:43:44 -0800
Subject: [PATCH 10/22] gnu: Add ghc-language-javascript.

* gnu/packages/haskell-web.scm (ghc-language-javascript): New variable.
---
 gnu/packages/haskell-web.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 1aa92a84c2..55351c4332 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1711,3 +1711,35 @@ and Mozilla here https://wiki.mozilla.org/DevTools/Features/SourceMap
 and here
 https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit")
     (license license:bsd-3)))
+
+(define-public ghc-language-javascript
+  (package
+    (name "ghc-language-javascript")
+    (version "0.7.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/language-javascript/language-javascript-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "15bpqpkjf2y3fk8wff9zlnkpsjc63bnbvhlkxrs9alj0bikq17nk"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-blaze-builder" ,ghc-blaze-builder)
+       ("ghc-utf8-string" ,ghc-utf8-string)))
+    (native-inputs
+     `(("ghc-alex" ,ghc-alex)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-happy" ,ghc-happy)
+       ("ghc-hspec" ,ghc-hspec)
+       ("ghc-utf8-light" ,ghc-utf8-light)))
+    (home-page
+     "https://github.com/erikd/language-javascript")
+    (synopsis "Parser for JavaScript")
+    (description
+     "Parses Javascript into an Abstract Syntax Tree (AST).  Initially intended
+as frontend to hjsmin.")
+    (license license:bsd-3)))
-- 
2.24.0


[-- Attachment #11: 0008-gnu-Add-ghc-protolude.patch --]
[-- Type: text/x-patch, Size: 1563 bytes --]

From c42ccd99a5af314475c89b3d45ac05c69e1e50ce Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:40:38 -0800
Subject: [PATCH 08/22] gnu: Add ghc-protolude.

* gnu/packages/haskell-xyz.scm (ghc-protolude): New variable.
---
 gnu/packages/haskell-xyz.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index f1c8ae1e89..ad29e62670 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -8863,6 +8863,32 @@ API.")
     (description "This library provides profunctors for Haskell.")
     (license license:bsd-3)))
 
+(define-public ghc-protolude
+  (package
+    (name "ghc-protolude")
+    (version "0.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/protolude/protolude-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0zzkyxz0vmcbncpid7gp72fpjj0fla3gqhlfkij5c5lg12skjgfj"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-async" ,ghc-async)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-mtl-compat" ,ghc-mtl-compat)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)))
+    (home-page "https://github.com/sdiehl/protolude")
+    (synopsis "Small prelude")
+    (description
+     "A sensible set of defaults for writing custom Preludes.")
+    (license license:expat)))
+
 (define-public ghc-psqueues
   (package
     (name "ghc-psqueues")
-- 
2.24.0


[-- Attachment #12: 0011-gnu-Add-ghc-bower-json.patch --]
[-- Type: text/x-patch, Size: 1929 bytes --]

From 5039c80969c4e848be0852a3356f6a10160aca6a Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:44:47 -0800
Subject: [PATCH 11/22] gnu: Add ghc-bower-json.

* gnu/packages/haskell-web.scm (ghc-bower-json): New variable.
---
 gnu/packages/haskell-web.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 55351c4332..cf6e7f4051 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1743,3 +1743,35 @@ https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/
      "Parses Javascript into an Abstract Syntax Tree (AST).  Initially intended
 as frontend to hjsmin.")
     (license license:bsd-3)))
+
+(define-public ghc-bower-json
+  (package
+    (name "ghc-bower-json")
+    (version "1.0.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/bower-json/bower-json-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0wvygg3rdbxzrmr61a9w6ddv9pfric85ih8hnxyk0ydzn7i59abs"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-aeson-better-errors" ,ghc-aeson-better-errors)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-transformers" ,ghc-transformers)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)))
+    (native-inputs
+     `(("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-hunit" ,ghc-tasty-hunit)))
+    (home-page "https://github.com/hdgarrood/bower-json")
+    (synopsis "Read bower.json from Haskell")
+    (description
+     "Bower is a package manager for the web (see http://bower.io).  This
+package provides a data type and ToJSON/FromJSON instances for Bower's package
+manifest file,bower.json.")
+    (license license:expat)))
-- 
2.24.0


[-- Attachment #13: 0012-gnu-Add-ghc-aeson-better-errors.patch --]
[-- Type: text/x-patch, Size: 2019 bytes --]

From aecf5f6e5591938b06a78fe152a06a124cabe36e Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:45:59 -0800
Subject: [PATCH 12/22] gnu: Add ghc-aeson-better-errors.

* gnu/packages/haskell-web.scm (ghc-aeson-better-errors): New variable.
---
 gnu/packages/haskell-web.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index cf6e7f4051..a242648d0c 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -971,6 +971,39 @@ the function @code{aesonQQ} that compile-time converts a string representation
 of a JSON value into a @code{Data.Aeson.Value}.")
     (license license:expat)))
 
+(define-public ghc-aeson-better-errors
+  (package
+    (name "ghc-aeson-better-errors")
+    (version "0.9.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/aeson-better-errors/aeson-better-errors-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "09vkyrhwak3bmpfsqcd2az8hfqqkxyhg468hv5avgisy0nzh3w38"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-dlist" ,ghc-dlist)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)
+       ("ghc-void" ,ghc-void)))
+    (home-page
+     "https://github.com/hdgarrood/aeson-better-errors")
+    (synopsis
+     "Better error messages when decoding JSON values in Haskell")
+    (description
+     "A small package which gives you the tools to build parsers to decode
+JSON values, and gives good error messages when parsing fails.  See also
+http://harry.garrood.me/blog/aeson-better-errors/.")
+    (license license:expat)))
+
 (define-public ghc-multipart
   (package
     (name "ghc-multipart")
-- 
2.24.0


[-- Attachment #14: 0013-gnu-Add-ghc-assoc.patch --]
[-- Type: text/x-patch, Size: 1620 bytes --]

From de89b3e76e751fb7e84cf47020aacc4485fe393f Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:44:49 -0800
Subject: [PATCH 13/22] gnu: Add ghc-assoc.

* gnu/packages/haskell-xyz.scm (ghc-assoc): New variable.
---
 gnu/packages/haskell-xyz.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index b57103d98b..405d2d6391 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -451,6 +451,34 @@ colored output using the ansi-terminal package.")
 style.")
     (license license:bsd-3)))
 
+(define-public ghc-assoc
+  (package
+    (name "ghc-assoc")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/assoc/assoc-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1m9n4vp190bvn2wcrd4ggfwa9pi93jp0zgx02mdgywn2zfidw020"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-bifunctors" ,ghc-bifunctors)
+       ("ghc-tagged" ,ghc-tagged)))
+    (home-page
+     "http://hackage.haskell.org/package/assoc")
+    (synopsis
+     "Swap and assoc: Symmetric and Semigroupy Bifunctors")
+    (description
+     "Provides generalisations of @code{swap :: (a,b) -> (b,a)} and
+@code{assoc :: ((a,b),c) -> (a,(b,c))} to @code{Bifunctor}s supporting
+similar operations (e.g. @code{Either}, @code{These}).")
+    (license license:bsd-3)))
+
 (define-public ghc-async
   (package
     (name "ghc-async")
-- 
2.24.0


[-- Attachment #15: 0014-gnu-Add-ghc-these.patch --]
[-- Type: text/x-patch, Size: 2699 bytes --]

From 997f09fe0ec4c7f0cd9e75c4383b0e42406c65e0 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:45:42 -0800
Subject: [PATCH 14/22] gnu: Add ghc-these.

* gnu/packages/haskell-xyz.scm (ghc-these): New variable.
---
 gnu/packages/haskell-xyz.scm | 57 ++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 405d2d6391..8c294d5dcd 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -11520,6 +11520,63 @@ and @code{Eq} instances.  These instances used to live in the haskell-src-meta
 package, and that's where the version number started.")
     (license license:bsd-3)))
 
+(define-public ghc-these
+  (package
+    (name "ghc-these")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/these/these-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1k0pi65g7cm9hzdw6my6bzz2zvddkmj1qs45ymqmi316bpiixk3r"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-assoc" ,ghc-assoc)
+       ("ghc-semigroupoids" ,ghc-semigroupoids)
+       ("ghc-quickcheck" ,ghc-quickcheck)))
+    (arguments
+     `(#:cabal-revision
+       ("1"
+        "0923r86fnmgpx0msm68aszirh2n19nn5bccgjxfh2146jw4z7w3z")))
+    (home-page
+     "https://github.com/isomorphism/these")
+    (synopsis "Either-or-both data type")
+    (description
+     "This package provides a data type @code{These a b} which can
+hold a value of either type or values of each type.  This is usually
+thought of as an \"inclusive or\" type (contrasting @code{Either a b} as
+\"exclusive or\") or as an \"outer join\" type (contrasting @code{(a, b)}
+as \"inner join\").
+
+@code{data These a b = This a | That b | These a b}
+
+Since version 1, this package was split into parts:
+
+@itemize
+@item
+https://hackage.haskell.org/package/semialign For @code{Align} and
+@code{Zip} type-classes.
+@item
+https://hackage.haskell.org/package/semialign-indexed For
+@code{SemialignWithIndex} class, providing @code{ialignWith} and
+@code{izipWith}
+@item
+https://hackage.haskell.org/package/these-lens For lens combinators.
+@item
+http://hackage.haskell.org/package/monad-chronicle For transformers
+variant of @code{These}.
+@end itemize")
+    (license license:bsd-3)))
+
 (define-public ghc-threads
   (package
     (name "ghc-threads")
-- 
2.24.0


[-- Attachment #16: 0015-gnu-Add-ghc-semialign.patch --]
[-- Type: text/x-patch, Size: 2208 bytes --]

From dcb42beea647dffa3e67a49f18b2e5f0c09b75d4 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:48:25 -0800
Subject: [PATCH 15/22] gnu: Add ghc-semialign.

* gnu/packages/haskell-xyz.scm (ghc-semialign): New variable.
---
 gnu/packages/haskell-xyz.scm | 40 ++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 8c294d5dcd..7c9be0c0b8 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -10036,6 +10036,46 @@ Haskell")
 a memory chunk that will be auto-scrubbed after it run out of scope.")
     (license license:bsd-3)))
 
+(define-public ghc-semialign
+  (package
+    (name "ghc-semialign")
+    (version "1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/semialign/semialign-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "004x0a80sqqdgvsyk4z0nasxpi6z3g1d8kgwj804bj9ka8dlc75m"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-these" ,ghc-these)
+       ("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-tagged" ,ghc-tagged)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-semigroupoids" ,ghc-semigroupoids)))
+    (arguments
+     `(#:cabal-revision
+       ("1"
+        "0qnqnyfng4kwy2h2anrcy5id2ijnawava3zcc5h5b8ri1y6ks6zi")))
+    (home-page
+     "https://github.com/isomorphism/these")
+    (synopsis
+     "Align and Zip type-classes from the common Semialign ancestor ")
+    (description
+     "The major use of @code{These} of this is provided by the
+@code{align} member of @code{Semialign} class, representing a
+generalized notion of \"zipping with padding\" that combines
+structures without truncating to the size of the smaller input.  It
+turns out that @code{zip} operation fits well the @code{Semialign}
+class, forming lattice-like structure.")
+    (license license:bsd-3)))
+
 (define-public ghc-semigroupoids
   (package
     (name "ghc-semigroupoids")
-- 
2.24.0


[-- Attachment #17: 0017-gnu-Add-ghc-clock-0.7.2.patch --]
[-- Type: text/x-patch, Size: 1044 bytes --]

From 0b46e0d5214b98106759fffddd1e33608623182c Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:53:33 -0800
Subject: [PATCH 17/22] gnu: Add ghc-clock@0.7.2.

* gnu/packages/purescript.scm (ghc-clock-0.7.2): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index ba90f9c23b..d430e62fcd 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -42,3 +42,18 @@
        (sha256
         (base32
          "138xpxdb7x62lpmgmb6b3v3vgdqqvqn4273jaap3mjmc2gla709y"))))))
+
+(define ghc-clock-0.7.2
+  (package
+    (inherit ghc-clock)
+    (version "0.7.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/"
+             "clock/"
+             "clock-" version ".tar.gz"))
+       (sha256
+        (base32
+         "07v91s20halsqjmziqb1sqjp2sjpckl9by7y28aaklwqi2bh2rl8"))))))
-- 
2.24.0


[-- Attachment #18: 0018-gnu-Add-ghc-glob-0.9.3.patch --]
[-- Type: text/x-patch, Size: 1063 bytes --]

From 6153e2c052ee89afb384938bd3215c836204f87c Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:54:12 -0800
Subject: [PATCH 18/22] gnu: Add ghc-glob@0.9.3.

* gnu/packages/purescript.scm (ghc-glob-0.9.3): New variable.
---
 gnu/packages/purescript.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index d430e62fcd..8bfbf5411d 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -57,3 +57,17 @@
        (sha256
         (base32
          "07v91s20halsqjmziqb1sqjp2sjpckl9by7y28aaklwqi2bh2rl8"))))))
+
+(define ghc-glob-0.9.3
+  (package
+    (inherit ghc-glob)
+    (version "0.9.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "Glob-" version "/"
+                           "Glob-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1s69lk3ic6zlkikhvb78ly9wl3g70a1h1m6ndhsca01pp8z8axrs"))))))
-- 
2.24.0


[-- Attachment #19: 0016-gnu-Add-ghc-happy-1.19.9.patch --]
[-- Type: text/x-patch, Size: 2779 bytes --]

From 7d630d055728307deea59ac80531a0eb45821885 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:52:48 -0800
Subject: [PATCH 16/22] gnu: Add ghc-happy@1.19.9

* gnu/packages/purescript.scm (ghc-happy-1.19.9): New file, New variable.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add purescript.scm.
---
 gnu/local.mk                |  1 +
 gnu/packages/purescript.scm | 44 +++++++++++++++++++++++++++++++++++++
 2 files changed, 45 insertions(+)
 create mode 100644 gnu/packages/purescript.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 32b2c141fa..c895b7711a 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -405,6 +405,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pretty-print.scm			\
   %D%/packages/protobuf.scm			\
   %D%/packages/pure.scm				\
+  %D$/packages/purescript.scm			\
   %D%/packages/pv.scm				\
   %D%/packages/python.scm			\
   %D%/packages/python-check.scm			\
diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
new file mode 100644
index 0000000000..ba90f9c23b
--- /dev/null
+++ b/gnu/packages/purescript.scm
@@ -0,0 +1,44 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages purescript)
+  #:use-module (gnu packages haskell-xyz)
+  #:use-module (gnu packages haskell-check)
+  #:use-module (gnu packages haskell-crypto)
+  #:use-module (gnu packages haskell-web)
+  #:use-module ((gnu packages python) #:select (python))
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix packages)
+  #:use-module (guix build-system haskell)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define ghc-happy-1.19.9
+  (package
+    (inherit ghc-happy)
+    (version "1.19.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/happy/happy-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "138xpxdb7x62lpmgmb6b3v3vgdqqvqn4273jaap3mjmc2gla709y"))))))
-- 
2.24.0


[-- Attachment #20: 0019-gnu-Add-ghc-ansi-terminal-0.8.2.patch --]
[-- Type: text/x-patch, Size: 1086 bytes --]

From dbd623bc76be921d75ea954a65a0cd1e05bf217e Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:54:51 -0800
Subject: [PATCH 19/22] gnu: Add ghc-ansi-terminal@0.8.2.

* gnu/packages/purescript.scm (ghc-ansi-terminal-0.8.2): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 8bfbf5411d..30abc05c2e 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -71,3 +71,18 @@
        (sha256
         (base32
          "1s69lk3ic6zlkikhvb78ly9wl3g70a1h1m6ndhsca01pp8z8axrs"))))))
+
+(define ghc-ansi-terminal-0.8.2
+  (package
+    (inherit ghc-ansi-terminal)
+    (version "0.8.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/ansi-terminal/ansi-terminal-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "147ss9wz03ww6ypbv6yh5vi1wfrfcaqm8r6nxh50vnp7254359wh"))))))
-- 
2.24.0


[-- Attachment #21: 0020-gnu-Add-ghc-lifted-async-0.10.0.4.patch --]
[-- Type: text/x-patch, Size: 1105 bytes --]

From 265a5190677eb13587fe2676338d8a60c713cb19 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:55:24 -0800
Subject: [PATCH 20/22] gnu: Add ghc-lifted-async@0.10.0.4

* gnu/packages/purescript.scm (ghc-lifted-async-0.10.0.4): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 30abc05c2e..10e69151df 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -86,3 +86,18 @@
        (sha256
         (base32
          "147ss9wz03ww6ypbv6yh5vi1wfrfcaqm8r6nxh50vnp7254359wh"))))))
+
+(define ghc-lifted-async-0.10.0.4
+  (package
+    (inherit ghc-lifted-async)
+    (version "0.10.0.4")
+    (source
+     (origin
+       (inherit (package-source ghc-lifted-async))
+       (uri (string-append
+             "mirror://hackage/package/lifted-async/lifted-async-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0cwl1d0wjpdk0v1l1qxiqiksmak950c8gx169c1q77cg0z18ijf9"))))))
-- 
2.24.0


[-- Attachment #22: 0021-gnu-Add-ghc-network-3.0.1.1.patch --]
[-- Type: text/x-patch, Size: 1068 bytes --]

From 80c70128d19b6709e9d54f0d430b3001b1475fbf Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:56:13 -0800
Subject: [PATCH 21/22] gnu: Add ghc-network@3.0.1.1

* gnu/packages/purescript.scm (ghc-network-3.0.1.1): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 10e69151df..8936e1bb87 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -101,3 +101,18 @@
        (sha256
         (base32
          "0cwl1d0wjpdk0v1l1qxiqiksmak950c8gx169c1q77cg0z18ijf9"))))))
+
+(define ghc-network-3.0.1.1
+  (package
+    (inherit ghc-network)
+    (version "3.0.1.1")
+    (source
+     (origin
+       (inherit (package-source ghc-network))
+       (uri (string-append
+             "mirror://hackage/package/network/network-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1xacvl5wf47cz61igb94zf961b9ks0yhr02myxgjf53clm70dg6j"))))))
-- 
2.24.0


[-- Attachment #23: 0022-gnu-Add-purescript.patch --]
[-- Type: text/x-patch, Size: 4633 bytes --]

From 9524b60aa99a0d1ca88d4ed2c8b54354942956fc Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 09:21:50 -0800
Subject: [PATCH 22/22] gnu: Add purescript.

* gnu/packages/purescript.scm (purescript): New variable.
---
 gnu/local.mk                |  2 +-
 gnu/packages/purescript.scm | 89 +++++++++++++++++++++++++++++++++++++
 2 files changed, 90 insertions(+), 1 deletion(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index c895b7711a..31b1ad1124 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -405,7 +405,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pretty-print.scm			\
   %D%/packages/protobuf.scm			\
   %D%/packages/pure.scm				\
-  %D$/packages/purescript.scm			\
+  %D%/packages/purescript.scm			\
   %D%/packages/pv.scm				\
   %D%/packages/python.scm			\
   %D%/packages/python-check.scm			\
diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 8936e1bb87..7b60aae097 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -116,3 +116,92 @@
        (sha256
         (base32
          "1xacvl5wf47cz61igb94zf961b9ks0yhr02myxgjf53clm70dg6j"))))))
+
+(define-public purescript
+  (package
+    (name "purescript")
+    (version "0.13.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/purescript/purescript-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0plqzlcfaw2ik2im7aq8yy1b1y88cnc8qd7wwaayndbdz060s9j4"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-glob" ,ghc-glob-0.9.3)
+       ("ghc-aeson" ,ghc-aeson)
+       ("ghc-aeson-better-errors" ,ghc-aeson-better-errors)
+       ("ghc-aeson-pretty" ,ghc-aeson-pretty)
+       ("ghc-ansi-terminal" ,ghc-ansi-terminal-0.8.2)
+       ("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-blaze-html" ,ghc-blaze-html)
+       ("ghc-bower-json" ,ghc-bower-json)
+       ("ghc-boxes" ,ghc-boxes)
+       ("ghc-cheapskate" ,ghc-cheapskate)
+       ("ghc-clock" ,ghc-clock-0.7.2)
+       ("ghc-cryptonite" ,ghc-cryptonite)
+       ("ghc-data-ordlist" ,ghc-data-ordlist)
+       ("ghc-dlist" ,ghc-dlist)
+       ("ghc-edit-distance" ,ghc-edit-distance)
+       ("ghc-file-embed" ,ghc-file-embed)
+       ("ghc-fsnotify" ,ghc-fsnotify)
+       ("ghc-happy" ,ghc-happy)
+       ("ghc-language-javascript" ,ghc-language-javascript)
+       ("ghc-lifted-async" ,ghc-lifted-async-0.10.0.4)
+       ("ghc-lifted-base" ,ghc-lifted-base)
+       ("ghc-memory" ,ghc-memory)
+       ("ghc-microlens-platform" ,ghc-microlens-platform)
+       ("ghc-monad-control" ,ghc-monad-control)
+       ("ghc-monad-logger" ,ghc-monad-logger)
+       ("ghc-network" ,ghc-network-3.0.1.1)
+       ("ghc-parallel" ,ghc-parallel)
+       ("ghc-pattern-arrows" ,ghc-pattern-arrows)
+       ("ghc-protolude" ,ghc-protolude)
+       ("ghc-regex-tdfa" ,ghc-regex-tdfa)
+       ("ghc-safe" ,ghc-safe)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-semialign" ,ghc-semialign)
+       ("ghc-semigroups" ,ghc-semigroups)
+       ("ghc-sourcemap" ,ghc-sourcemap)
+       ("ghc-split" ,ghc-split)
+       ("ghc-stringsearch" ,ghc-stringsearch)
+       ("ghc-syb" ,ghc-syb)
+       ("ghc-these" ,ghc-these)
+       ("ghc-transformers-base" ,ghc-transformers-base)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-utf8-string" ,ghc-utf8-string)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint)
+       ("ghc-http-types" ,ghc-http-types)
+       ("ghc-network" ,ghc-network)
+       ("ghc-optparse-applicative" ,ghc-optparse-applicative)
+       ("ghc-wai" ,ghc-wai)
+       ("ghc-wai-websockets" ,ghc-wai-websockets)
+       ("ghc-warp" ,ghc-warp)
+       ("ghc-websockets" ,ghc-websockets)
+       ("ghc-gitrev" ,ghc-gitrev)))
+    (native-inputs
+     `(("ghc-happy" ,ghc-happy-1.19.9)
+       ("ghc-hunit" ,ghc-hunit)
+       ("ghc-hspec" ,ghc-hspec)
+       ("hspec-discover" ,hspec-discover)
+       ("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-hspec" ,ghc-tasty-hspec)))
+    (arguments
+     `(;; Tests require npm
+       #:tests? #f
+       ;; Haddock fails
+       #:haddock? #f
+       #:configure-flags '("--flags=release")))
+    (home-page "http://www.purescript.org/")
+    (synopsis "Haskell inspired programming language compiling to JavaScript")
+    (description
+     "A small strongly, statically typed programming language with
+expressive types, inspired by Haskell and compiling to JavaScript.")
+    (license license:bsd-3)))
-- 
2.24.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#38596] [PATCH] Add PureScript
  2019-12-13 18:46 [bug#38596] [PATCH] Add PureScript John Soo
  2019-12-18 13:50 ` John Soo
@ 2019-12-18 14:30 ` John Soo
  2020-04-11 20:12 ` [bug#38596] [PATCH] gnu: " John Soo
  2 siblings, 0 replies; 9+ messages in thread
From: John Soo @ 2019-12-18 14:30 UTC (permalink / raw)
  To: 38596, Brett Gilio


[-- Attachment #1.1: Type: text/plain, Size: 82 bytes --]

Hi all,

I realized I made one final mistake. Here are the fixed patches.

- John

[-- Attachment #1.2: Type: text/html, Size: 186 bytes --]

[-- Attachment #2: 0002-gnu-Add-ghc-transformers.patch --]
[-- Type: text/x-patch, Size: 2398 bytes --]

From 11db97c6f480ba7b439f06dd2ba96ace3639efd8 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:04:13 -0800
Subject: [PATCH 02/22] gnu: Add ghc-transformers.

* gnu/packages/haskell-xyz.scm (ghc-transformers): New variable.
---
 gnu/packages/haskell-xyz.scm | 43 ++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 8d27d64cc0..64a27e8484 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -11644,6 +11644,49 @@ from a shell.  The @code{tldr} pages are a community effort to simplify the
 man pages with practical examples.")
     (license license:bsd-3)))
 
+(define-public ghc-transformers
+  (package
+    (name "ghc-transformers")
+    (version "0.5.6.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/transformers/transformers-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0v66j5k0xqk51pmca55wq192qyw2p43s2mgxlz4f95q2c1fpjs5n"))))
+    (build-system haskell-build-system)
+    (home-page
+     "http://hackage.haskell.org/package/transformers")
+    (synopsis "Concrete functor and monad transformers")
+    (description
+     "A portable library of functor and monad transformers, inspired
+by the paper \"Functional Programming with Overloading and
+Higher-Order Polymorphism\", by Mark P Jones, in Advanced School of
+Functional Programming, 1995
+http://web.cecs.pdx.edu/~mpj/pubs/springschool.html.
+
+This package contains:
+@itemize
+@item
+the monad transformer class (in \"Control.Monad.Trans.Class\")
+@item
+concrete functor and monad
+transformers, each with associated operations and functions to lift
+operations associated with other transformers.
+@end itemize
+The package can be used on its own in portable Haskell code, in which
+case operations need to be manually lifted through transformer
+stacks (see \"Control.Monad.Trans.Class\" for some
+examples).  Alternatively, it can be used with the non-portable monad
+classes in the mtl or monads-tf packages, which automatically lift
+operations introduced by monad transformers through other
+transformers.")
+    (license license:bsd-3)))
+
 (define-public ghc-transformers-base
   (package
     (name "ghc-transformers-base")
-- 
2.24.0


[-- Attachment #3: 0004-gnu-Add-ghc-websockets.patch --]
[-- Type: text/x-patch, Size: 2623 bytes --]

From 7864084a1a6271e7c52cc4fa588892e796d2e362 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:12:42 -0800
Subject: [PATCH 04/22] gnu: Add ghc-websockets.

* gnu/packages/haskell-web.scm (ghc-websockets): New variable.
---
 gnu/packages/haskell-web.scm | 53 ++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 5888e8542e..28cb6537fe 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -654,6 +654,59 @@ limitation, automatic pruning, energy saving and replay resistance.")
 a WAI handler, via the native Haskell TLS implementation.")
     (license license:expat)))
 
+(define-public ghc-websockets
+  (package
+    (name "ghc-websockets")
+    (version "0.12.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/websockets/websockets-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1vp3790w3hmr6v96314vdx74f7sg2c7hvnc93gafq0xhbxnr7nvx"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-base64-bytestring" ,ghc-base64-bytestring)
+       ("ghc-bytestring-builder" ,ghc-bytestring-builder)
+       ("ghc-case-insensitive" ,ghc-case-insensitive)
+       ("ghc-network" ,ghc-network)
+       ("ghc-random" ,ghc-random)
+       ("ghc-sha" ,ghc-sha)
+       ("ghc-streaming-commons" ,ghc-streaming-commons)
+       ("ghc-entropy" ,ghc-entropy)))
+    (native-inputs
+     `(("ghc-hunit" ,ghc-hunit)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-test-framework" ,ghc-test-framework)
+       ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
+       ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)))
+    (home-page "https://jaspervdj.be/websockets/")
+    (synopsis
+     "Way to write WebSocket-capable servers in Haskell")
+    (description
+     "This library allows you to write WebSocket-capable servers.
+
+An example server:
+https://github.com/jaspervdj/websockets/blob/master/example/server.lhs
+An example client:
+https://github.com/jaspervdj/websockets/blob/master/example/client.hs
+
+See also:
+@itemize
+@item
+The specification of the WebSocket protocol:
+http://www.whatwg.org/specs/web-socket-protocol/.
+@item
+The JavaScript API for dealing with WebSockets:
+http://www.w3.org/TR/websockets/
+@end itemize")
+    (license license:bsd-3)))
+
 (define-public ghc-xss-sanitize
   (package
     (name "ghc-xss-sanitize")
-- 
2.24.0


[-- Attachment #4: 0003-gnu-Add-ghc-tasty-hspec.patch --]
[-- Type: text/x-patch, Size: 1866 bytes --]

From b088cd27f98d47b39e9906b796ef4d3f3cdaba7d Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:06:52 -0800
Subject: [PATCH 03/22] gnu: Add ghc-tasty-hspec.

* gnu/packages/haskell-check.scm (ghc-tasty-hspec): New variable.
---
 gnu/packages/haskell-check.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index c6e89460ea..7942f2019a 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -215,6 +215,39 @@ with the @url{https://hackage.haskell.org/package/tasty, tasty testing
 framework}.")
     (license license:bsd-3)))
 
+(define-public ghc-tasty-hspec
+  (package
+    (name "ghc-tasty-hspec")
+    (version "1.1.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/tasty-hspec/tasty-hspec-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0i9kdzjpk750sa078jj3iyhp72k0177zk7vxl131r6dkyz09x27y"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-hspec" ,ghc-hspec)
+       ("ghc-hspec-core" ,ghc-hspec-core)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-smallcheck" ,ghc-tasty-smallcheck)
+       ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)))
+    (arguments
+     `(#:cabal-revision
+       ("4" "1yppwhs2r2rlwrzli9ccv5ldgl95h5p7pqhsr898r3das6daf6sk")))
+    (home-page
+     "https://github.com/mitchellwrosen/tasty-hspec")
+    (synopsis
+     "Hspec support for the Tasty test framework")
+    (description
+     "This package provides a Tasty provider for Hspec test suites.")
+    (license license:bsd-3)))
+
 (define-public ghc-tasty-hunit
   (package
     (name "ghc-tasty-hunit")
-- 
2.24.0


[-- Attachment #5: 0001-gnu-Add-ghc-utf8-light.patch --]
[-- Type: text/x-patch, Size: 1456 bytes --]

From c86d47d54781b83f736622edf17603ee2671f4a6 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:00:31 -0800
Subject: [PATCH 01/22] gnu: Add ghc-utf8-light.

* gnu/packages/haskell-xyz.scm (ghc-utf8-light): New variable.
---
 gnu/packages/haskell-xyz.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 773164ea0a..8d27d64cc0 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -12188,6 +12188,27 @@ a style ready for qualification, that is, you should import them by
 parser that uses ByteStrings for parsing and representing the URI data.")
     (license license:bsd-3)))
 
+(define-public ghc-utf8-light
+  (package
+    (name "ghc-utf8-light")
+    (version "0.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/utf8-light/utf8-light-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0rwyc5z331yfnm4hpx0sph6i1zvkd1z10vvglhnp0vc9wy644k0q"))))
+    (build-system haskell-build-system)
+    (home-page
+     "http://hackage.haskell.org/package/utf8-light")
+    (synopsis "Lightweight unicode support for Haskell")
+    (description "Lightweight UTF8 handling.")
+    (license license:bsd-3)))
+
 (define-public ghc-utf8-string
   (package
     (name "ghc-utf8-string")
-- 
2.24.0


[-- Attachment #6: 0005-gnu-Add-ghc-wai-websockets.patch --]
[-- Type: text/x-patch, Size: 1735 bytes --]

From 91d25803c4a707e69336c3573b203de04c9f0991 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:37:29 -0800
Subject: [PATCH 05/22] gnu: Add ghc-wai-websockets.

* gnu/packages/haskell-web.scm (ghc-wai-websockets): New variable.
---
 gnu/packages/haskell-web.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 28cb6537fe..93e8b17cf1 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -707,6 +707,36 @@ http://www.w3.org/TR/websockets/
 @end itemize")
     (license license:bsd-3)))
 
+(define-public ghc-wai-websockets
+  (package
+    (name "ghc-wai-websockets")
+    (version "3.0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/wai-websockets/wai-websockets-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0b2xmdsrsqpssyib53wbr6r8hf75789ndyyanv37sv99iyqcwz4i"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-wai" ,ghc-wai)
+       ("ghc-case-insensitive" ,ghc-case-insensitive)
+       ("ghc-network" ,ghc-network)
+       ("ghc-websockets" ,ghc-websockets)
+       ("ghc-http-types" ,ghc-http-types)))
+    (arguments
+     `(#:configure-flags '("--flags=-example")))
+    (home-page "https://github.com/yesodweb/wai")
+    (synopsis
+     "Provide a bridge between WAI and the websockets package")
+    (description
+     "Use websockets with WAI applications, primarily those hosted via Warp.")
+    (license license:expat)))
+
 (define-public ghc-xss-sanitize
   (package
     (name "ghc-xss-sanitize")
-- 
2.24.0


[-- Attachment #7: 0007-gnu-Add-ghc-mtl-compat.patch --]
[-- Type: text/x-patch, Size: 2215 bytes --]

From 2ffb8346f135c791c0932e84dcc87a61b3d5481a Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 09:32:28 -0800
Subject: [PATCH 07/22] gnu: Add ghc-mtl-compat.

* gnu/packages/haskell-xyz.scm (ghc-mtl-compat): New variable.
---
 gnu/packages/haskell-xyz.scm | 39 ++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 64a27e8484..f1c8ae1e89 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -7505,6 +7505,45 @@ semi-direct products, \"deletable\" monoids, \"split\" monoids, and
 \"cut\" monoids.")
     (license license:bsd-3)))
 
+(define-public ghc-mtl-compat
+  (package
+    (name "ghc-mtl-compat")
+    (version "0.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/mtl-compat/mtl-compat-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "17iszr5yb4f17g8mq6i74hsamii8z6m2qfsmgzs78mhiwa7kjm8r"))))
+    (build-system haskell-build-system)
+    (arguments
+     `(#:tests? #f
+       #:haddock? #f))
+    (home-page
+     "https://github.com/haskell-compat/mtl-compat")
+    (synopsis
+     "Backported Control.Monad.Except module from mtl")
+    (description
+     "This package backports the \"Control.Monad.Except\" module from
+mtl (if using mtl-2.2.0.1 or earlier), which reexports the ExceptT
+monad transformer and the MonadError class.
+
+This package should only be used if there is a need to use the
+Control.Monad.Except module specifically.  If you just want the mtl
+class instances for ExceptT, use transformers-compat instead, since
+mtl-compat does nothing but reexport the instances from that package.
+
+Note that unlike how mtl-2.2 or later works, the
+\"Control.Monad.Except\" module defined in this package exports all of
+ExceptT's monad class instances.  Therefore, you may have to declare
+import Control.Monad.Except () at the top of your file to get all of
+the ExceptT instances in scope.")
+    (license license:bsd-3)))
+
 (define-public ghc-murmur-hash
   (package
     (name "ghc-murmur-hash")
-- 
2.24.0


[-- Attachment #8: 0008-gnu-Add-ghc-protolude.patch --]
[-- Type: text/x-patch, Size: 1563 bytes --]

From c42ccd99a5af314475c89b3d45ac05c69e1e50ce Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:40:38 -0800
Subject: [PATCH 08/22] gnu: Add ghc-protolude.

* gnu/packages/haskell-xyz.scm (ghc-protolude): New variable.
---
 gnu/packages/haskell-xyz.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index f1c8ae1e89..ad29e62670 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -8863,6 +8863,32 @@ API.")
     (description "This library provides profunctors for Haskell.")
     (license license:bsd-3)))
 
+(define-public ghc-protolude
+  (package
+    (name "ghc-protolude")
+    (version "0.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/protolude/protolude-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0zzkyxz0vmcbncpid7gp72fpjj0fla3gqhlfkij5c5lg12skjgfj"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-async" ,ghc-async)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-mtl-compat" ,ghc-mtl-compat)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)))
+    (home-page "https://github.com/sdiehl/protolude")
+    (synopsis "Small prelude")
+    (description
+     "A sensible set of defaults for writing custom Preludes.")
+    (license license:expat)))
+
 (define-public ghc-psqueues
   (package
     (name "ghc-psqueues")
-- 
2.24.0


[-- Attachment #9: 0009-gnu-Add-ghc-pattern-arrows.patch --]
[-- Type: text/x-patch, Size: 1549 bytes --]

From 7fa28aeb1c55d793e2cb3e0bd9c695af3323e8ae Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:41:40 -0800
Subject: [PATCH 09/22] gnu: Add ghc-pattern-arrows.

* gnu/packages/haskell-xyz.scm (ghc-pattern-arrows): New variable.
---
 gnu/packages/haskell-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index ad29e62670..b57103d98b 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -8499,6 +8499,29 @@ of two versions of a source file.  It provides a good balance between
 performance, nice output for humans, and simplicity of implementation.")
     (license license:bsd-3)))
 
+(define-public ghc-pattern-arrows
+  (package
+    (name "ghc-pattern-arrows")
+    (version "0.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/pattern-arrows/pattern-arrows-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "13q7bj19hd60rnjfc05wxlyck8llxy11z3mns8kxg197wxrdkhkg"))))
+    (build-system haskell-build-system)
+    (home-page
+     "https://blog.functorial.com/posts/2013-10-27-Pretty-Printing-Arrows.html")
+    (synopsis "Arrows for Pretty Printing")
+    (description
+     "A library for generating concise pretty printers based on precedence
+rules.")
+    (license license:expat)))
+
 (define-public ghc-pcre-light
   (package
     (name "ghc-pcre-light")
-- 
2.24.0


[-- Attachment #10: 0006-gnu-Add-ghc-sourcemap.patch --]
[-- Type: text/x-patch, Size: 1858 bytes --]

From b1aff2f62ee59d037e0b4ef2a0e7f44215b95134 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:39:09 -0800
Subject: [PATCH 06/22] gnu: Add ghc-sourcemap.

gnu/pacakges/haskell-web.scm (ghc-sourcemap): New variable.
---
 gnu/packages/haskell-web.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 93e8b17cf1..1aa92a84c2 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1678,3 +1678,36 @@ cookies, serving files, and more.")
     (description
      "Haskell library which exposes zero-copy sendfile functionality in a portable way.")
     (license license:bsd-3)))
+
+(define-public ghc-sourcemap
+  (package
+    (name "ghc-sourcemap")
+    (version "0.1.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/sourcemap/sourcemap-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0ynfm44ym8y592wnzdwa0d05dbkffyyg5sm26y5ylzpynk64r85r"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-utf8-string" ,ghc-utf8-string)))
+    (arguments
+     `(#:tests? #f))
+    (home-page
+     "http://hackage.haskell.org/package/sourcemap")
+    (synopsis
+     "Implementation of source maps as proposed by Google and Mozilla")
+    (description
+     "Implementation of source maps, revision 3, proposed by Google
+and Mozilla here https://wiki.mozilla.org/DevTools/Features/SourceMap
+and here
+https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit")
+    (license license:bsd-3)))
-- 
2.24.0


[-- Attachment #11: 0010-gnu-Add-ghc-language-javascript.patch --]
[-- Type: text/x-patch, Size: 1842 bytes --]

From 74cec1d6ab428759d8e540df38071caa66af27df Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:43:44 -0800
Subject: [PATCH 10/22] gnu: Add ghc-language-javascript.

* gnu/packages/haskell-web.scm (ghc-language-javascript): New variable.
---
 gnu/packages/haskell-web.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 1aa92a84c2..55351c4332 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1711,3 +1711,35 @@ and Mozilla here https://wiki.mozilla.org/DevTools/Features/SourceMap
 and here
 https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit")
     (license license:bsd-3)))
+
+(define-public ghc-language-javascript
+  (package
+    (name "ghc-language-javascript")
+    (version "0.7.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/language-javascript/language-javascript-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "15bpqpkjf2y3fk8wff9zlnkpsjc63bnbvhlkxrs9alj0bikq17nk"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-blaze-builder" ,ghc-blaze-builder)
+       ("ghc-utf8-string" ,ghc-utf8-string)))
+    (native-inputs
+     `(("ghc-alex" ,ghc-alex)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-happy" ,ghc-happy)
+       ("ghc-hspec" ,ghc-hspec)
+       ("ghc-utf8-light" ,ghc-utf8-light)))
+    (home-page
+     "https://github.com/erikd/language-javascript")
+    (synopsis "Parser for JavaScript")
+    (description
+     "Parses Javascript into an Abstract Syntax Tree (AST).  Initially intended
+as frontend to hjsmin.")
+    (license license:bsd-3)))
-- 
2.24.0


[-- Attachment #12: 0013-gnu-Add-ghc-assoc.patch --]
[-- Type: text/x-patch, Size: 1620 bytes --]

From de89b3e76e751fb7e84cf47020aacc4485fe393f Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:44:49 -0800
Subject: [PATCH 13/22] gnu: Add ghc-assoc.

* gnu/packages/haskell-xyz.scm (ghc-assoc): New variable.
---
 gnu/packages/haskell-xyz.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index b57103d98b..405d2d6391 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -451,6 +451,34 @@ colored output using the ansi-terminal package.")
 style.")
     (license license:bsd-3)))
 
+(define-public ghc-assoc
+  (package
+    (name "ghc-assoc")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/assoc/assoc-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1m9n4vp190bvn2wcrd4ggfwa9pi93jp0zgx02mdgywn2zfidw020"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-bifunctors" ,ghc-bifunctors)
+       ("ghc-tagged" ,ghc-tagged)))
+    (home-page
+     "http://hackage.haskell.org/package/assoc")
+    (synopsis
+     "Swap and assoc: Symmetric and Semigroupy Bifunctors")
+    (description
+     "Provides generalisations of @code{swap :: (a,b) -> (b,a)} and
+@code{assoc :: ((a,b),c) -> (a,(b,c))} to @code{Bifunctor}s supporting
+similar operations (e.g. @code{Either}, @code{These}).")
+    (license license:bsd-3)))
+
 (define-public ghc-async
   (package
     (name "ghc-async")
-- 
2.24.0


[-- Attachment #13: 0011-gnu-Add-ghc-bower-json.patch --]
[-- Type: text/x-patch, Size: 1929 bytes --]

From 5039c80969c4e848be0852a3356f6a10160aca6a Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:44:47 -0800
Subject: [PATCH 11/22] gnu: Add ghc-bower-json.

* gnu/packages/haskell-web.scm (ghc-bower-json): New variable.
---
 gnu/packages/haskell-web.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 55351c4332..cf6e7f4051 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1743,3 +1743,35 @@ https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/
      "Parses Javascript into an Abstract Syntax Tree (AST).  Initially intended
 as frontend to hjsmin.")
     (license license:bsd-3)))
+
+(define-public ghc-bower-json
+  (package
+    (name "ghc-bower-json")
+    (version "1.0.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/bower-json/bower-json-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0wvygg3rdbxzrmr61a9w6ddv9pfric85ih8hnxyk0ydzn7i59abs"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-aeson-better-errors" ,ghc-aeson-better-errors)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-transformers" ,ghc-transformers)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)))
+    (native-inputs
+     `(("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-hunit" ,ghc-tasty-hunit)))
+    (home-page "https://github.com/hdgarrood/bower-json")
+    (synopsis "Read bower.json from Haskell")
+    (description
+     "Bower is a package manager for the web (see http://bower.io).  This
+package provides a data type and ToJSON/FromJSON instances for Bower's package
+manifest file,bower.json.")
+    (license license:expat)))
-- 
2.24.0


[-- Attachment #14: 0012-gnu-Add-ghc-aeson-better-errors.patch --]
[-- Type: text/x-patch, Size: 2019 bytes --]

From aecf5f6e5591938b06a78fe152a06a124cabe36e Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:45:59 -0800
Subject: [PATCH 12/22] gnu: Add ghc-aeson-better-errors.

* gnu/packages/haskell-web.scm (ghc-aeson-better-errors): New variable.
---
 gnu/packages/haskell-web.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index cf6e7f4051..a242648d0c 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -971,6 +971,39 @@ the function @code{aesonQQ} that compile-time converts a string representation
 of a JSON value into a @code{Data.Aeson.Value}.")
     (license license:expat)))
 
+(define-public ghc-aeson-better-errors
+  (package
+    (name "ghc-aeson-better-errors")
+    (version "0.9.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/aeson-better-errors/aeson-better-errors-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "09vkyrhwak3bmpfsqcd2az8hfqqkxyhg468hv5avgisy0nzh3w38"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-dlist" ,ghc-dlist)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)
+       ("ghc-void" ,ghc-void)))
+    (home-page
+     "https://github.com/hdgarrood/aeson-better-errors")
+    (synopsis
+     "Better error messages when decoding JSON values in Haskell")
+    (description
+     "A small package which gives you the tools to build parsers to decode
+JSON values, and gives good error messages when parsing fails.  See also
+http://harry.garrood.me/blog/aeson-better-errors/.")
+    (license license:expat)))
+
 (define-public ghc-multipart
   (package
     (name "ghc-multipart")
-- 
2.24.0


[-- Attachment #15: 0015-gnu-Add-ghc-semialign.patch --]
[-- Type: text/x-patch, Size: 2208 bytes --]

From dcb42beea647dffa3e67a49f18b2e5f0c09b75d4 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:48:25 -0800
Subject: [PATCH 15/22] gnu: Add ghc-semialign.

* gnu/packages/haskell-xyz.scm (ghc-semialign): New variable.
---
 gnu/packages/haskell-xyz.scm | 40 ++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 8c294d5dcd..7c9be0c0b8 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -10036,6 +10036,46 @@ Haskell")
 a memory chunk that will be auto-scrubbed after it run out of scope.")
     (license license:bsd-3)))
 
+(define-public ghc-semialign
+  (package
+    (name "ghc-semialign")
+    (version "1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/semialign/semialign-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "004x0a80sqqdgvsyk4z0nasxpi6z3g1d8kgwj804bj9ka8dlc75m"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-these" ,ghc-these)
+       ("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-tagged" ,ghc-tagged)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-semigroupoids" ,ghc-semigroupoids)))
+    (arguments
+     `(#:cabal-revision
+       ("1"
+        "0qnqnyfng4kwy2h2anrcy5id2ijnawava3zcc5h5b8ri1y6ks6zi")))
+    (home-page
+     "https://github.com/isomorphism/these")
+    (synopsis
+     "Align and Zip type-classes from the common Semialign ancestor ")
+    (description
+     "The major use of @code{These} of this is provided by the
+@code{align} member of @code{Semialign} class, representing a
+generalized notion of \"zipping with padding\" that combines
+structures without truncating to the size of the smaller input.  It
+turns out that @code{zip} operation fits well the @code{Semialign}
+class, forming lattice-like structure.")
+    (license license:bsd-3)))
+
 (define-public ghc-semigroupoids
   (package
     (name "ghc-semigroupoids")
-- 
2.24.0


[-- Attachment #16: 0014-gnu-Add-ghc-these.patch --]
[-- Type: text/x-patch, Size: 2699 bytes --]

From 997f09fe0ec4c7f0cd9e75c4383b0e42406c65e0 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:45:42 -0800
Subject: [PATCH 14/22] gnu: Add ghc-these.

* gnu/packages/haskell-xyz.scm (ghc-these): New variable.
---
 gnu/packages/haskell-xyz.scm | 57 ++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 405d2d6391..8c294d5dcd 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -11520,6 +11520,63 @@ and @code{Eq} instances.  These instances used to live in the haskell-src-meta
 package, and that's where the version number started.")
     (license license:bsd-3)))
 
+(define-public ghc-these
+  (package
+    (name "ghc-these")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/these/these-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1k0pi65g7cm9hzdw6my6bzz2zvddkmj1qs45ymqmi316bpiixk3r"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-assoc" ,ghc-assoc)
+       ("ghc-semigroupoids" ,ghc-semigroupoids)
+       ("ghc-quickcheck" ,ghc-quickcheck)))
+    (arguments
+     `(#:cabal-revision
+       ("1"
+        "0923r86fnmgpx0msm68aszirh2n19nn5bccgjxfh2146jw4z7w3z")))
+    (home-page
+     "https://github.com/isomorphism/these")
+    (synopsis "Either-or-both data type")
+    (description
+     "This package provides a data type @code{These a b} which can
+hold a value of either type or values of each type.  This is usually
+thought of as an \"inclusive or\" type (contrasting @code{Either a b} as
+\"exclusive or\") or as an \"outer join\" type (contrasting @code{(a, b)}
+as \"inner join\").
+
+@code{data These a b = This a | That b | These a b}
+
+Since version 1, this package was split into parts:
+
+@itemize
+@item
+https://hackage.haskell.org/package/semialign For @code{Align} and
+@code{Zip} type-classes.
+@item
+https://hackage.haskell.org/package/semialign-indexed For
+@code{SemialignWithIndex} class, providing @code{ialignWith} and
+@code{izipWith}
+@item
+https://hackage.haskell.org/package/these-lens For lens combinators.
+@item
+http://hackage.haskell.org/package/monad-chronicle For transformers
+variant of @code{These}.
+@end itemize")
+    (license license:bsd-3)))
+
 (define-public ghc-threads
   (package
     (name "ghc-threads")
-- 
2.24.0


[-- Attachment #17: 0016-gnu-Add-ghc-happy-1.19.9.patch --]
[-- Type: text/x-patch, Size: 2779 bytes --]

From 6eb15e9387e9121866307a9be2de3fd6297110eb Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:52:48 -0800
Subject: [PATCH 16/22] gnu: Add ghc-happy@1.19.9

* gnu/packages/purescript.scm (ghc-happy-1.19.9): New file, New variable.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add purescript.scm.
---
 gnu/local.mk                |  1 +
 gnu/packages/purescript.scm | 44 +++++++++++++++++++++++++++++++++++++
 2 files changed, 45 insertions(+)
 create mode 100644 gnu/packages/purescript.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 32b2c141fa..31b1ad1124 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -405,6 +405,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pretty-print.scm			\
   %D%/packages/protobuf.scm			\
   %D%/packages/pure.scm				\
+  %D%/packages/purescript.scm			\
   %D%/packages/pv.scm				\
   %D%/packages/python.scm			\
   %D%/packages/python-check.scm			\
diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
new file mode 100644
index 0000000000..ba90f9c23b
--- /dev/null
+++ b/gnu/packages/purescript.scm
@@ -0,0 +1,44 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages purescript)
+  #:use-module (gnu packages haskell-xyz)
+  #:use-module (gnu packages haskell-check)
+  #:use-module (gnu packages haskell-crypto)
+  #:use-module (gnu packages haskell-web)
+  #:use-module ((gnu packages python) #:select (python))
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix packages)
+  #:use-module (guix build-system haskell)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define ghc-happy-1.19.9
+  (package
+    (inherit ghc-happy)
+    (version "1.19.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/happy/happy-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "138xpxdb7x62lpmgmb6b3v3vgdqqvqn4273jaap3mjmc2gla709y"))))))
-- 
2.24.0


[-- Attachment #18: 0019-gnu-Add-ghc-ansi-terminal-0.8.2.patch --]
[-- Type: text/x-patch, Size: 1086 bytes --]

From 6bfa90aa665667bc655e44b9d27295ad98bdb10a Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:54:51 -0800
Subject: [PATCH 19/22] gnu: Add ghc-ansi-terminal@0.8.2.

* gnu/packages/purescript.scm (ghc-ansi-terminal-0.8.2): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 8bfbf5411d..30abc05c2e 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -71,3 +71,18 @@
        (sha256
         (base32
          "1s69lk3ic6zlkikhvb78ly9wl3g70a1h1m6ndhsca01pp8z8axrs"))))))
+
+(define ghc-ansi-terminal-0.8.2
+  (package
+    (inherit ghc-ansi-terminal)
+    (version "0.8.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/ansi-terminal/ansi-terminal-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "147ss9wz03ww6ypbv6yh5vi1wfrfcaqm8r6nxh50vnp7254359wh"))))))
-- 
2.24.0


[-- Attachment #19: 0017-gnu-Add-ghc-clock-0.7.2.patch --]
[-- Type: text/x-patch, Size: 1044 bytes --]

From 75f3f495343820f7e6778b0383c7e26a2d5982ea Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:53:33 -0800
Subject: [PATCH 17/22] gnu: Add ghc-clock@0.7.2.

* gnu/packages/purescript.scm (ghc-clock-0.7.2): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index ba90f9c23b..d430e62fcd 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -42,3 +42,18 @@
        (sha256
         (base32
          "138xpxdb7x62lpmgmb6b3v3vgdqqvqn4273jaap3mjmc2gla709y"))))))
+
+(define ghc-clock-0.7.2
+  (package
+    (inherit ghc-clock)
+    (version "0.7.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/"
+             "clock/"
+             "clock-" version ".tar.gz"))
+       (sha256
+        (base32
+         "07v91s20halsqjmziqb1sqjp2sjpckl9by7y28aaklwqi2bh2rl8"))))))
-- 
2.24.0


[-- Attachment #20: 0020-gnu-Add-ghc-lifted-async-0.10.0.4.patch --]
[-- Type: text/x-patch, Size: 1105 bytes --]

From f751a4d9e755e404380255ae3b831c2a0d083242 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:55:24 -0800
Subject: [PATCH 20/22] gnu: Add ghc-lifted-async@0.10.0.4

* gnu/packages/purescript.scm (ghc-lifted-async-0.10.0.4): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 30abc05c2e..10e69151df 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -86,3 +86,18 @@
        (sha256
         (base32
          "147ss9wz03ww6ypbv6yh5vi1wfrfcaqm8r6nxh50vnp7254359wh"))))))
+
+(define ghc-lifted-async-0.10.0.4
+  (package
+    (inherit ghc-lifted-async)
+    (version "0.10.0.4")
+    (source
+     (origin
+       (inherit (package-source ghc-lifted-async))
+       (uri (string-append
+             "mirror://hackage/package/lifted-async/lifted-async-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0cwl1d0wjpdk0v1l1qxiqiksmak950c8gx169c1q77cg0z18ijf9"))))))
-- 
2.24.0


[-- Attachment #21: 0018-gnu-Add-ghc-glob-0.9.3.patch --]
[-- Type: text/x-patch, Size: 1063 bytes --]

From 7d3d67b40e43edc55e1c7992469b918047cc1452 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:54:12 -0800
Subject: [PATCH 18/22] gnu: Add ghc-glob@0.9.3.

* gnu/packages/purescript.scm (ghc-glob-0.9.3): New variable.
---
 gnu/packages/purescript.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index d430e62fcd..8bfbf5411d 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -57,3 +57,17 @@
        (sha256
         (base32
          "07v91s20halsqjmziqb1sqjp2sjpckl9by7y28aaklwqi2bh2rl8"))))))
+
+(define ghc-glob-0.9.3
+  (package
+    (inherit ghc-glob)
+    (version "0.9.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "Glob-" version "/"
+                           "Glob-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1s69lk3ic6zlkikhvb78ly9wl3g70a1h1m6ndhsca01pp8z8axrs"))))))
-- 
2.24.0


[-- Attachment #22: 0021-gnu-Add-ghc-network-3.0.1.1.patch --]
[-- Type: text/x-patch, Size: 1068 bytes --]

From 5c92aeced30573216630002e4a3db6aefd102c03 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:56:13 -0800
Subject: [PATCH 21/22] gnu: Add ghc-network@3.0.1.1

* gnu/packages/purescript.scm (ghc-network-3.0.1.1): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 10e69151df..8936e1bb87 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -101,3 +101,18 @@
        (sha256
         (base32
          "0cwl1d0wjpdk0v1l1qxiqiksmak950c8gx169c1q77cg0z18ijf9"))))))
+
+(define ghc-network-3.0.1.1
+  (package
+    (inherit ghc-network)
+    (version "3.0.1.1")
+    (source
+     (origin
+       (inherit (package-source ghc-network))
+       (uri (string-append
+             "mirror://hackage/package/network/network-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1xacvl5wf47cz61igb94zf961b9ks0yhr02myxgjf53clm70dg6j"))))))
-- 
2.24.0


[-- Attachment #23: 0022-gnu-Add-purescript.patch --]
[-- Type: text/x-patch, Size: 4153 bytes --]

From 7fce224effe6947e2cbf5520c9556d41eaa58080 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 09:21:50 -0800
Subject: [PATCH 22/22] gnu: Add purescript.

* gnu/packages/purescript.scm (purescript): New variable.
---
 gnu/packages/purescript.scm | 89 +++++++++++++++++++++++++++++++++++++
 1 file changed, 89 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 8936e1bb87..7b60aae097 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -116,3 +116,92 @@
        (sha256
         (base32
          "1xacvl5wf47cz61igb94zf961b9ks0yhr02myxgjf53clm70dg6j"))))))
+
+(define-public purescript
+  (package
+    (name "purescript")
+    (version "0.13.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/purescript/purescript-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0plqzlcfaw2ik2im7aq8yy1b1y88cnc8qd7wwaayndbdz060s9j4"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-glob" ,ghc-glob-0.9.3)
+       ("ghc-aeson" ,ghc-aeson)
+       ("ghc-aeson-better-errors" ,ghc-aeson-better-errors)
+       ("ghc-aeson-pretty" ,ghc-aeson-pretty)
+       ("ghc-ansi-terminal" ,ghc-ansi-terminal-0.8.2)
+       ("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-blaze-html" ,ghc-blaze-html)
+       ("ghc-bower-json" ,ghc-bower-json)
+       ("ghc-boxes" ,ghc-boxes)
+       ("ghc-cheapskate" ,ghc-cheapskate)
+       ("ghc-clock" ,ghc-clock-0.7.2)
+       ("ghc-cryptonite" ,ghc-cryptonite)
+       ("ghc-data-ordlist" ,ghc-data-ordlist)
+       ("ghc-dlist" ,ghc-dlist)
+       ("ghc-edit-distance" ,ghc-edit-distance)
+       ("ghc-file-embed" ,ghc-file-embed)
+       ("ghc-fsnotify" ,ghc-fsnotify)
+       ("ghc-happy" ,ghc-happy)
+       ("ghc-language-javascript" ,ghc-language-javascript)
+       ("ghc-lifted-async" ,ghc-lifted-async-0.10.0.4)
+       ("ghc-lifted-base" ,ghc-lifted-base)
+       ("ghc-memory" ,ghc-memory)
+       ("ghc-microlens-platform" ,ghc-microlens-platform)
+       ("ghc-monad-control" ,ghc-monad-control)
+       ("ghc-monad-logger" ,ghc-monad-logger)
+       ("ghc-network" ,ghc-network-3.0.1.1)
+       ("ghc-parallel" ,ghc-parallel)
+       ("ghc-pattern-arrows" ,ghc-pattern-arrows)
+       ("ghc-protolude" ,ghc-protolude)
+       ("ghc-regex-tdfa" ,ghc-regex-tdfa)
+       ("ghc-safe" ,ghc-safe)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-semialign" ,ghc-semialign)
+       ("ghc-semigroups" ,ghc-semigroups)
+       ("ghc-sourcemap" ,ghc-sourcemap)
+       ("ghc-split" ,ghc-split)
+       ("ghc-stringsearch" ,ghc-stringsearch)
+       ("ghc-syb" ,ghc-syb)
+       ("ghc-these" ,ghc-these)
+       ("ghc-transformers-base" ,ghc-transformers-base)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-utf8-string" ,ghc-utf8-string)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint)
+       ("ghc-http-types" ,ghc-http-types)
+       ("ghc-network" ,ghc-network)
+       ("ghc-optparse-applicative" ,ghc-optparse-applicative)
+       ("ghc-wai" ,ghc-wai)
+       ("ghc-wai-websockets" ,ghc-wai-websockets)
+       ("ghc-warp" ,ghc-warp)
+       ("ghc-websockets" ,ghc-websockets)
+       ("ghc-gitrev" ,ghc-gitrev)))
+    (native-inputs
+     `(("ghc-happy" ,ghc-happy-1.19.9)
+       ("ghc-hunit" ,ghc-hunit)
+       ("ghc-hspec" ,ghc-hspec)
+       ("hspec-discover" ,hspec-discover)
+       ("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-hspec" ,ghc-tasty-hspec)))
+    (arguments
+     `(;; Tests require npm
+       #:tests? #f
+       ;; Haddock fails
+       #:haddock? #f
+       #:configure-flags '("--flags=release")))
+    (home-page "http://www.purescript.org/")
+    (synopsis "Haskell inspired programming language compiling to JavaScript")
+    (description
+     "A small strongly, statically typed programming language with
+expressive types, inspired by Haskell and compiling to JavaScript.")
+    (license license:bsd-3)))
-- 
2.24.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#38596] [PATCH] gnu: Add PureScript.
  2019-12-13 18:46 [bug#38596] [PATCH] Add PureScript John Soo
  2019-12-18 13:50 ` John Soo
  2019-12-18 14:30 ` John Soo
@ 2020-04-11 20:12 ` John Soo
  2020-04-17 19:21   ` Christopher Baines
  2 siblings, 1 reply; 9+ messages in thread
From: John Soo @ 2020-04-11 20:12 UTC (permalink / raw)
  To: 38596

[-- Attachment #1: Type: text/plain, Size: 61 bytes --]

Hi Guix,

I rebased these patches on master.

Thanks!

John


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-ghc-utf8-light.patch --]
[-- Type: text/x-patch, Size: 1456 bytes --]

From fddfd4fa488f9e02ca2bfcafedbb1c068c9243fc Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:00:31 -0800
Subject: [PATCH 01/22] gnu: Add ghc-utf8-light.

* gnu/packages/haskell-xyz.scm (ghc-utf8-light): New variable.
---
 gnu/packages/haskell-xyz.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index d22a08e7fb..0eb43b70e1 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -12671,6 +12671,27 @@ a style ready for qualification, that is, you should import them by
 parser that uses ByteStrings for parsing and representing the URI data.")
     (license license:bsd-3)))
 
+(define-public ghc-utf8-light
+  (package
+    (name "ghc-utf8-light")
+    (version "0.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/utf8-light/utf8-light-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0rwyc5z331yfnm4hpx0sph6i1zvkd1z10vvglhnp0vc9wy644k0q"))))
+    (build-system haskell-build-system)
+    (home-page
+     "http://hackage.haskell.org/package/utf8-light")
+    (synopsis "Lightweight unicode support for Haskell")
+    (description "Lightweight UTF8 handling.")
+    (license license:bsd-3)))
+
 (define-public ghc-utf8-string
   (package
     (name "ghc-utf8-string")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-Add-ghc-transformers.patch --]
[-- Type: text/x-patch, Size: 2398 bytes --]

From 59e7c0ba775f114b5e58ee3f1cdf0c337c85a6fb Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:04:13 -0800
Subject: [PATCH 02/22] gnu: Add ghc-transformers.

* gnu/packages/haskell-xyz.scm (ghc-transformers): New variable.
---
 gnu/packages/haskell-xyz.scm | 43 ++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 0eb43b70e1..ca6d0d53c6 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -12127,6 +12127,49 @@ from a shell.  The @code{tldr} pages are a community effort to simplify the
 man pages with practical examples.")
     (license license:bsd-3)))
 
+(define-public ghc-transformers
+  (package
+    (name "ghc-transformers")
+    (version "0.5.6.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/transformers/transformers-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0v66j5k0xqk51pmca55wq192qyw2p43s2mgxlz4f95q2c1fpjs5n"))))
+    (build-system haskell-build-system)
+    (home-page
+     "http://hackage.haskell.org/package/transformers")
+    (synopsis "Concrete functor and monad transformers")
+    (description
+     "A portable library of functor and monad transformers, inspired
+by the paper \"Functional Programming with Overloading and
+Higher-Order Polymorphism\", by Mark P Jones, in Advanced School of
+Functional Programming, 1995
+http://web.cecs.pdx.edu/~mpj/pubs/springschool.html.
+
+This package contains:
+@itemize
+@item
+the monad transformer class (in \"Control.Monad.Trans.Class\")
+@item
+concrete functor and monad
+transformers, each with associated operations and functions to lift
+operations associated with other transformers.
+@end itemize
+The package can be used on its own in portable Haskell code, in which
+case operations need to be manually lifted through transformer
+stacks (see \"Control.Monad.Trans.Class\" for some
+examples).  Alternatively, it can be used with the non-portable monad
+classes in the mtl or monads-tf packages, which automatically lift
+operations introduced by monad transformers through other
+transformers.")
+    (license license:bsd-3)))
+
 (define-public ghc-transformers-base
   (package
     (name "ghc-transformers-base")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-gnu-Add-ghc-tasty-hspec.patch --]
[-- Type: text/x-patch, Size: 1866 bytes --]

From 0d95c7ff4d04ecc0157f52ab280b5e866e41f28c Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:06:52 -0800
Subject: [PATCH 03/22] gnu: Add ghc-tasty-hspec.

* gnu/packages/haskell-check.scm (ghc-tasty-hspec): New variable.
---
 gnu/packages/haskell-check.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index c6e89460ea..7942f2019a 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -215,6 +215,39 @@ with the @url{https://hackage.haskell.org/package/tasty, tasty testing
 framework}.")
     (license license:bsd-3)))
 
+(define-public ghc-tasty-hspec
+  (package
+    (name "ghc-tasty-hspec")
+    (version "1.1.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/tasty-hspec/tasty-hspec-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0i9kdzjpk750sa078jj3iyhp72k0177zk7vxl131r6dkyz09x27y"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-hspec" ,ghc-hspec)
+       ("ghc-hspec-core" ,ghc-hspec-core)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-smallcheck" ,ghc-tasty-smallcheck)
+       ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)))
+    (arguments
+     `(#:cabal-revision
+       ("4" "1yppwhs2r2rlwrzli9ccv5ldgl95h5p7pqhsr898r3das6daf6sk")))
+    (home-page
+     "https://github.com/mitchellwrosen/tasty-hspec")
+    (synopsis
+     "Hspec support for the Tasty test framework")
+    (description
+     "This package provides a Tasty provider for Hspec test suites.")
+    (license license:bsd-3)))
+
 (define-public ghc-tasty-hunit
   (package
     (name "ghc-tasty-hunit")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0004-gnu-Add-ghc-websockets.patch --]
[-- Type: text/x-patch, Size: 2623 bytes --]

From 71b6172cc7c4aa75ee9d3a2a18a6f1b67367a0d8 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:12:42 -0800
Subject: [PATCH 04/22] gnu: Add ghc-websockets.

* gnu/packages/haskell-web.scm (ghc-websockets): New variable.
---
 gnu/packages/haskell-web.scm | 53 ++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 05be862a85..67fc68cf3a 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -655,6 +655,59 @@ limitation, automatic pruning, energy saving and replay resistance.")
 a WAI handler, via the native Haskell TLS implementation.")
     (license license:expat)))
 
+(define-public ghc-websockets
+  (package
+    (name "ghc-websockets")
+    (version "0.12.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/websockets/websockets-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1vp3790w3hmr6v96314vdx74f7sg2c7hvnc93gafq0xhbxnr7nvx"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-base64-bytestring" ,ghc-base64-bytestring)
+       ("ghc-bytestring-builder" ,ghc-bytestring-builder)
+       ("ghc-case-insensitive" ,ghc-case-insensitive)
+       ("ghc-network" ,ghc-network)
+       ("ghc-random" ,ghc-random)
+       ("ghc-sha" ,ghc-sha)
+       ("ghc-streaming-commons" ,ghc-streaming-commons)
+       ("ghc-entropy" ,ghc-entropy)))
+    (native-inputs
+     `(("ghc-hunit" ,ghc-hunit)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-test-framework" ,ghc-test-framework)
+       ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
+       ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)))
+    (home-page "https://jaspervdj.be/websockets/")
+    (synopsis
+     "Way to write WebSocket-capable servers in Haskell")
+    (description
+     "This library allows you to write WebSocket-capable servers.
+
+An example server:
+https://github.com/jaspervdj/websockets/blob/master/example/server.lhs
+An example client:
+https://github.com/jaspervdj/websockets/blob/master/example/client.hs
+
+See also:
+@itemize
+@item
+The specification of the WebSocket protocol:
+http://www.whatwg.org/specs/web-socket-protocol/.
+@item
+The JavaScript API for dealing with WebSockets:
+http://www.w3.org/TR/websockets/
+@end itemize")
+    (license license:bsd-3)))
+
 (define-public ghc-xss-sanitize
   (package
     (name "ghc-xss-sanitize")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: 0005-gnu-Add-ghc-wai-websockets.patch --]
[-- Type: text/x-patch, Size: 1735 bytes --]

From db43579260f7fd52d722039dc833e00d5c4f29b8 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:37:29 -0800
Subject: [PATCH 05/22] gnu: Add ghc-wai-websockets.

* gnu/packages/haskell-web.scm (ghc-wai-websockets): New variable.
---
 gnu/packages/haskell-web.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 67fc68cf3a..55cad25085 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -708,6 +708,36 @@ http://www.w3.org/TR/websockets/
 @end itemize")
     (license license:bsd-3)))
 
+(define-public ghc-wai-websockets
+  (package
+    (name "ghc-wai-websockets")
+    (version "3.0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/wai-websockets/wai-websockets-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0b2xmdsrsqpssyib53wbr6r8hf75789ndyyanv37sv99iyqcwz4i"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-wai" ,ghc-wai)
+       ("ghc-case-insensitive" ,ghc-case-insensitive)
+       ("ghc-network" ,ghc-network)
+       ("ghc-websockets" ,ghc-websockets)
+       ("ghc-http-types" ,ghc-http-types)))
+    (arguments
+     `(#:configure-flags '("--flags=-example")))
+    (home-page "https://github.com/yesodweb/wai")
+    (synopsis
+     "Provide a bridge between WAI and the websockets package")
+    (description
+     "Use websockets with WAI applications, primarily those hosted via Warp.")
+    (license license:expat)))
+
 (define-public ghc-xss-sanitize
   (package
     (name "ghc-xss-sanitize")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: 0006-gnu-Add-ghc-sourcemap.patch --]
[-- Type: text/x-patch, Size: 1860 bytes --]

From f5ecef8e10997597a37982a63ec365fe793d9e7b Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:39:09 -0800
Subject: [PATCH 06/22] gnu: Add ghc-sourcemap.

gnu/pacakges/haskell-web.scm (ghc-sourcemap): New variable.
---
 gnu/packages/haskell-web.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 55cad25085..55407bb729 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1776,3 +1776,36 @@ non-Haskell dependencies.")
 and Perl's @code{Web::Scraper}.  Scalpel builds on top of TagSoup to provide a
 declarative and monadic interface.")
     (license license:asl2.0)))
+
+(define-public ghc-sourcemap
+  (package
+    (name "ghc-sourcemap")
+    (version "0.1.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/sourcemap/sourcemap-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0ynfm44ym8y592wnzdwa0d05dbkffyyg5sm26y5ylzpynk64r85r"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-utf8-string" ,ghc-utf8-string)))
+    (arguments
+     `(#:tests? #f))
+    (home-page
+     "http://hackage.haskell.org/package/sourcemap")
+    (synopsis
+     "Implementation of source maps as proposed by Google and Mozilla")
+    (description
+     "Implementation of source maps, revision 3, proposed by Google
+and Mozilla here https://wiki.mozilla.org/DevTools/Features/SourceMap
+and here
+https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit")
+    (license license:bsd-3)))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #8: 0007-gnu-Add-ghc-mtl-compat.patch --]
[-- Type: text/x-patch, Size: 2215 bytes --]

From 4219d46e224b2901d37e47da8a0cc08c48662386 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 09:32:28 -0800
Subject: [PATCH 07/22] gnu: Add ghc-mtl-compat.

* gnu/packages/haskell-xyz.scm (ghc-mtl-compat): New variable.
---
 gnu/packages/haskell-xyz.scm | 39 ++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index ca6d0d53c6..dd0c1206dd 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -7631,6 +7631,45 @@ semi-direct products, \"deletable\" monoids, \"split\" monoids, and
 \"cut\" monoids.")
     (license license:bsd-3)))
 
+(define-public ghc-mtl-compat
+  (package
+    (name "ghc-mtl-compat")
+    (version "0.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/mtl-compat/mtl-compat-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "17iszr5yb4f17g8mq6i74hsamii8z6m2qfsmgzs78mhiwa7kjm8r"))))
+    (build-system haskell-build-system)
+    (arguments
+     `(#:tests? #f
+       #:haddock? #f))
+    (home-page
+     "https://github.com/haskell-compat/mtl-compat")
+    (synopsis
+     "Backported Control.Monad.Except module from mtl")
+    (description
+     "This package backports the \"Control.Monad.Except\" module from
+mtl (if using mtl-2.2.0.1 or earlier), which reexports the ExceptT
+monad transformer and the MonadError class.
+
+This package should only be used if there is a need to use the
+Control.Monad.Except module specifically.  If you just want the mtl
+class instances for ExceptT, use transformers-compat instead, since
+mtl-compat does nothing but reexport the instances from that package.
+
+Note that unlike how mtl-2.2 or later works, the
+\"Control.Monad.Except\" module defined in this package exports all of
+ExceptT's monad class instances.  Therefore, you may have to declare
+import Control.Monad.Except () at the top of your file to get all of
+the ExceptT instances in scope.")
+    (license license:bsd-3)))
+
 (define-public ghc-murmur-hash
   (package
     (name "ghc-murmur-hash")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #9: 0008-gnu-Add-ghc-protolude.patch --]
[-- Type: text/x-patch, Size: 1599 bytes --]

From 1021eee12c0f48adb4cd4560201cb8c348648361 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:40:38 -0800
Subject: [PATCH 08/22] gnu: Add ghc-protolude.

* gnu/packages/haskell-xyz.scm (ghc-protolude): New variable.
---
 gnu/packages/haskell-xyz.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index dd0c1206dd..3e383b8231 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -9285,6 +9285,32 @@ project-template tries to provide a canonical Haskell library for implementing
 the ideal templating system.")
     (license license:bsd-3)))
 
+(define-public ghc-protolude
+  (package
+    (name "ghc-protolude")
+    (version "0.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/protolude/protolude-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0zzkyxz0vmcbncpid7gp72fpjj0fla3gqhlfkij5c5lg12skjgfj"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-async" ,ghc-async)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-mtl-compat" ,ghc-mtl-compat)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)))
+    (home-page "https://github.com/sdiehl/protolude")
+    (synopsis "Small prelude")
+    (description
+     "A sensible set of defaults for writing custom Preludes.")
+    (license license:expat)))
+
 (define-public ghc-psqueues
   (package
     (name "ghc-psqueues")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #10: 0009-gnu-Add-ghc-pattern-arrows.patch --]
[-- Type: text/x-patch, Size: 1549 bytes --]

From d1879a186303fb5b5e3ff28a0b312f3aad56baaa Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:41:40 -0800
Subject: [PATCH 09/22] gnu: Add ghc-pattern-arrows.

* gnu/packages/haskell-xyz.scm (ghc-pattern-arrows): New variable.
---
 gnu/packages/haskell-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 3e383b8231..e98df13b58 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -8763,6 +8763,29 @@ of two versions of a source file.  It provides a good balance between
 performance, nice output for humans, and simplicity of implementation.")
     (license license:bsd-3)))
 
+(define-public ghc-pattern-arrows
+  (package
+    (name "ghc-pattern-arrows")
+    (version "0.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/pattern-arrows/pattern-arrows-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "13q7bj19hd60rnjfc05wxlyck8llxy11z3mns8kxg197wxrdkhkg"))))
+    (build-system haskell-build-system)
+    (home-page
+     "https://blog.functorial.com/posts/2013-10-27-Pretty-Printing-Arrows.html")
+    (synopsis "Arrows for Pretty Printing")
+    (description
+     "A library for generating concise pretty printers based on precedence
+rules.")
+    (license license:expat)))
+
 (define-public ghc-pcre-light
   (package
     (name "ghc-pcre-light")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #11: 0010-gnu-Add-ghc-language-javascript.patch --]
[-- Type: text/x-patch, Size: 1842 bytes --]

From 62c221e3e1fda6e72ff2464c4faa31760523090c Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:43:44 -0800
Subject: [PATCH 10/22] gnu: Add ghc-language-javascript.

* gnu/packages/haskell-web.scm (ghc-language-javascript): New variable.
---
 gnu/packages/haskell-web.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 55407bb729..a72e7ede60 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1809,3 +1809,35 @@ and Mozilla here https://wiki.mozilla.org/DevTools/Features/SourceMap
 and here
 https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit")
     (license license:bsd-3)))
+
+(define-public ghc-language-javascript
+  (package
+    (name "ghc-language-javascript")
+    (version "0.7.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/language-javascript/language-javascript-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "15bpqpkjf2y3fk8wff9zlnkpsjc63bnbvhlkxrs9alj0bikq17nk"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-blaze-builder" ,ghc-blaze-builder)
+       ("ghc-utf8-string" ,ghc-utf8-string)))
+    (native-inputs
+     `(("ghc-alex" ,ghc-alex)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-happy" ,ghc-happy)
+       ("ghc-hspec" ,ghc-hspec)
+       ("ghc-utf8-light" ,ghc-utf8-light)))
+    (home-page
+     "https://github.com/erikd/language-javascript")
+    (synopsis "Parser for JavaScript")
+    (description
+     "Parses Javascript into an Abstract Syntax Tree (AST).  Initially intended
+as frontend to hjsmin.")
+    (license license:bsd-3)))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #12: 0011-gnu-Add-ghc-bower-json.patch --]
[-- Type: text/x-patch, Size: 1929 bytes --]

From 02f6a0f0a0398f9244ca80bc33dfdda1bc403c99 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:44:47 -0800
Subject: [PATCH 11/22] gnu: Add ghc-bower-json.

* gnu/packages/haskell-web.scm (ghc-bower-json): New variable.
---
 gnu/packages/haskell-web.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index a72e7ede60..50abfb04db 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1841,3 +1841,35 @@ https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/
      "Parses Javascript into an Abstract Syntax Tree (AST).  Initially intended
 as frontend to hjsmin.")
     (license license:bsd-3)))
+
+(define-public ghc-bower-json
+  (package
+    (name "ghc-bower-json")
+    (version "1.0.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/bower-json/bower-json-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0wvygg3rdbxzrmr61a9w6ddv9pfric85ih8hnxyk0ydzn7i59abs"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-aeson-better-errors" ,ghc-aeson-better-errors)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-transformers" ,ghc-transformers)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)))
+    (native-inputs
+     `(("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-hunit" ,ghc-tasty-hunit)))
+    (home-page "https://github.com/hdgarrood/bower-json")
+    (synopsis "Read bower.json from Haskell")
+    (description
+     "Bower is a package manager for the web (see http://bower.io).  This
+package provides a data type and ToJSON/FromJSON instances for Bower's package
+manifest file,bower.json.")
+    (license license:expat)))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #13: 0012-gnu-Add-ghc-aeson-better-errors.patch --]
[-- Type: text/x-patch, Size: 2021 bytes --]

From 97df0ddc596744c54ca6ecf1995301096a32559e Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:45:59 -0800
Subject: [PATCH 12/22] gnu: Add ghc-aeson-better-errors.

* gnu/packages/haskell-web.scm (ghc-aeson-better-errors): New variable.
---
 gnu/packages/haskell-web.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 50abfb04db..5b7089a02e 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1007,6 +1007,39 @@ the function @code{aesonQQ} that compile-time converts a string representation
 of a JSON value into a @code{Data.Aeson.Value}.")
     (license license:expat)))
 
+(define-public ghc-aeson-better-errors
+  (package
+    (name "ghc-aeson-better-errors")
+    (version "0.9.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/aeson-better-errors/aeson-better-errors-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "09vkyrhwak3bmpfsqcd2az8hfqqkxyhg468hv5avgisy0nzh3w38"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-dlist" ,ghc-dlist)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)
+       ("ghc-void" ,ghc-void)))
+    (home-page
+     "https://github.com/hdgarrood/aeson-better-errors")
+    (synopsis
+     "Better error messages when decoding JSON values in Haskell")
+    (description
+     "A small package which gives you the tools to build parsers to decode
+JSON values, and gives good error messages when parsing fails.  See also
+http://harry.garrood.me/blog/aeson-better-errors/.")
+    (license license:expat)))
+
 (define-public ghc-multipart
   (package
     (name "ghc-multipart")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #14: 0013-gnu-Add-ghc-assoc.patch --]
[-- Type: text/x-patch, Size: 1620 bytes --]

From 313086be95f69a9a95de28724f9218d664ad921c Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:44:49 -0800
Subject: [PATCH 13/22] gnu: Add ghc-assoc.

* gnu/packages/haskell-xyz.scm (ghc-assoc): New variable.
---
 gnu/packages/haskell-xyz.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index e98df13b58..2ab8bff2b2 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -456,6 +456,34 @@ colored output using the ansi-terminal package.")
 style.")
     (license license:bsd-3)))
 
+(define-public ghc-assoc
+  (package
+    (name "ghc-assoc")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/assoc/assoc-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1m9n4vp190bvn2wcrd4ggfwa9pi93jp0zgx02mdgywn2zfidw020"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-bifunctors" ,ghc-bifunctors)
+       ("ghc-tagged" ,ghc-tagged)))
+    (home-page
+     "http://hackage.haskell.org/package/assoc")
+    (synopsis
+     "Swap and assoc: Symmetric and Semigroupy Bifunctors")
+    (description
+     "Provides generalisations of @code{swap :: (a,b) -> (b,a)} and
+@code{assoc :: ((a,b),c) -> (a,(b,c))} to @code{Bifunctor}s supporting
+similar operations (e.g. @code{Either}, @code{These}).")
+    (license license:bsd-3)))
+
 (define-public ghc-async
   (package
     (name "ghc-async")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #15: 0014-gnu-Add-ghc-these.patch --]
[-- Type: text/x-patch, Size: 2699 bytes --]

From 76ec0c36f634cfc0776bdae06a5adae9a823fca9 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:45:42 -0800
Subject: [PATCH 14/22] gnu: Add ghc-these.

* gnu/packages/haskell-xyz.scm (ghc-these): New variable.
---
 gnu/packages/haskell-xyz.scm | 57 ++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 2ab8bff2b2..5c65f7b83e 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -12003,6 +12003,63 @@ and @code{Eq} instances.  These instances used to live in the haskell-src-meta
 package, and that's where the version number started.")
     (license license:bsd-3)))
 
+(define-public ghc-these
+  (package
+    (name "ghc-these")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/these/these-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1k0pi65g7cm9hzdw6my6bzz2zvddkmj1qs45ymqmi316bpiixk3r"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-assoc" ,ghc-assoc)
+       ("ghc-semigroupoids" ,ghc-semigroupoids)
+       ("ghc-quickcheck" ,ghc-quickcheck)))
+    (arguments
+     `(#:cabal-revision
+       ("1"
+        "0923r86fnmgpx0msm68aszirh2n19nn5bccgjxfh2146jw4z7w3z")))
+    (home-page
+     "https://github.com/isomorphism/these")
+    (synopsis "Either-or-both data type")
+    (description
+     "This package provides a data type @code{These a b} which can
+hold a value of either type or values of each type.  This is usually
+thought of as an \"inclusive or\" type (contrasting @code{Either a b} as
+\"exclusive or\") or as an \"outer join\" type (contrasting @code{(a, b)}
+as \"inner join\").
+
+@code{data These a b = This a | That b | These a b}
+
+Since version 1, this package was split into parts:
+
+@itemize
+@item
+https://hackage.haskell.org/package/semialign For @code{Align} and
+@code{Zip} type-classes.
+@item
+https://hackage.haskell.org/package/semialign-indexed For
+@code{SemialignWithIndex} class, providing @code{ialignWith} and
+@code{izipWith}
+@item
+https://hackage.haskell.org/package/these-lens For lens combinators.
+@item
+http://hackage.haskell.org/package/monad-chronicle For transformers
+variant of @code{These}.
+@end itemize")
+    (license license:bsd-3)))
+
 (define-public ghc-threads
   (package
     (name "ghc-threads")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #16: 0015-gnu-Add-ghc-semialign.patch --]
[-- Type: text/x-patch, Size: 2208 bytes --]

From 26fd6f56f08fe41f3ef43f8e0f38d7a8e5c886eb Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:48:25 -0800
Subject: [PATCH 15/22] gnu: Add ghc-semialign.

* gnu/packages/haskell-xyz.scm (ghc-semialign): New variable.
---
 gnu/packages/haskell-xyz.scm | 40 ++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 5c65f7b83e..d0dd0fe8ba 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -10522,6 +10522,46 @@ Haskell")
 a memory chunk that will be auto-scrubbed after it run out of scope.")
     (license license:bsd-3)))
 
+(define-public ghc-semialign
+  (package
+    (name "ghc-semialign")
+    (version "1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/semialign/semialign-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "004x0a80sqqdgvsyk4z0nasxpi6z3g1d8kgwj804bj9ka8dlc75m"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-these" ,ghc-these)
+       ("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-tagged" ,ghc-tagged)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-semigroupoids" ,ghc-semigroupoids)))
+    (arguments
+     `(#:cabal-revision
+       ("1"
+        "0qnqnyfng4kwy2h2anrcy5id2ijnawava3zcc5h5b8ri1y6ks6zi")))
+    (home-page
+     "https://github.com/isomorphism/these")
+    (synopsis
+     "Align and Zip type-classes from the common Semialign ancestor ")
+    (description
+     "The major use of @code{These} of this is provided by the
+@code{align} member of @code{Semialign} class, representing a
+generalized notion of \"zipping with padding\" that combines
+structures without truncating to the size of the smaller input.  It
+turns out that @code{zip} operation fits well the @code{Semialign}
+class, forming lattice-like structure.")
+    (license license:bsd-3)))
+
 (define-public ghc-semigroupoids
   (package
     (name "ghc-semigroupoids")
-- 
2.26.0


[-- Attachment #17: 0016-gnu-Add-ghc-happy-1.19.9.patch --]
[-- Type: text/x-patch, Size: 2857 bytes --]

From d578f00c1dd07d8e4f9992463ad13532b9292811 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:52:48 -0800
Subject: [PATCH 16/22] gnu: Add ghc-happy@1.19.9

* gnu/packages/purescript.scm (ghc-happy-1.19.9): New file, New variable.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add purescript.scm.
---
 gnu/local.mk                |  1 +
 gnu/packages/purescript.scm | 44 +++++++++++++++++++++++++++++++++++++
 2 files changed, 45 insertions(+)
 create mode 100644 gnu/packages/purescript.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index ac5fb0cfd1..ffed5525b0 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -423,6 +423,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pretty-print.scm			\
   %D%/packages/protobuf.scm			\
   %D%/packages/pure.scm				\
+  %D%/packages/purescript.scm			\
   %D%/packages/pv.scm				\
   %D%/packages/python.scm			\
   %D%/packages/python-check.scm			\
diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
new file mode 100644
index 0000000000..ba90f9c23b
--- /dev/null
+++ b/gnu/packages/purescript.scm
@@ -0,0 +1,44 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages purescript)
+  #:use-module (gnu packages haskell-xyz)
+  #:use-module (gnu packages haskell-check)
+  #:use-module (gnu packages haskell-crypto)
+  #:use-module (gnu packages haskell-web)
+  #:use-module ((gnu packages python) #:select (python))
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix packages)
+  #:use-module (guix build-system haskell)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define ghc-happy-1.19.9
+  (package
+    (inherit ghc-happy)
+    (version "1.19.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/happy/happy-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "138xpxdb7x62lpmgmb6b3v3vgdqqvqn4273jaap3mjmc2gla709y"))))))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #18: 0017-gnu-Add-ghc-clock-0.7.2.patch --]
[-- Type: text/x-patch, Size: 1044 bytes --]

From d9e4b5885f6c42c8caec593bfe9ac9f69e4e1a9d Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:53:33 -0800
Subject: [PATCH 17/22] gnu: Add ghc-clock@0.7.2.

* gnu/packages/purescript.scm (ghc-clock-0.7.2): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index ba90f9c23b..d430e62fcd 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -42,3 +42,18 @@
        (sha256
         (base32
          "138xpxdb7x62lpmgmb6b3v3vgdqqvqn4273jaap3mjmc2gla709y"))))))
+
+(define ghc-clock-0.7.2
+  (package
+    (inherit ghc-clock)
+    (version "0.7.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/"
+             "clock/"
+             "clock-" version ".tar.gz"))
+       (sha256
+        (base32
+         "07v91s20halsqjmziqb1sqjp2sjpckl9by7y28aaklwqi2bh2rl8"))))))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #19: 0018-gnu-Add-ghc-glob-0.9.3.patch --]
[-- Type: text/x-patch, Size: 1063 bytes --]

From de4fd8982ee44f449bd76635ce54371478309095 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:54:12 -0800
Subject: [PATCH 18/22] gnu: Add ghc-glob@0.9.3.

* gnu/packages/purescript.scm (ghc-glob-0.9.3): New variable.
---
 gnu/packages/purescript.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index d430e62fcd..8bfbf5411d 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -57,3 +57,17 @@
        (sha256
         (base32
          "07v91s20halsqjmziqb1sqjp2sjpckl9by7y28aaklwqi2bh2rl8"))))))
+
+(define ghc-glob-0.9.3
+  (package
+    (inherit ghc-glob)
+    (version "0.9.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "Glob-" version "/"
+                           "Glob-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1s69lk3ic6zlkikhvb78ly9wl3g70a1h1m6ndhsca01pp8z8axrs"))))))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #20: 0019-gnu-Add-ghc-ansi-terminal-0.8.2.patch --]
[-- Type: text/x-patch, Size: 1086 bytes --]

From 77b30a8446b5c3cb66a247a53f1c91d636c2501f Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:54:51 -0800
Subject: [PATCH 19/22] gnu: Add ghc-ansi-terminal@0.8.2.

* gnu/packages/purescript.scm (ghc-ansi-terminal-0.8.2): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 8bfbf5411d..30abc05c2e 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -71,3 +71,18 @@
        (sha256
         (base32
          "1s69lk3ic6zlkikhvb78ly9wl3g70a1h1m6ndhsca01pp8z8axrs"))))))
+
+(define ghc-ansi-terminal-0.8.2
+  (package
+    (inherit ghc-ansi-terminal)
+    (version "0.8.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/ansi-terminal/ansi-terminal-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "147ss9wz03ww6ypbv6yh5vi1wfrfcaqm8r6nxh50vnp7254359wh"))))))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #21: 0020-gnu-Add-ghc-lifted-async-0.10.0.4.patch --]
[-- Type: text/x-patch, Size: 1105 bytes --]

From f9320e9085af68790928ef688e799730651cdb3f Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:55:24 -0800
Subject: [PATCH 20/22] gnu: Add ghc-lifted-async@0.10.0.4

* gnu/packages/purescript.scm (ghc-lifted-async-0.10.0.4): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 30abc05c2e..10e69151df 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -86,3 +86,18 @@
        (sha256
         (base32
          "147ss9wz03ww6ypbv6yh5vi1wfrfcaqm8r6nxh50vnp7254359wh"))))))
+
+(define ghc-lifted-async-0.10.0.4
+  (package
+    (inherit ghc-lifted-async)
+    (version "0.10.0.4")
+    (source
+     (origin
+       (inherit (package-source ghc-lifted-async))
+       (uri (string-append
+             "mirror://hackage/package/lifted-async/lifted-async-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0cwl1d0wjpdk0v1l1qxiqiksmak950c8gx169c1q77cg0z18ijf9"))))))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #22: 0021-gnu-Add-ghc-network-3.0.1.1.patch --]
[-- Type: text/x-patch, Size: 1068 bytes --]

From dee0bc412c9da37eda1224eccbf3bedbb1bba1dc Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:56:13 -0800
Subject: [PATCH 21/22] gnu: Add ghc-network@3.0.1.1

* gnu/packages/purescript.scm (ghc-network-3.0.1.1): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 10e69151df..8936e1bb87 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -101,3 +101,18 @@
        (sha256
         (base32
          "0cwl1d0wjpdk0v1l1qxiqiksmak950c8gx169c1q77cg0z18ijf9"))))))
+
+(define ghc-network-3.0.1.1
+  (package
+    (inherit ghc-network)
+    (version "3.0.1.1")
+    (source
+     (origin
+       (inherit (package-source ghc-network))
+       (uri (string-append
+             "mirror://hackage/package/network/network-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1xacvl5wf47cz61igb94zf961b9ks0yhr02myxgjf53clm70dg6j"))))))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #23: 0022-gnu-Add-purescript.patch --]
[-- Type: text/x-patch, Size: 4153 bytes --]

From 842a0b9c45e2a3c126c8636ce8f126392775b099 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 09:21:50 -0800
Subject: [PATCH 22/22] gnu: Add purescript.

* gnu/packages/purescript.scm (purescript): New variable.
---
 gnu/packages/purescript.scm | 89 +++++++++++++++++++++++++++++++++++++
 1 file changed, 89 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 8936e1bb87..7b60aae097 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -116,3 +116,92 @@
        (sha256
         (base32
          "1xacvl5wf47cz61igb94zf961b9ks0yhr02myxgjf53clm70dg6j"))))))
+
+(define-public purescript
+  (package
+    (name "purescript")
+    (version "0.13.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/purescript/purescript-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0plqzlcfaw2ik2im7aq8yy1b1y88cnc8qd7wwaayndbdz060s9j4"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-glob" ,ghc-glob-0.9.3)
+       ("ghc-aeson" ,ghc-aeson)
+       ("ghc-aeson-better-errors" ,ghc-aeson-better-errors)
+       ("ghc-aeson-pretty" ,ghc-aeson-pretty)
+       ("ghc-ansi-terminal" ,ghc-ansi-terminal-0.8.2)
+       ("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-blaze-html" ,ghc-blaze-html)
+       ("ghc-bower-json" ,ghc-bower-json)
+       ("ghc-boxes" ,ghc-boxes)
+       ("ghc-cheapskate" ,ghc-cheapskate)
+       ("ghc-clock" ,ghc-clock-0.7.2)
+       ("ghc-cryptonite" ,ghc-cryptonite)
+       ("ghc-data-ordlist" ,ghc-data-ordlist)
+       ("ghc-dlist" ,ghc-dlist)
+       ("ghc-edit-distance" ,ghc-edit-distance)
+       ("ghc-file-embed" ,ghc-file-embed)
+       ("ghc-fsnotify" ,ghc-fsnotify)
+       ("ghc-happy" ,ghc-happy)
+       ("ghc-language-javascript" ,ghc-language-javascript)
+       ("ghc-lifted-async" ,ghc-lifted-async-0.10.0.4)
+       ("ghc-lifted-base" ,ghc-lifted-base)
+       ("ghc-memory" ,ghc-memory)
+       ("ghc-microlens-platform" ,ghc-microlens-platform)
+       ("ghc-monad-control" ,ghc-monad-control)
+       ("ghc-monad-logger" ,ghc-monad-logger)
+       ("ghc-network" ,ghc-network-3.0.1.1)
+       ("ghc-parallel" ,ghc-parallel)
+       ("ghc-pattern-arrows" ,ghc-pattern-arrows)
+       ("ghc-protolude" ,ghc-protolude)
+       ("ghc-regex-tdfa" ,ghc-regex-tdfa)
+       ("ghc-safe" ,ghc-safe)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-semialign" ,ghc-semialign)
+       ("ghc-semigroups" ,ghc-semigroups)
+       ("ghc-sourcemap" ,ghc-sourcemap)
+       ("ghc-split" ,ghc-split)
+       ("ghc-stringsearch" ,ghc-stringsearch)
+       ("ghc-syb" ,ghc-syb)
+       ("ghc-these" ,ghc-these)
+       ("ghc-transformers-base" ,ghc-transformers-base)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-utf8-string" ,ghc-utf8-string)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint)
+       ("ghc-http-types" ,ghc-http-types)
+       ("ghc-network" ,ghc-network)
+       ("ghc-optparse-applicative" ,ghc-optparse-applicative)
+       ("ghc-wai" ,ghc-wai)
+       ("ghc-wai-websockets" ,ghc-wai-websockets)
+       ("ghc-warp" ,ghc-warp)
+       ("ghc-websockets" ,ghc-websockets)
+       ("ghc-gitrev" ,ghc-gitrev)))
+    (native-inputs
+     `(("ghc-happy" ,ghc-happy-1.19.9)
+       ("ghc-hunit" ,ghc-hunit)
+       ("ghc-hspec" ,ghc-hspec)
+       ("hspec-discover" ,hspec-discover)
+       ("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-hspec" ,ghc-tasty-hspec)))
+    (arguments
+     `(;; Tests require npm
+       #:tests? #f
+       ;; Haddock fails
+       #:haddock? #f
+       #:configure-flags '("--flags=release")))
+    (home-page "http://www.purescript.org/")
+    (synopsis "Haskell inspired programming language compiling to JavaScript")
+    (description
+     "A small strongly, statically typed programming language with
+expressive types, inspired by Haskell and compiling to JavaScript.")
+    (license license:bsd-3)))
-- 
2.26.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#38596] [PATCH] gnu: Add PureScript.
  2020-04-11 20:12 ` [bug#38596] [PATCH] gnu: " John Soo
@ 2020-04-17 19:21   ` Christopher Baines
  2020-04-18 22:31     ` John Soo
  0 siblings, 1 reply; 9+ messages in thread
From: Christopher Baines @ 2020-04-17 19:21 UTC (permalink / raw)
  To: John Soo; +Cc: 38596

[-- Attachment #1: Type: text/plain, Size: 1140 bytes --]


John Soo <jsoo1@asu.edu> writes:

> Hi Guix,
>
> I rebased these patches on master.

Hi John,

I've had an initial look through these now, sorry it's taken so long!

I think the patches are pretty much good to merge, but I do have a few
comments.

ghc-utf8-light could do with a better description, something a little
more informative.

The ghc-sourcemap and ghc-mtl-compat tests are disabled, it would be
good to at least add a comments as to why.

The ghc-protolude synopsis could potentially be more informative.

I think adding specific versions of dependencies for purescript is OK,
but only if they're justified, like if the package only builds with that
version. The justification should also be noted in the purescript
package description.

I don't think it's necessary to go through all the custom versions of
packages you've added, but it would be good to at least see if there's
one case where the upstream specification is overly strict, and the
slightly different version from Guix would work. That at least would
provide an example of how to override versions going forward.

Let me know what you think, thanks again,

Chris

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 962 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#38596] [PATCH] gnu: Add PureScript.
  2020-04-17 19:21   ` Christopher Baines
@ 2020-04-18 22:31     ` John Soo
  2020-04-21  7:55       ` Christopher Baines
  0 siblings, 1 reply; 9+ messages in thread
From: John Soo @ 2020-04-18 22:31 UTC (permalink / raw)
  To: Christopher Baines; +Cc: 38596

[-- Attachment #1: Type: text/plain, Size: 1836 bytes --]

Hi,

Christopher Baines <mail@cbaines.net> writes:

> I've had an initial look through these now, sorry it's taken so long!

No problem. I was thinking I ought to do some qa and review, myself.

> ghc-utf8-light could do with a better description, something a little
> more informative.

I think I made this better as well as fixing some other descriptions
lacking full sentences.

> The ghc-sourcemap and ghc-mtl-compat tests are disabled, it would be
> good to at least add a comments as to why.

I added a comment for sourcemap. I realized mtl-compat's tests and
haddocks worked just fine so those are re-enabled.

> The ghc-protolude synopsis could potentially be more informative.

I think I added some more commentary there. It's a bit tricky since I
have not used protolude myself so I am not sure what to provide aside
from their stated description.

> I think adding specific versions of dependencies for purescript is OK,
> but only if they're justified, like if the package only builds with that
> version. The justification should also be noted in the purescript
> package description.

Ah, thanks. Would a comment above the dependencies suffice? The packages
won't be searchable since they are not define-public (yet?).


> I don't think it's necessary to go through all the custom versions of
> packages you've added, but it would be good to at least see if there's
> one case where the upstream specification is overly strict, and the
> slightly different version from Guix would work. That at least would
> provide an example of how to override versions going forward.

Ah thanks for the suggestion here. I found one that could be taken from
the existing package in (gnu packages haskell-xyz). The rest seemed to
be either pinned exactly or too strict to take from guix packages.

Thanks for your help and tools!

John


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-ghc-utf8-light.patch --]
[-- Type: text/x-patch, Size: 1693 bytes --]

From 033c04ecc06751668ee2b8b24fa3880d570c0cbb Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:00:31 -0800
Subject: [PATCH 01/21] gnu: Add ghc-utf8-light.

* gnu/packages/haskell-xyz.scm (ghc-utf8-light): New variable.
---
 gnu/packages/haskell-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index c9119efd69..1ff6f30141 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -12671,6 +12671,31 @@ a style ready for qualification, that is, you should import them by
 parser that uses ByteStrings for parsing and representing the URI data.")
     (license license:bsd-3)))
 
+(define-public ghc-utf8-light
+  (package
+    (name "ghc-utf8-light")
+    (version "0.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/utf8-light/utf8-light-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0rwyc5z331yfnm4hpx0sph6i1zvkd1z10vvglhnp0vc9wy644k0q"))))
+    (build-system haskell-build-system)
+    (home-page
+     "http://hackage.haskell.org/package/utf8-light")
+    (synopsis "Lightweight unicode support for Haskell")
+    (description
+     "This package profides a class for encoding and decoding UTF8 strings
+with instances for several common types.  It also includes several functions
+for working with UTF8.  It aims to be lightweight, depending only on Base and
+including only one module.")
+    (license license:bsd-3)))
+
 (define-public ghc-utf8-string
   (package
     (name "ghc-utf8-string")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-Add-ghc-transformers.patch --]
[-- Type: text/x-patch, Size: 2398 bytes --]

From e9602b697112b1bff24c75b594fcd9f6aad0ff4a Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:04:13 -0800
Subject: [PATCH 02/21] gnu: Add ghc-transformers.

* gnu/packages/haskell-xyz.scm (ghc-transformers): New variable.
---
 gnu/packages/haskell-xyz.scm | 43 ++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 1ff6f30141..5fcf87f7ea 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -12127,6 +12127,49 @@ from a shell.  The @code{tldr} pages are a community effort to simplify the
 man pages with practical examples.")
     (license license:bsd-3)))
 
+(define-public ghc-transformers
+  (package
+    (name "ghc-transformers")
+    (version "0.5.6.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/transformers/transformers-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0v66j5k0xqk51pmca55wq192qyw2p43s2mgxlz4f95q2c1fpjs5n"))))
+    (build-system haskell-build-system)
+    (home-page
+     "http://hackage.haskell.org/package/transformers")
+    (synopsis "Concrete functor and monad transformers")
+    (description
+     "A portable library of functor and monad transformers, inspired
+by the paper \"Functional Programming with Overloading and
+Higher-Order Polymorphism\", by Mark P Jones, in Advanced School of
+Functional Programming, 1995
+http://web.cecs.pdx.edu/~mpj/pubs/springschool.html.
+
+This package contains:
+@itemize
+@item
+the monad transformer class (in \"Control.Monad.Trans.Class\")
+@item
+concrete functor and monad
+transformers, each with associated operations and functions to lift
+operations associated with other transformers.
+@end itemize
+The package can be used on its own in portable Haskell code, in which
+case operations need to be manually lifted through transformer
+stacks (see \"Control.Monad.Trans.Class\" for some
+examples).  Alternatively, it can be used with the non-portable monad
+classes in the mtl or monads-tf packages, which automatically lift
+operations introduced by monad transformers through other
+transformers.")
+    (license license:bsd-3)))
+
 (define-public ghc-transformers-base
   (package
     (name "ghc-transformers-base")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-gnu-Add-ghc-tasty-hspec.patch --]
[-- Type: text/x-patch, Size: 1866 bytes --]

From 5bb6b8429cbb02b8936686db94ec074fc3ea8034 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:06:52 -0800
Subject: [PATCH 03/21] gnu: Add ghc-tasty-hspec.

* gnu/packages/haskell-check.scm (ghc-tasty-hspec): New variable.
---
 gnu/packages/haskell-check.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index c6e89460ea..7942f2019a 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -215,6 +215,39 @@ with the @url{https://hackage.haskell.org/package/tasty, tasty testing
 framework}.")
     (license license:bsd-3)))
 
+(define-public ghc-tasty-hspec
+  (package
+    (name "ghc-tasty-hspec")
+    (version "1.1.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/tasty-hspec/tasty-hspec-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0i9kdzjpk750sa078jj3iyhp72k0177zk7vxl131r6dkyz09x27y"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-hspec" ,ghc-hspec)
+       ("ghc-hspec-core" ,ghc-hspec-core)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-smallcheck" ,ghc-tasty-smallcheck)
+       ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)))
+    (arguments
+     `(#:cabal-revision
+       ("4" "1yppwhs2r2rlwrzli9ccv5ldgl95h5p7pqhsr898r3das6daf6sk")))
+    (home-page
+     "https://github.com/mitchellwrosen/tasty-hspec")
+    (synopsis
+     "Hspec support for the Tasty test framework")
+    (description
+     "This package provides a Tasty provider for Hspec test suites.")
+    (license license:bsd-3)))
+
 (define-public ghc-tasty-hunit
   (package
     (name "ghc-tasty-hunit")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0004-gnu-Add-ghc-websockets.patch --]
[-- Type: text/x-patch, Size: 2623 bytes --]

From 64e4d356bc37b7a8ef0dd5cb46aba4f282fc9055 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:12:42 -0800
Subject: [PATCH 04/21] gnu: Add ghc-websockets.

* gnu/packages/haskell-web.scm (ghc-websockets): New variable.
---
 gnu/packages/haskell-web.scm | 53 ++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 05be862a85..67fc68cf3a 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -655,6 +655,59 @@ limitation, automatic pruning, energy saving and replay resistance.")
 a WAI handler, via the native Haskell TLS implementation.")
     (license license:expat)))
 
+(define-public ghc-websockets
+  (package
+    (name "ghc-websockets")
+    (version "0.12.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/websockets/websockets-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1vp3790w3hmr6v96314vdx74f7sg2c7hvnc93gafq0xhbxnr7nvx"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-base64-bytestring" ,ghc-base64-bytestring)
+       ("ghc-bytestring-builder" ,ghc-bytestring-builder)
+       ("ghc-case-insensitive" ,ghc-case-insensitive)
+       ("ghc-network" ,ghc-network)
+       ("ghc-random" ,ghc-random)
+       ("ghc-sha" ,ghc-sha)
+       ("ghc-streaming-commons" ,ghc-streaming-commons)
+       ("ghc-entropy" ,ghc-entropy)))
+    (native-inputs
+     `(("ghc-hunit" ,ghc-hunit)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-test-framework" ,ghc-test-framework)
+       ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
+       ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)))
+    (home-page "https://jaspervdj.be/websockets/")
+    (synopsis
+     "Way to write WebSocket-capable servers in Haskell")
+    (description
+     "This library allows you to write WebSocket-capable servers.
+
+An example server:
+https://github.com/jaspervdj/websockets/blob/master/example/server.lhs
+An example client:
+https://github.com/jaspervdj/websockets/blob/master/example/client.hs
+
+See also:
+@itemize
+@item
+The specification of the WebSocket protocol:
+http://www.whatwg.org/specs/web-socket-protocol/.
+@item
+The JavaScript API for dealing with WebSockets:
+http://www.w3.org/TR/websockets/
+@end itemize")
+    (license license:bsd-3)))
+
 (define-public ghc-xss-sanitize
   (package
     (name "ghc-xss-sanitize")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: 0005-gnu-Add-ghc-wai-websockets.patch --]
[-- Type: text/x-patch, Size: 1735 bytes --]

From f01f0f3ecb8ab5f5dea5dc7d09eeaf4a03bf42c0 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:37:29 -0800
Subject: [PATCH 05/21] gnu: Add ghc-wai-websockets.

* gnu/packages/haskell-web.scm (ghc-wai-websockets): New variable.
---
 gnu/packages/haskell-web.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 67fc68cf3a..55cad25085 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -708,6 +708,36 @@ http://www.w3.org/TR/websockets/
 @end itemize")
     (license license:bsd-3)))
 
+(define-public ghc-wai-websockets
+  (package
+    (name "ghc-wai-websockets")
+    (version "3.0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/wai-websockets/wai-websockets-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0b2xmdsrsqpssyib53wbr6r8hf75789ndyyanv37sv99iyqcwz4i"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-wai" ,ghc-wai)
+       ("ghc-case-insensitive" ,ghc-case-insensitive)
+       ("ghc-network" ,ghc-network)
+       ("ghc-websockets" ,ghc-websockets)
+       ("ghc-http-types" ,ghc-http-types)))
+    (arguments
+     `(#:configure-flags '("--flags=-example")))
+    (home-page "https://github.com/yesodweb/wai")
+    (synopsis
+     "Provide a bridge between WAI and the websockets package")
+    (description
+     "Use websockets with WAI applications, primarily those hosted via Warp.")
+    (license license:expat)))
+
 (define-public ghc-xss-sanitize
   (package
     (name "ghc-xss-sanitize")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: 0006-gnu-Add-ghc-sourcemap.patch --]
[-- Type: text/x-patch, Size: 1914 bytes --]

From 8aa79c40d976dfd73b904a72a3becaec362c460a Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:39:09 -0800
Subject: [PATCH 06/21] gnu: Add ghc-sourcemap.

gnu/pacakges/haskell-web.scm (ghc-sourcemap): New variable.
---
 gnu/packages/haskell-web.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 55cad25085..4ff6c2f32d 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1776,3 +1776,37 @@ non-Haskell dependencies.")
 and Perl's @code{Web::Scraper}.  Scalpel builds on top of TagSoup to provide a
 declarative and monadic interface.")
     (license license:asl2.0)))
+
+(define-public ghc-sourcemap
+  (package
+    (name "ghc-sourcemap")
+    (version "0.1.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/sourcemap/sourcemap-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0ynfm44ym8y592wnzdwa0d05dbkffyyg5sm26y5ylzpynk64r85r"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-utf8-string" ,ghc-utf8-string)))
+    (arguments
+     `(#:tests? #f ; FIXME: Fail to compile
+       #:cabal-revision
+       ("1" "1f7q44ar6qfip8fsllg43jyn7r15ifn2r0vz32cbmx0sb0d38dax")))
+    (home-page
+     "http://hackage.haskell.org/package/sourcemap")
+    (synopsis
+     "Implementation of source maps as proposed by Google and Mozilla")
+    (description
+     "Sourcemap provides an implementation of source maps, revision 3,
+proposed by Google and Mozilla here
+@url{https://wiki.mozilla.org/DevTools/Features/SourceMap}.")
+    (license license:bsd-3)))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #8: 0007-gnu-Add-ghc-mtl-compat.patch --]
[-- Type: text/x-patch, Size: 2151 bytes --]

From d0789784d71747817617a76b80a827b66a397221 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 09:32:28 -0800
Subject: [PATCH 07/21] gnu: Add ghc-mtl-compat.

* gnu/packages/haskell-xyz.scm (ghc-mtl-compat): New variable.
---
 gnu/packages/haskell-xyz.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 5fcf87f7ea..2170aade2c 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -7631,6 +7631,41 @@ semi-direct products, \"deletable\" monoids, \"split\" monoids, and
 \"cut\" monoids.")
     (license license:bsd-3)))
 
+(define-public ghc-mtl-compat
+  (package
+    (name "ghc-mtl-compat")
+    (version "0.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/mtl-compat/mtl-compat-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "17iszr5yb4f17g8mq6i74hsamii8z6m2qfsmgzs78mhiwa7kjm8r"))))
+    (build-system haskell-build-system)
+    (home-page
+     "https://github.com/haskell-compat/mtl-compat")
+    (synopsis
+     "Backported Control.Monad.Except module from mtl")
+    (description
+     "This package backports the Control.Monad.Except module from mtl (if
+using mtl-2.2.0.1 or earlier), which reexports the ExceptT monad transformer
+and the MonadError class.
+
+This package should only be used if there is a need to use the
+Control.Monad.Except module specifically.  If you just want the mtl class
+instances for ExceptT, use transformers-compat instead, since mtl-compat does
+nothing but reexport the instances from that package.
+
+Note that unlike how mtl-2.2 or later works, the Control.Monad.Except
+module defined in this package exports all of ExceptT's monad class instances.
+Therefore, you may have to declare @code{import Control.Monad.Except ()} at
+the top of your file to get all of the ExceptT instances in scope.")
+    (license license:bsd-3)))
+
 (define-public ghc-murmur-hash
   (package
     (name "ghc-murmur-hash")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #9: 0008-gnu-Add-ghc-protolude.patch --]
[-- Type: text/x-patch, Size: 1698 bytes --]

From b4586581e759d5a80380651d770fd5871d8fc56a Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:40:38 -0800
Subject: [PATCH 08/21] gnu: Add ghc-protolude.

* gnu/packages/haskell-xyz.scm (ghc-protolude): New variable.
---
 gnu/packages/haskell-xyz.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 2170aade2c..33cd674466 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -9281,6 +9281,33 @@ project-template tries to provide a canonical Haskell library for implementing
 the ideal templating system.")
     (license license:bsd-3)))
 
+(define-public ghc-protolude
+  (package
+    (name "ghc-protolude")
+    (version "0.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/protolude/protolude-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0zzkyxz0vmcbncpid7gp72fpjj0fla3gqhlfkij5c5lg12skjgfj"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-async" ,ghc-async)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-mtl-compat" ,ghc-mtl-compat)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)))
+    (home-page "https://github.com/protolude/protolude")
+    (synopsis "Sensible set of defaults for writing custom Preludes")
+    (description
+     "Protolude gives you sensible defaults for writing custom Preludes to
+replace the standard one provided by GHC.")
+    (license license:expat)))
+
 (define-public ghc-psqueues
   (package
     (name "ghc-psqueues")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #10: 0009-gnu-Add-ghc-pattern-arrows.patch --]
[-- Type: text/x-patch, Size: 1549 bytes --]

From ebc7a0a353d643fd2f160eced6520941e3166dff Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:41:40 -0800
Subject: [PATCH 09/21] gnu: Add ghc-pattern-arrows.

* gnu/packages/haskell-xyz.scm (ghc-pattern-arrows): New variable.
---
 gnu/packages/haskell-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 33cd674466..2f4b603059 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -8759,6 +8759,29 @@ of two versions of a source file.  It provides a good balance between
 performance, nice output for humans, and simplicity of implementation.")
     (license license:bsd-3)))
 
+(define-public ghc-pattern-arrows
+  (package
+    (name "ghc-pattern-arrows")
+    (version "0.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/pattern-arrows/pattern-arrows-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "13q7bj19hd60rnjfc05wxlyck8llxy11z3mns8kxg197wxrdkhkg"))))
+    (build-system haskell-build-system)
+    (home-page
+     "https://blog.functorial.com/posts/2013-10-27-Pretty-Printing-Arrows.html")
+    (synopsis "Arrows for Pretty Printing")
+    (description
+     "A library for generating concise pretty printers based on precedence
+rules.")
+    (license license:expat)))
+
 (define-public ghc-pcre-light
   (package
     (name "ghc-pcre-light")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #11: 0010-gnu-Add-ghc-language-javascript.patch --]
[-- Type: text/x-patch, Size: 1811 bytes --]

From 923fc58684717763fb0b3f9b4a589f75443b7979 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:43:44 -0800
Subject: [PATCH 10/21] gnu: Add ghc-language-javascript.

* gnu/packages/haskell-web.scm (ghc-language-javascript): New variable.
---
 gnu/packages/haskell-web.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 4ff6c2f32d..64ef299a2c 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1810,3 +1810,35 @@ declarative and monadic interface.")
 proposed by Google and Mozilla here
 @url{https://wiki.mozilla.org/DevTools/Features/SourceMap}.")
     (license license:bsd-3)))
+
+(define-public ghc-language-javascript
+  (package
+    (name "ghc-language-javascript")
+    (version "0.7.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/language-javascript/language-javascript-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "15bpqpkjf2y3fk8wff9zlnkpsjc63bnbvhlkxrs9alj0bikq17nk"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-blaze-builder" ,ghc-blaze-builder)
+       ("ghc-utf8-string" ,ghc-utf8-string)))
+    (native-inputs
+     `(("ghc-alex" ,ghc-alex)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-happy" ,ghc-happy)
+       ("ghc-hspec" ,ghc-hspec)
+       ("ghc-utf8-light" ,ghc-utf8-light)))
+    (home-page
+     "https://github.com/erikd/language-javascript")
+    (synopsis "Parser for JavaScript")
+    (description
+     "Parses Javascript into an Abstract Syntax Tree (AST).  Initially intended
+as frontend to hjsmin.")
+    (license license:bsd-3)))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #12: 0011-gnu-Add-ghc-bower-json.patch --]
[-- Type: text/x-patch, Size: 1884 bytes --]

From 6d58c61379a83fa82c6555bd9d57d570122a0edc Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:44:47 -0800
Subject: [PATCH 11/21] gnu: Add ghc-bower-json.

* gnu/packages/haskell-web.scm (ghc-bower-json): New variable.
---
 gnu/packages/haskell-web.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 64ef299a2c..6c5d2ac4e4 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1842,3 +1842,35 @@ proposed by Google and Mozilla here
      "Parses Javascript into an Abstract Syntax Tree (AST).  Initially intended
 as frontend to hjsmin.")
     (license license:bsd-3)))
+
+(define-public ghc-bower-json
+  (package
+    (name "ghc-bower-json")
+    (version "1.0.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/bower-json/bower-json-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0wvygg3rdbxzrmr61a9w6ddv9pfric85ih8hnxyk0ydzn7i59abs"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-aeson-better-errors" ,ghc-aeson-better-errors)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-transformers" ,ghc-transformers)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)))
+    (native-inputs
+     `(("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-hunit" ,ghc-tasty-hunit)))
+    (home-page "https://github.com/hdgarrood/bower-json")
+    (synopsis "Read bower.json from Haskell")
+    (description
+     "Bower is a package manager for the web (see http://bower.io).  This
+package provides a data type and ToJSON/FromJSON instances for Bower's package
+manifest file,bower.json.")
+    (license license:expat)))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #13: 0012-gnu-Add-ghc-aeson-better-errors.patch --]
[-- Type: text/x-patch, Size: 2021 bytes --]

From cfd79b3e95d659efc40e93c1318f3c03bad8378a Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:45:59 -0800
Subject: [PATCH 12/21] gnu: Add ghc-aeson-better-errors.

* gnu/packages/haskell-web.scm (ghc-aeson-better-errors): New variable.
---
 gnu/packages/haskell-web.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 6c5d2ac4e4..22ef3cdb4c 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1007,6 +1007,39 @@ the function @code{aesonQQ} that compile-time converts a string representation
 of a JSON value into a @code{Data.Aeson.Value}.")
     (license license:expat)))
 
+(define-public ghc-aeson-better-errors
+  (package
+    (name "ghc-aeson-better-errors")
+    (version "0.9.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/aeson-better-errors/aeson-better-errors-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "09vkyrhwak3bmpfsqcd2az8hfqqkxyhg468hv5avgisy0nzh3w38"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-dlist" ,ghc-dlist)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)
+       ("ghc-void" ,ghc-void)))
+    (home-page
+     "https://github.com/hdgarrood/aeson-better-errors")
+    (synopsis
+     "Better error messages when decoding JSON values in Haskell")
+    (description
+     "A small package which gives you the tools to build parsers to decode
+JSON values, and gives good error messages when parsing fails.  See also
+http://harry.garrood.me/blog/aeson-better-errors/.")
+    (license license:expat)))
+
 (define-public ghc-multipart
   (package
     (name "ghc-multipart")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #14: 0013-gnu-Add-ghc-assoc.patch --]
[-- Type: text/x-patch, Size: 1620 bytes --]

From a94a80685c8085f2fab0bd8c7c5a8c66a5d580cb Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:44:49 -0800
Subject: [PATCH 13/21] gnu: Add ghc-assoc.

* gnu/packages/haskell-xyz.scm (ghc-assoc): New variable.
---
 gnu/packages/haskell-xyz.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 2f4b603059..d43b5623f9 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -456,6 +456,34 @@ colored output using the ansi-terminal package.")
 style.")
     (license license:bsd-3)))
 
+(define-public ghc-assoc
+  (package
+    (name "ghc-assoc")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/assoc/assoc-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1m9n4vp190bvn2wcrd4ggfwa9pi93jp0zgx02mdgywn2zfidw020"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-bifunctors" ,ghc-bifunctors)
+       ("ghc-tagged" ,ghc-tagged)))
+    (home-page
+     "http://hackage.haskell.org/package/assoc")
+    (synopsis
+     "Swap and assoc: Symmetric and Semigroupy Bifunctors")
+    (description
+     "Provides generalisations of @code{swap :: (a,b) -> (b,a)} and
+@code{assoc :: ((a,b),c) -> (a,(b,c))} to @code{Bifunctor}s supporting
+similar operations (e.g. @code{Either}, @code{These}).")
+    (license license:bsd-3)))
+
 (define-public ghc-async
   (package
     (name "ghc-async")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #15: 0014-gnu-Add-ghc-these.patch --]
[-- Type: text/x-patch, Size: 2699 bytes --]

From 6cd563b4e1b3d3bcdf348d3745691a063230d2d8 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:45:42 -0800
Subject: [PATCH 14/21] gnu: Add ghc-these.

* gnu/packages/haskell-xyz.scm (ghc-these): New variable.
---
 gnu/packages/haskell-xyz.scm | 57 ++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index d43b5623f9..afe0023bdb 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -12000,6 +12000,63 @@ and @code{Eq} instances.  These instances used to live in the haskell-src-meta
 package, and that's where the version number started.")
     (license license:bsd-3)))
 
+(define-public ghc-these
+  (package
+    (name "ghc-these")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/these/these-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1k0pi65g7cm9hzdw6my6bzz2zvddkmj1qs45ymqmi316bpiixk3r"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-assoc" ,ghc-assoc)
+       ("ghc-semigroupoids" ,ghc-semigroupoids)
+       ("ghc-quickcheck" ,ghc-quickcheck)))
+    (arguments
+     `(#:cabal-revision
+       ("1"
+        "0923r86fnmgpx0msm68aszirh2n19nn5bccgjxfh2146jw4z7w3z")))
+    (home-page
+     "https://github.com/isomorphism/these")
+    (synopsis "Either-or-both data type")
+    (description
+     "This package provides a data type @code{These a b} which can
+hold a value of either type or values of each type.  This is usually
+thought of as an \"inclusive or\" type (contrasting @code{Either a b} as
+\"exclusive or\") or as an \"outer join\" type (contrasting @code{(a, b)}
+as \"inner join\").
+
+@code{data These a b = This a | That b | These a b}
+
+Since version 1, this package was split into parts:
+
+@itemize
+@item
+https://hackage.haskell.org/package/semialign For @code{Align} and
+@code{Zip} type-classes.
+@item
+https://hackage.haskell.org/package/semialign-indexed For
+@code{SemialignWithIndex} class, providing @code{ialignWith} and
+@code{izipWith}
+@item
+https://hackage.haskell.org/package/these-lens For lens combinators.
+@item
+http://hackage.haskell.org/package/monad-chronicle For transformers
+variant of @code{These}.
+@end itemize")
+    (license license:bsd-3)))
+
 (define-public ghc-threads
   (package
     (name "ghc-threads")
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #16: 0015-gnu-Add-ghc-semialign.patch --]
[-- Type: text/x-patch, Size: 2208 bytes --]

From 47fc05d223de2861f25d9acbcc4c9cea1d8736a9 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:48:25 -0800
Subject: [PATCH 15/21] gnu: Add ghc-semialign.

* gnu/packages/haskell-xyz.scm (ghc-semialign): New variable.
---
 gnu/packages/haskell-xyz.scm | 40 ++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index afe0023bdb..d1d98cb704 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -10519,6 +10519,46 @@ Haskell")
 a memory chunk that will be auto-scrubbed after it run out of scope.")
     (license license:bsd-3)))
 
+(define-public ghc-semialign
+  (package
+    (name "ghc-semialign")
+    (version "1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/semialign/semialign-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "004x0a80sqqdgvsyk4z0nasxpi6z3g1d8kgwj804bj9ka8dlc75m"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-these" ,ghc-these)
+       ("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-tagged" ,ghc-tagged)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-semigroupoids" ,ghc-semigroupoids)))
+    (arguments
+     `(#:cabal-revision
+       ("1"
+        "0qnqnyfng4kwy2h2anrcy5id2ijnawava3zcc5h5b8ri1y6ks6zi")))
+    (home-page
+     "https://github.com/isomorphism/these")
+    (synopsis
+     "Align and Zip type-classes from the common Semialign ancestor ")
+    (description
+     "The major use of @code{These} of this is provided by the
+@code{align} member of @code{Semialign} class, representing a
+generalized notion of \"zipping with padding\" that combines
+structures without truncating to the size of the smaller input.  It
+turns out that @code{zip} operation fits well the @code{Semialign}
+class, forming lattice-like structure.")
+    (license license:bsd-3)))
+
 (define-public ghc-semigroupoids
   (package
     (name "ghc-semigroupoids")
-- 
2.26.0


[-- Attachment #17: 0016-gnu-Add-ghc-happy-1.19.9.patch --]
[-- Type: text/x-patch, Size: 2857 bytes --]

From 68b5d6feb4ed68a1a55d848184505f76879afe6f Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:52:48 -0800
Subject: [PATCH 16/21] gnu: Add ghc-happy@1.19.9

* gnu/packages/purescript.scm (ghc-happy-1.19.9): New file, New variable.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add purescript.scm.
---
 gnu/local.mk                |  1 +
 gnu/packages/purescript.scm | 44 +++++++++++++++++++++++++++++++++++++
 2 files changed, 45 insertions(+)
 create mode 100644 gnu/packages/purescript.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index af79f9afed..001524f7d1 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -423,6 +423,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pretty-print.scm			\
   %D%/packages/protobuf.scm			\
   %D%/packages/pure.scm				\
+  %D%/packages/purescript.scm			\
   %D%/packages/pv.scm				\
   %D%/packages/python.scm			\
   %D%/packages/python-check.scm			\
diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
new file mode 100644
index 0000000000..ba90f9c23b
--- /dev/null
+++ b/gnu/packages/purescript.scm
@@ -0,0 +1,44 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages purescript)
+  #:use-module (gnu packages haskell-xyz)
+  #:use-module (gnu packages haskell-check)
+  #:use-module (gnu packages haskell-crypto)
+  #:use-module (gnu packages haskell-web)
+  #:use-module ((gnu packages python) #:select (python))
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix packages)
+  #:use-module (guix build-system haskell)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define ghc-happy-1.19.9
+  (package
+    (inherit ghc-happy)
+    (version "1.19.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/happy/happy-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "138xpxdb7x62lpmgmb6b3v3vgdqqvqn4273jaap3mjmc2gla709y"))))))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #18: 0017-gnu-Add-ghc-clock-0.7.2.patch --]
[-- Type: text/x-patch, Size: 1044 bytes --]

From 1c61c57b8703c312661c08f64653ff2fe9855c29 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:53:33 -0800
Subject: [PATCH 17/21] gnu: Add ghc-clock@0.7.2.

* gnu/packages/purescript.scm (ghc-clock-0.7.2): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index ba90f9c23b..d430e62fcd 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -42,3 +42,18 @@
        (sha256
         (base32
          "138xpxdb7x62lpmgmb6b3v3vgdqqvqn4273jaap3mjmc2gla709y"))))))
+
+(define ghc-clock-0.7.2
+  (package
+    (inherit ghc-clock)
+    (version "0.7.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/"
+             "clock/"
+             "clock-" version ".tar.gz"))
+       (sha256
+        (base32
+         "07v91s20halsqjmziqb1sqjp2sjpckl9by7y28aaklwqi2bh2rl8"))))))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #19: 0018-gnu-Add-ghc-glob-0.9.3.patch --]
[-- Type: text/x-patch, Size: 1063 bytes --]

From e16bd1b3d73a076b418a582fc7dd9ef3369e1050 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:54:12 -0800
Subject: [PATCH 18/21] gnu: Add ghc-glob@0.9.3.

* gnu/packages/purescript.scm (ghc-glob-0.9.3): New variable.
---
 gnu/packages/purescript.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index d430e62fcd..8bfbf5411d 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -57,3 +57,17 @@
        (sha256
         (base32
          "07v91s20halsqjmziqb1sqjp2sjpckl9by7y28aaklwqi2bh2rl8"))))))
+
+(define ghc-glob-0.9.3
+  (package
+    (inherit ghc-glob)
+    (version "0.9.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "Glob-" version "/"
+                           "Glob-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1s69lk3ic6zlkikhvb78ly9wl3g70a1h1m6ndhsca01pp8z8axrs"))))))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #20: 0019-gnu-Add-ghc-ansi-terminal-0.8.2.patch --]
[-- Type: text/x-patch, Size: 1086 bytes --]

From 924354700f53f7a7a3b5f6f2ed33e8b6cfc38ae7 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:54:51 -0800
Subject: [PATCH 19/21] gnu: Add ghc-ansi-terminal@0.8.2.

* gnu/packages/purescript.scm (ghc-ansi-terminal-0.8.2): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 8bfbf5411d..30abc05c2e 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -71,3 +71,18 @@
        (sha256
         (base32
          "1s69lk3ic6zlkikhvb78ly9wl3g70a1h1m6ndhsca01pp8z8axrs"))))))
+
+(define ghc-ansi-terminal-0.8.2
+  (package
+    (inherit ghc-ansi-terminal)
+    (version "0.8.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/ansi-terminal/ansi-terminal-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "147ss9wz03ww6ypbv6yh5vi1wfrfcaqm8r6nxh50vnp7254359wh"))))))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #21: 0020-gnu-Add-ghc-network-3.0.1.1.patch --]
[-- Type: text/x-patch, Size: 1066 bytes --]

From ce9c5373fb530a3f49224cace425c04c1582d721 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:56:13 -0800
Subject: [PATCH 20/21] gnu: Add ghc-network@3.0.1.1

* gnu/packages/purescript.scm (ghc-network-3.0.1.1): New variable.
---
 gnu/packages/purescript.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 30abc05c2e..75e540e219 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -86,3 +86,18 @@
        (sha256
         (base32
          "147ss9wz03ww6ypbv6yh5vi1wfrfcaqm8r6nxh50vnp7254359wh"))))))
+
+(define ghc-network-3.0.1.1
+  (package
+    (inherit ghc-network)
+    (version "3.0.1.1")
+    (source
+     (origin
+       (inherit (package-source ghc-network))
+       (uri (string-append
+             "mirror://hackage/package/network/network-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1xacvl5wf47cz61igb94zf961b9ks0yhr02myxgjf53clm70dg6j"))))))
-- 
2.26.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #22: 0021-gnu-Add-purescript.patch --]
[-- Type: text/x-patch, Size: 4145 bytes --]

From 747006cfc8c3739912138d9c3ec5f60f204e8758 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 09:21:50 -0800
Subject: [PATCH 21/21] gnu: Add purescript.

* gnu/packages/purescript.scm (purescript): New variable.
---
 gnu/packages/purescript.scm | 89 +++++++++++++++++++++++++++++++++++++
 1 file changed, 89 insertions(+)

diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 75e540e219..cec530dcdf 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -101,3 +101,92 @@
        (sha256
         (base32
          "1xacvl5wf47cz61igb94zf961b9ks0yhr02myxgjf53clm70dg6j"))))))
+
+(define-public purescript
+  (package
+    (name "purescript")
+    (version "0.13.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/purescript/purescript-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0plqzlcfaw2ik2im7aq8yy1b1y88cnc8qd7wwaayndbdz060s9j4"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-glob" ,ghc-glob-0.9.3)
+       ("ghc-aeson" ,ghc-aeson)
+       ("ghc-aeson-better-errors" ,ghc-aeson-better-errors)
+       ("ghc-aeson-pretty" ,ghc-aeson-pretty)
+       ("ghc-ansi-terminal" ,ghc-ansi-terminal-0.8.2)
+       ("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-blaze-html" ,ghc-blaze-html)
+       ("ghc-bower-json" ,ghc-bower-json)
+       ("ghc-boxes" ,ghc-boxes)
+       ("ghc-cheapskate" ,ghc-cheapskate)
+       ("ghc-clock" ,ghc-clock-0.7.2)
+       ("ghc-cryptonite" ,ghc-cryptonite)
+       ("ghc-data-ordlist" ,ghc-data-ordlist)
+       ("ghc-dlist" ,ghc-dlist)
+       ("ghc-edit-distance" ,ghc-edit-distance)
+       ("ghc-file-embed" ,ghc-file-embed)
+       ("ghc-fsnotify" ,ghc-fsnotify)
+       ("ghc-happy" ,ghc-happy)
+       ("ghc-language-javascript" ,ghc-language-javascript)
+       ("ghc-lifted-async" ,ghc-lifted-async)
+       ("ghc-lifted-base" ,ghc-lifted-base)
+       ("ghc-memory" ,ghc-memory)
+       ("ghc-microlens-platform" ,ghc-microlens-platform)
+       ("ghc-monad-control" ,ghc-monad-control)
+       ("ghc-monad-logger" ,ghc-monad-logger)
+       ("ghc-network" ,ghc-network-3.0.1.1)
+       ("ghc-parallel" ,ghc-parallel)
+       ("ghc-pattern-arrows" ,ghc-pattern-arrows)
+       ("ghc-protolude" ,ghc-protolude)
+       ("ghc-regex-tdfa" ,ghc-regex-tdfa)
+       ("ghc-safe" ,ghc-safe)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-semialign" ,ghc-semialign)
+       ("ghc-semigroups" ,ghc-semigroups)
+       ("ghc-sourcemap" ,ghc-sourcemap)
+       ("ghc-split" ,ghc-split)
+       ("ghc-stringsearch" ,ghc-stringsearch)
+       ("ghc-syb" ,ghc-syb)
+       ("ghc-these" ,ghc-these)
+       ("ghc-transformers-base" ,ghc-transformers-base)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-utf8-string" ,ghc-utf8-string)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint)
+       ("ghc-http-types" ,ghc-http-types)
+       ("ghc-network" ,ghc-network)
+       ("ghc-optparse-applicative" ,ghc-optparse-applicative)
+       ("ghc-wai" ,ghc-wai)
+       ("ghc-wai-websockets" ,ghc-wai-websockets)
+       ("ghc-warp" ,ghc-warp)
+       ("ghc-websockets" ,ghc-websockets)
+       ("ghc-gitrev" ,ghc-gitrev)))
+    (native-inputs
+     `(("ghc-happy" ,ghc-happy-1.19.9)
+       ("ghc-hunit" ,ghc-hunit)
+       ("ghc-hspec" ,ghc-hspec)
+       ("hspec-discover" ,hspec-discover)
+       ("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-hspec" ,ghc-tasty-hspec)))
+    (arguments
+     `(;; Tests require npm
+       #:tests? #f
+       ;; Haddock fails
+       #:haddock? #f
+       #:configure-flags '("--flags=release")))
+    (home-page "https://www.purescript.org/")
+    (synopsis "Haskell inspired programming language compiling to JavaScript")
+    (description
+     "A small strongly, statically typed programming language with
+expressive types, inspired by Haskell and compiling to JavaScript.")
+    (license license:bsd-3)))
-- 
2.26.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#38596] [PATCH] gnu: Add PureScript.
  2020-04-18 22:31     ` John Soo
@ 2020-04-21  7:55       ` Christopher Baines
  2020-05-08  0:32         ` John Soo
  0 siblings, 1 reply; 9+ messages in thread
From: Christopher Baines @ 2020-04-21  7:55 UTC (permalink / raw)
  To: John Soo; +Cc: 38596

[-- Attachment #1: Type: text/plain, Size: 3167 bytes --]


John Soo <jsoo1@asu.edu> writes:

> Christopher Baines <mail@cbaines.net> writes:
>
>> I've had an initial look through these now, sorry it's taken so long!
>
> No problem. I was thinking I ought to do some qa and review, myself.
>
>> ghc-utf8-light could do with a better description, something a little
>> more informative.
>
> I think I made this better as well as fixing some other descriptions
> lacking full sentences.

Great :)

>> The ghc-sourcemap and ghc-mtl-compat tests are disabled, it would be
>> good to at least add a comments as to why.
>
> I added a comment for sourcemap. I realized mtl-compat's tests and
> haddocks worked just fine so those are re-enabled.

Cool.

>> The ghc-protolude synopsis could potentially be more informative.
>
> I think I added some more commentary there. It's a bit tricky since I
> have not used protolude myself so I am not sure what to provide aside
> from their stated description.

Sure, I think it's fine now.

Some really minor description things I missed earlier:

ghc-aeson-better-errors, ghc-transformers and ghc-websockets have URLs
in the description, @url could probably be used.

I'd also remove the following from the ghc-bower-json description, it
reads more like uninformative advertising to me and isn't really
relevant to this specific package:

  Bower is a package manager for the web (see http://bower.io).

>> I think adding specific versions of dependencies for purescript is OK,
>> but only if they're justified, like if the package only builds with that
>> version. The justification should also be noted in the purescript
>> package description.
>
> Ah, thanks. Would a comment above the dependencies suffice? The packages
> won't be searchable since they are not define-public (yet?).

Maybe it would be good to note why the package in Guix didn't work, like
I tried to use ghc-happy@1.19.12, and the build phase failed with some
type errors. That'll at least point out clearly that there's an
incompatability. I don't think much detail is needed, the following
would be fine.

     `(("ghc-happy" ,ghc-happy-1.19.9)  ; build fails with 1.19.12

>> I don't think it's necessary to go through all the custom versions of
>> packages you've added, but it would be good to at least see if there's
>> one case where the upstream specification is overly strict, and the
>> slightly different version from Guix would work. That at least would
>> provide an example of how to override versions going forward.
>
> Ah thanks for the suggestion here. I found one that could be taken from
> the existing package in (gnu packages haskell-xyz). The rest seemed to
> be either pinned exactly or too strict to take from guix packages.

Thanks, although my intent was more about adding something like this.

  #:phases
  (modify-phases %standard-phases
    (add-after 'unpack 'patch
      (lambda _
        (substitute* "purescript.cabal"
          (("clock .*$")
           "clock,\n"))
        #t)))))


Now I'm not sure quite how risky this is, the purescript tests aren't
being run, but given this is Haskell and it compiles, hopefully that
provides some guarantees.

What do you think?

Thanks,

Chris

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 962 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#38596] [PATCH] gnu: Add PureScript.
  2020-04-21  7:55       ` Christopher Baines
@ 2020-05-08  0:32         ` John Soo
  2020-05-08  9:13           ` bug#38596: " Christopher Baines
  0 siblings, 1 reply; 9+ messages in thread
From: John Soo @ 2020-05-08  0:32 UTC (permalink / raw)
  To: Christopher Baines; +Cc: 38596

[-- Attachment #1: Type: text/plain, Size: 1974 bytes --]

Hello,

Christopher Baines <mail@cbaines.net> writes:

> Some really minor description things I missed earlier:
>
> ghc-aeson-better-errors, ghc-transformers and ghc-websockets have URLs
> in the description, @url could probably be used.
>
> I'd also remove the following from the ghc-bower-json description, it
> reads more like uninformative advertising to me and isn't really
> relevant to this specific package:
>
>   Bower is a package manager for the web (see http://bower.io).

Done!

> Maybe it would be good to note why the package in Guix didn't work, like
> I tried to use ghc-happy@1.19.12, and the build phase failed with some
> type errors. That'll at least point out clearly that there's an
> incompatability. I don't think much detail is needed, the following
> would be fine.
>
>      `(("ghc-happy" ,ghc-happy-1.19.9)  ; build fails with 1.19.12

Done!

>> Ah thanks for the suggestion here. I found one that could be taken from
>> the existing package in (gnu packages haskell-xyz). The rest seemed to
>> be either pinned exactly or too strict to take from guix packages.
>
> Thanks, although my intent was more about adding something like this.
>
>   #:phases
>   (modify-phases %standard-phases
>     (add-after 'unpack 'patch
>       (lambda _
>         (substitute* "purescript.cabal"
>           (("clock .*$")
>            "clock,\n"))
>         #t)))))

With the addition of a patch I was able to relax most of the package
versions I introduced to ones we have. The final remaining required
dependency seems to be happy which I kept at 1.19.9.

> Now I'm not sure quite how risky this is, the purescript tests aren't
> being run, but given this is Haskell and it compiles, hopefully that
> provides some guarantees.
>
> What do you think?

My only caveat too is now I have not really tested this version. I had
done some work with a prior version.  I wish I could run the tests but
they seem to rely heavily on npm and bower.

Thanks again,

John


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-ghc-utf8-light.patch --]
[-- Type: text/x-patch, Size: 1693 bytes --]

From 561ac9e3b4fac1aa57e41173db4eeeed1bbd4f41 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:00:31 -0800
Subject: [PATCH 01/17] gnu: Add ghc-utf8-light.

* gnu/packages/haskell-xyz.scm (ghc-utf8-light): New variable.
---
 gnu/packages/haskell-xyz.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index c9119efd69..1ff6f30141 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -12671,6 +12671,31 @@ a style ready for qualification, that is, you should import them by
 parser that uses ByteStrings for parsing and representing the URI data.")
     (license license:bsd-3)))
 
+(define-public ghc-utf8-light
+  (package
+    (name "ghc-utf8-light")
+    (version "0.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/utf8-light/utf8-light-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0rwyc5z331yfnm4hpx0sph6i1zvkd1z10vvglhnp0vc9wy644k0q"))))
+    (build-system haskell-build-system)
+    (home-page
+     "http://hackage.haskell.org/package/utf8-light")
+    (synopsis "Lightweight unicode support for Haskell")
+    (description
+     "This package profides a class for encoding and decoding UTF8 strings
+with instances for several common types.  It also includes several functions
+for working with UTF8.  It aims to be lightweight, depending only on Base and
+including only one module.")
+    (license license:bsd-3)))
+
 (define-public ghc-utf8-string
   (package
     (name "ghc-utf8-string")
-- 
2.26.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-Add-ghc-transformers.patch --]
[-- Type: text/x-patch, Size: 2408 bytes --]

From 5e2bedbb1a6aec231841af1ad4557291b641d857 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:04:13 -0800
Subject: [PATCH 02/17] gnu: Add ghc-transformers.

* gnu/packages/haskell-xyz.scm (ghc-transformers): New variable.
---
 gnu/packages/haskell-xyz.scm | 39 ++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 1ff6f30141..6a4d958490 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -12127,6 +12127,45 @@ from a shell.  The @code{tldr} pages are a community effort to simplify the
 man pages with practical examples.")
     (license license:bsd-3)))
 
+(define-public ghc-transformers
+  (package
+    (name "ghc-transformers")
+    (version "0.5.6.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/transformers/transformers-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0v66j5k0xqk51pmca55wq192qyw2p43s2mgxlz4f95q2c1fpjs5n"))))
+    (build-system haskell-build-system)
+    (home-page
+     "http://hackage.haskell.org/package/transformers")
+    (synopsis "Concrete functor and monad transformers")
+    (description
+     "Transformers provides functor and monad transformers, inspired by the
+paper \"Functional Programming with Overloading and Higher-Order
+Polymorphism\", by Mark P Jones, in Advanced School of Functional Programming,
+1995 @url{http://web.cecs.pdx.edu/~mpj/pubs/springschool.html}.
+
+This package contains:
+@itemize
+@item the monad transformer class (in @code{Control.Monad.Trans.Class})
+@item concrete functor and monad transformers, each with associated operations
+and functions to lift operations associated with other transformers.
+@end itemize
+
+This package can be used on its own in portable Haskell code, in which case
+operations need to be manually lifted through transformer stacks (see
+@code{Control.Monad.Trans.Class} for some examples).  Alternatively, it can be
+used with the non-portable monad classes in the mtl or monads-tf packages,
+which automatically lift operations introduced by monad transformers through
+other transformers.")
+    (license license:bsd-3)))
+
 (define-public ghc-transformers-base
   (package
     (name "ghc-transformers-base")
-- 
2.26.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-gnu-Add-ghc-tasty-hspec.patch --]
[-- Type: text/x-patch, Size: 1866 bytes --]

From 13e623d00b1cdbc525afc810e58e488de346beb4 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:06:52 -0800
Subject: [PATCH 03/17] gnu: Add ghc-tasty-hspec.

* gnu/packages/haskell-check.scm (ghc-tasty-hspec): New variable.
---
 gnu/packages/haskell-check.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index c6e89460ea..7942f2019a 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -215,6 +215,39 @@ with the @url{https://hackage.haskell.org/package/tasty, tasty testing
 framework}.")
     (license license:bsd-3)))
 
+(define-public ghc-tasty-hspec
+  (package
+    (name "ghc-tasty-hspec")
+    (version "1.1.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/tasty-hspec/tasty-hspec-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0i9kdzjpk750sa078jj3iyhp72k0177zk7vxl131r6dkyz09x27y"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-hspec" ,ghc-hspec)
+       ("ghc-hspec-core" ,ghc-hspec-core)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-smallcheck" ,ghc-tasty-smallcheck)
+       ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)))
+    (arguments
+     `(#:cabal-revision
+       ("4" "1yppwhs2r2rlwrzli9ccv5ldgl95h5p7pqhsr898r3das6daf6sk")))
+    (home-page
+     "https://github.com/mitchellwrosen/tasty-hspec")
+    (synopsis
+     "Hspec support for the Tasty test framework")
+    (description
+     "This package provides a Tasty provider for Hspec test suites.")
+    (license license:bsd-3)))
+
 (define-public ghc-tasty-hunit
   (package
     (name "ghc-tasty-hunit")
-- 
2.26.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0004-gnu-Add-ghc-websockets.patch --]
[-- Type: text/x-patch, Size: 2637 bytes --]

From 7c49c8e1b5ba6e9b5acd8e3de4cc30815a156f39 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:12:42 -0800
Subject: [PATCH 04/17] gnu: Add ghc-websockets.

* gnu/packages/haskell-web.scm (ghc-websockets): New variable.
---
 gnu/packages/haskell-web.scm | 51 ++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 05be862a85..09ed793323 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -655,6 +655,57 @@ limitation, automatic pruning, energy saving and replay resistance.")
 a WAI handler, via the native Haskell TLS implementation.")
     (license license:expat)))
 
+(define-public ghc-websockets
+  (package
+    (name "ghc-websockets")
+    (version "0.12.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/websockets/websockets-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1vp3790w3hmr6v96314vdx74f7sg2c7hvnc93gafq0xhbxnr7nvx"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-base64-bytestring" ,ghc-base64-bytestring)
+       ("ghc-bytestring-builder" ,ghc-bytestring-builder)
+       ("ghc-case-insensitive" ,ghc-case-insensitive)
+       ("ghc-network" ,ghc-network)
+       ("ghc-random" ,ghc-random)
+       ("ghc-sha" ,ghc-sha)
+       ("ghc-streaming-commons" ,ghc-streaming-commons)
+       ("ghc-entropy" ,ghc-entropy)))
+    (native-inputs
+     `(("ghc-hunit" ,ghc-hunit)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-test-framework" ,ghc-test-framework)
+       ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
+       ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)))
+    (home-page "https://jaspervdj.be/websockets/")
+    (synopsis
+     "Write WebSocket-capable servers in Haskell")
+    (description
+     "This library allows you to write WebSocket-capable servers.
+
+An example server:
+@url{https://github.com/jaspervdj/websockets/blob/master/example/server.lhs}
+An example client:
+@url{https://github.com/jaspervdj/websockets/blob/master/example/client.hs}
+
+See also:
+@itemize
+@item The specification of the WebSocket protocol:
+@url{http://www.whatwg.org/specs/web-socket-protocol/}
+@item The JavaScript API for dealing with WebSockets:
+@url{http://www.w3.org/TR/websockets/}
+@end itemize")
+    (license license:bsd-3)))
+
 (define-public ghc-xss-sanitize
   (package
     (name "ghc-xss-sanitize")
-- 
2.26.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: 0005-gnu-Add-ghc-wai-websockets.patch --]
[-- Type: text/x-patch, Size: 1712 bytes --]

From 553c2705238e7726650ef796785249963ce2c574 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:37:29 -0800
Subject: [PATCH 05/17] gnu: Add ghc-wai-websockets.

* gnu/packages/haskell-web.scm (ghc-wai-websockets): New variable.
---
 gnu/packages/haskell-web.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 09ed793323..089df39ea6 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -706,6 +706,36 @@ See also:
 @end itemize")
     (license license:bsd-3)))
 
+(define-public ghc-wai-websockets
+  (package
+    (name "ghc-wai-websockets")
+    (version "3.0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/wai-websockets/wai-websockets-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0b2xmdsrsqpssyib53wbr6r8hf75789ndyyanv37sv99iyqcwz4i"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-wai" ,ghc-wai)
+       ("ghc-case-insensitive" ,ghc-case-insensitive)
+       ("ghc-network" ,ghc-network)
+       ("ghc-websockets" ,ghc-websockets)
+       ("ghc-http-types" ,ghc-http-types)))
+    (arguments
+     `(#:configure-flags '("--flags=-example")))
+    (home-page "https://github.com/yesodweb/wai")
+    (synopsis
+     "Provide a bridge between WAI and the websockets package")
+    (description
+     "Use websockets with WAI applications, primarily those hosted via Warp.")
+    (license license:expat)))
+
 (define-public ghc-xss-sanitize
   (package
     (name "ghc-xss-sanitize")
-- 
2.26.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: 0006-gnu-Add-ghc-sourcemap.patch --]
[-- Type: text/x-patch, Size: 1914 bytes --]

From 431ae381fde5a81b601967171b488cc0fe118fbb Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:39:09 -0800
Subject: [PATCH 06/17] gnu: Add ghc-sourcemap.

gnu/pacakges/haskell-web.scm (ghc-sourcemap): New variable.
---
 gnu/packages/haskell-web.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 089df39ea6..39ffe0f8d5 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1774,3 +1774,37 @@ non-Haskell dependencies.")
 and Perl's @code{Web::Scraper}.  Scalpel builds on top of TagSoup to provide a
 declarative and monadic interface.")
     (license license:asl2.0)))
+
+(define-public ghc-sourcemap
+  (package
+    (name "ghc-sourcemap")
+    (version "0.1.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/sourcemap/sourcemap-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0ynfm44ym8y592wnzdwa0d05dbkffyyg5sm26y5ylzpynk64r85r"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-utf8-string" ,ghc-utf8-string)))
+    (arguments
+     `(#:tests? #f ; FIXME: Fail to compile
+       #:cabal-revision
+       ("1" "1f7q44ar6qfip8fsllg43jyn7r15ifn2r0vz32cbmx0sb0d38dax")))
+    (home-page
+     "http://hackage.haskell.org/package/sourcemap")
+    (synopsis
+     "Implementation of source maps as proposed by Google and Mozilla")
+    (description
+     "Sourcemap provides an implementation of source maps, revision 3,
+proposed by Google and Mozilla here
+@url{https://wiki.mozilla.org/DevTools/Features/SourceMap}.")
+    (license license:bsd-3)))
-- 
2.26.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #8: 0007-gnu-Add-ghc-mtl-compat.patch --]
[-- Type: text/x-patch, Size: 2151 bytes --]

From 9b8e9092da36c9bfd681828126c443957727679d Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 09:32:28 -0800
Subject: [PATCH 07/17] gnu: Add ghc-mtl-compat.

* gnu/packages/haskell-xyz.scm (ghc-mtl-compat): New variable.
---
 gnu/packages/haskell-xyz.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 6a4d958490..05c0524e94 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -7631,6 +7631,41 @@ semi-direct products, \"deletable\" monoids, \"split\" monoids, and
 \"cut\" monoids.")
     (license license:bsd-3)))
 
+(define-public ghc-mtl-compat
+  (package
+    (name "ghc-mtl-compat")
+    (version "0.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/mtl-compat/mtl-compat-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "17iszr5yb4f17g8mq6i74hsamii8z6m2qfsmgzs78mhiwa7kjm8r"))))
+    (build-system haskell-build-system)
+    (home-page
+     "https://github.com/haskell-compat/mtl-compat")
+    (synopsis
+     "Backported Control.Monad.Except module from mtl")
+    (description
+     "This package backports the Control.Monad.Except module from mtl (if
+using mtl-2.2.0.1 or earlier), which reexports the ExceptT monad transformer
+and the MonadError class.
+
+This package should only be used if there is a need to use the
+Control.Monad.Except module specifically.  If you just want the mtl class
+instances for ExceptT, use transformers-compat instead, since mtl-compat does
+nothing but reexport the instances from that package.
+
+Note that unlike how mtl-2.2 or later works, the Control.Monad.Except
+module defined in this package exports all of ExceptT's monad class instances.
+Therefore, you may have to declare @code{import Control.Monad.Except ()} at
+the top of your file to get all of the ExceptT instances in scope.")
+    (license license:bsd-3)))
+
 (define-public ghc-murmur-hash
   (package
     (name "ghc-murmur-hash")
-- 
2.26.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #9: 0008-gnu-Add-ghc-protolude.patch --]
[-- Type: text/x-patch, Size: 1698 bytes --]

From d08fe10ec20c748667d7218c26612294b9f029e7 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:40:38 -0800
Subject: [PATCH 08/17] gnu: Add ghc-protolude.

* gnu/packages/haskell-xyz.scm (ghc-protolude): New variable.
---
 gnu/packages/haskell-xyz.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 05c0524e94..eef1765a71 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -9281,6 +9281,33 @@ project-template tries to provide a canonical Haskell library for implementing
 the ideal templating system.")
     (license license:bsd-3)))
 
+(define-public ghc-protolude
+  (package
+    (name "ghc-protolude")
+    (version "0.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/protolude/protolude-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0zzkyxz0vmcbncpid7gp72fpjj0fla3gqhlfkij5c5lg12skjgfj"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-async" ,ghc-async)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-mtl-compat" ,ghc-mtl-compat)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)))
+    (home-page "https://github.com/protolude/protolude")
+    (synopsis "Sensible set of defaults for writing custom Preludes")
+    (description
+     "Protolude gives you sensible defaults for writing custom Preludes to
+replace the standard one provided by GHC.")
+    (license license:expat)))
+
 (define-public ghc-psqueues
   (package
     (name "ghc-psqueues")
-- 
2.26.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #10: 0009-gnu-Add-ghc-pattern-arrows.patch --]
[-- Type: text/x-patch, Size: 1549 bytes --]

From 35d1ff83d469f0bb8323a142a3d7ea9656e74ab0 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:41:40 -0800
Subject: [PATCH 09/17] gnu: Add ghc-pattern-arrows.

* gnu/packages/haskell-xyz.scm (ghc-pattern-arrows): New variable.
---
 gnu/packages/haskell-xyz.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index eef1765a71..3f9fd167d1 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -8759,6 +8759,29 @@ of two versions of a source file.  It provides a good balance between
 performance, nice output for humans, and simplicity of implementation.")
     (license license:bsd-3)))
 
+(define-public ghc-pattern-arrows
+  (package
+    (name "ghc-pattern-arrows")
+    (version "0.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/pattern-arrows/pattern-arrows-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "13q7bj19hd60rnjfc05wxlyck8llxy11z3mns8kxg197wxrdkhkg"))))
+    (build-system haskell-build-system)
+    (home-page
+     "https://blog.functorial.com/posts/2013-10-27-Pretty-Printing-Arrows.html")
+    (synopsis "Arrows for Pretty Printing")
+    (description
+     "A library for generating concise pretty printers based on precedence
+rules.")
+    (license license:expat)))
+
 (define-public ghc-pcre-light
   (package
     (name "ghc-pcre-light")
-- 
2.26.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #11: 0010-gnu-Add-ghc-language-javascript.patch --]
[-- Type: text/x-patch, Size: 1811 bytes --]

From e94d0ec89ba9cd08451340895dfa6ff89c91acd8 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:43:44 -0800
Subject: [PATCH 10/17] gnu: Add ghc-language-javascript.

* gnu/packages/haskell-web.scm (ghc-language-javascript): New variable.
---
 gnu/packages/haskell-web.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 39ffe0f8d5..314e5b1e1b 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1808,3 +1808,35 @@ declarative and monadic interface.")
 proposed by Google and Mozilla here
 @url{https://wiki.mozilla.org/DevTools/Features/SourceMap}.")
     (license license:bsd-3)))
+
+(define-public ghc-language-javascript
+  (package
+    (name "ghc-language-javascript")
+    (version "0.7.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/language-javascript/language-javascript-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "15bpqpkjf2y3fk8wff9zlnkpsjc63bnbvhlkxrs9alj0bikq17nk"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-blaze-builder" ,ghc-blaze-builder)
+       ("ghc-utf8-string" ,ghc-utf8-string)))
+    (native-inputs
+     `(("ghc-alex" ,ghc-alex)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-happy" ,ghc-happy)
+       ("ghc-hspec" ,ghc-hspec)
+       ("ghc-utf8-light" ,ghc-utf8-light)))
+    (home-page
+     "https://github.com/erikd/language-javascript")
+    (synopsis "Parser for JavaScript")
+    (description
+     "Parses Javascript into an Abstract Syntax Tree (AST).  Initially intended
+as frontend to hjsmin.")
+    (license license:bsd-3)))
-- 
2.26.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #12: 0011-gnu-Add-ghc-bower-json.patch --]
[-- Type: text/x-patch, Size: 1820 bytes --]

From 74e0c2704ffbb46542155da1cc984947cb64cf42 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:44:47 -0800
Subject: [PATCH 11/17] gnu: Add ghc-bower-json.

* gnu/packages/haskell-web.scm (ghc-bower-json): New variable.
---
 gnu/packages/haskell-web.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 314e5b1e1b..aae1209218 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1840,3 +1840,34 @@ proposed by Google and Mozilla here
      "Parses Javascript into an Abstract Syntax Tree (AST).  Initially intended
 as frontend to hjsmin.")
     (license license:bsd-3)))
+
+(define-public ghc-bower-json
+  (package
+    (name "ghc-bower-json")
+    (version "1.0.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/bower-json/bower-json-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0wvygg3rdbxzrmr61a9w6ddv9pfric85ih8hnxyk0ydzn7i59abs"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-aeson-better-errors" ,ghc-aeson-better-errors)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-transformers" ,ghc-transformers)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)))
+    (native-inputs
+     `(("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-hunit" ,ghc-tasty-hunit)))
+    (home-page "https://github.com/hdgarrood/bower-json")
+    (synopsis "Read bower.json from Haskell")
+    (description
+     "This package provides a data type and ToJSON/FromJSON instances for
+Bower's package manifest file, bower.json.")
+    (license license:expat)))
-- 
2.26.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #13: 0012-gnu-Add-ghc-aeson-better-errors.patch --]
[-- Type: text/x-patch, Size: 2005 bytes --]

From d0ae54526bbad16610e4b1446c2f0d6f41ed0767 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 07:45:59 -0800
Subject: [PATCH 12/17] gnu: Add ghc-aeson-better-errors.

* gnu/packages/haskell-web.scm (ghc-aeson-better-errors): New variable.
---
 gnu/packages/haskell-web.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index aae1209218..4689025432 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1005,6 +1005,39 @@ the function @code{aesonQQ} that compile-time converts a string representation
 of a JSON value into a @code{Data.Aeson.Value}.")
     (license license:expat)))
 
+(define-public ghc-aeson-better-errors
+  (package
+    (name "ghc-aeson-better-errors")
+    (version "0.9.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/aeson-better-errors/aeson-better-errors-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "09vkyrhwak3bmpfsqcd2az8hfqqkxyhg468hv5avgisy0nzh3w38"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-dlist" ,ghc-dlist)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)
+       ("ghc-void" ,ghc-void)))
+    (home-page
+     "https://github.com/hdgarrood/aeson-better-errors")
+    (synopsis
+     "Better error messages when decoding JSON values in Haskell")
+    (description
+     "Gives you the tools to build parsers to decode JSON values, and gives
+good error messages when parsing fails.  See also
+@url{http://harry.garrood.me/blog/aeson-better-errors/}.")
+    (license license:expat)))
+
 (define-public ghc-multipart
   (package
     (name "ghc-multipart")
-- 
2.26.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #14: 0013-gnu-Add-ghc-assoc.patch --]
[-- Type: text/x-patch, Size: 1620 bytes --]

From 1089e1bd113f1b8175ac87452b10cfa22195dbd0 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:44:49 -0800
Subject: [PATCH 13/17] gnu: Add ghc-assoc.

* gnu/packages/haskell-xyz.scm (ghc-assoc): New variable.
---
 gnu/packages/haskell-xyz.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 3f9fd167d1..a54abd40f5 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -456,6 +456,34 @@ colored output using the ansi-terminal package.")
 style.")
     (license license:bsd-3)))
 
+(define-public ghc-assoc
+  (package
+    (name "ghc-assoc")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/assoc/assoc-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1m9n4vp190bvn2wcrd4ggfwa9pi93jp0zgx02mdgywn2zfidw020"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-bifunctors" ,ghc-bifunctors)
+       ("ghc-tagged" ,ghc-tagged)))
+    (home-page
+     "http://hackage.haskell.org/package/assoc")
+    (synopsis
+     "Swap and assoc: Symmetric and Semigroupy Bifunctors")
+    (description
+     "Provides generalisations of @code{swap :: (a,b) -> (b,a)} and
+@code{assoc :: ((a,b),c) -> (a,(b,c))} to @code{Bifunctor}s supporting
+similar operations (e.g. @code{Either}, @code{These}).")
+    (license license:bsd-3)))
+
 (define-public ghc-async
   (package
     (name "ghc-async")
-- 
2.26.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #15: 0014-gnu-Add-ghc-these.patch --]
[-- Type: text/x-patch, Size: 2699 bytes --]

From 1b1e26acc3aa293cd17a3b0224a76abacf44f96c Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:45:42 -0800
Subject: [PATCH 14/17] gnu: Add ghc-these.

* gnu/packages/haskell-xyz.scm (ghc-these): New variable.
---
 gnu/packages/haskell-xyz.scm | 57 ++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index a54abd40f5..51e447febd 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -12000,6 +12000,63 @@ and @code{Eq} instances.  These instances used to live in the haskell-src-meta
 package, and that's where the version number started.")
     (license license:bsd-3)))
 
+(define-public ghc-these
+  (package
+    (name "ghc-these")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/these/these-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1k0pi65g7cm9hzdw6my6bzz2zvddkmj1qs45ymqmi316bpiixk3r"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-aeson" ,ghc-aeson)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-assoc" ,ghc-assoc)
+       ("ghc-semigroupoids" ,ghc-semigroupoids)
+       ("ghc-quickcheck" ,ghc-quickcheck)))
+    (arguments
+     `(#:cabal-revision
+       ("1"
+        "0923r86fnmgpx0msm68aszirh2n19nn5bccgjxfh2146jw4z7w3z")))
+    (home-page
+     "https://github.com/isomorphism/these")
+    (synopsis "Either-or-both data type")
+    (description
+     "This package provides a data type @code{These a b} which can
+hold a value of either type or values of each type.  This is usually
+thought of as an \"inclusive or\" type (contrasting @code{Either a b} as
+\"exclusive or\") or as an \"outer join\" type (contrasting @code{(a, b)}
+as \"inner join\").
+
+@code{data These a b = This a | That b | These a b}
+
+Since version 1, this package was split into parts:
+
+@itemize
+@item
+https://hackage.haskell.org/package/semialign For @code{Align} and
+@code{Zip} type-classes.
+@item
+https://hackage.haskell.org/package/semialign-indexed For
+@code{SemialignWithIndex} class, providing @code{ialignWith} and
+@code{izipWith}
+@item
+https://hackage.haskell.org/package/these-lens For lens combinators.
+@item
+http://hackage.haskell.org/package/monad-chronicle For transformers
+variant of @code{These}.
+@end itemize")
+    (license license:bsd-3)))
+
 (define-public ghc-threads
   (package
     (name "ghc-threads")
-- 
2.26.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #16: 0015-gnu-Add-ghc-semialign.patch --]
[-- Type: text/x-patch, Size: 2208 bytes --]

From d2826b44e2e1617dc0e8b456fa70b665cfc8792f Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:48:25 -0800
Subject: [PATCH 15/17] gnu: Add ghc-semialign.

* gnu/packages/haskell-xyz.scm (ghc-semialign): New variable.
---
 gnu/packages/haskell-xyz.scm | 40 ++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 51e447febd..ed0b17bcd6 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -10519,6 +10519,46 @@ Haskell")
 a memory chunk that will be auto-scrubbed after it run out of scope.")
     (license license:bsd-3)))
 
+(define-public ghc-semialign
+  (package
+    (name "ghc-semialign")
+    (version "1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/semialign/semialign-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "004x0a80sqqdgvsyk4z0nasxpi6z3g1d8kgwj804bj9ka8dlc75m"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-these" ,ghc-these)
+       ("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-tagged" ,ghc-tagged)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-semigroupoids" ,ghc-semigroupoids)))
+    (arguments
+     `(#:cabal-revision
+       ("1"
+        "0qnqnyfng4kwy2h2anrcy5id2ijnawava3zcc5h5b8ri1y6ks6zi")))
+    (home-page
+     "https://github.com/isomorphism/these")
+    (synopsis
+     "Align and Zip type-classes from the common Semialign ancestor ")
+    (description
+     "The major use of @code{These} of this is provided by the
+@code{align} member of @code{Semialign} class, representing a
+generalized notion of \"zipping with padding\" that combines
+structures without truncating to the size of the smaller input.  It
+turns out that @code{zip} operation fits well the @code{Semialign}
+class, forming lattice-like structure.")
+    (license license:bsd-3)))
+
 (define-public ghc-semigroupoids
   (package
     (name "ghc-semigroupoids")
-- 
2.26.2


[-- Attachment #17: 0016-gnu-Add-ghc-happy-1.19.9.patch --]
[-- Type: text/x-patch, Size: 3366 bytes --]

From ab8ff0bddfa195709887b0389698a2a691f5865d Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 08:52:48 -0800
Subject: [PATCH 16/17] gnu: Add ghc-happy@1.19.9

* gnu/packages/purescript.scm (ghc-happy-1.19.9): New file, New variable.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add purescript.scm.
---
 gnu/local.mk                |  3 ++-
 gnu/packages/purescript.scm | 44 +++++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/purescript.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 98bdf69c53..4f618bcc17 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -21,7 +21,7 @@
 # Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
 # Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 # Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
-# Copyright © 2019 John Soo <jsoo1@asu.edu>
+# Copyright © 2019, 2020 John Soo <jsoo1@asu.edu>
 # Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 # Copyright © 2019 Evan Straw <evan.straw99@gmail.com>
 # Copyright © 2019 Brett Gilio <brettg@gnu.org>
@@ -430,6 +430,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pretty-print.scm			\
   %D%/packages/protobuf.scm			\
   %D%/packages/pure.scm				\
+  %D%/packages/purescript.scm			\
   %D%/packages/pv.scm				\
   %D%/packages/python.scm			\
   %D%/packages/python-check.scm			\
diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
new file mode 100644
index 0000000000..244fe0ed7d
--- /dev/null
+++ b/gnu/packages/purescript.scm
@@ -0,0 +1,44 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 John Soo <jsoo1@asu.edu>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages purescript)
+  #:use-module (gnu packages haskell-xyz)
+  #:use-module (gnu packages haskell-check)
+  #:use-module (gnu packages haskell-crypto)
+  #:use-module (gnu packages haskell-web)
+  #:use-module ((gnu packages python) #:select (python))
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix packages)
+  #:use-module (guix build-system haskell)
+  #:use-module ((guix licenses) #:prefix license:))
+
+(define ghc-happy-1.19.9
+  (package
+    (inherit ghc-happy)
+    (version "1.19.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/happy/happy-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "138xpxdb7x62lpmgmb6b3v3vgdqqvqn4273jaap3mjmc2gla709y"))))))
-- 
2.26.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #18: 0017-gnu-Add-purescript.patch --]
[-- Type: text/x-patch, Size: 6297 bytes --]

From 474b6af6dbd79a8c93a457b99d1465d6e9ede306 Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Fri, 13 Dec 2019 09:21:50 -0800
Subject: [PATCH 17/17] gnu: Add purescript.

* gnu/packages/purescript.scm (purescript): New variable.
* gnu/packages/patches/purescript-relax-dependencies.patch: Relax cabal dependencies.
---
 .../purescript-relax-dependencies.patch       | 39 ++++++++
 gnu/packages/purescript.scm                   | 89 +++++++++++++++++++
 2 files changed, 128 insertions(+)
 create mode 100644 gnu/packages/patches/purescript-relax-dependencies.patch

diff --git a/gnu/packages/patches/purescript-relax-dependencies.patch b/gnu/packages/patches/purescript-relax-dependencies.patch
new file mode 100644
index 0000000000..4571fea654
--- /dev/null
+++ b/gnu/packages/patches/purescript-relax-dependencies.patch
@@ -0,0 +1,39 @@
+diff --git purescript-0.13.6/purescript.cabal purescript-0.13.6/purescript.cabal.orig
+index 7e38070..0724a0b 100644
+--- purescript-0.13.6/purescript.cabal
++++ purescript-0.13.6/purescript.cabal.orig
+@@ -1167,1 +1167,1 @@ library
+-        Glob ==0.9.*,
++        Glob ==0.10.*,
+@@ -1171,1 +1171,1 @@ library
+-        ansi-terminal >=0.7.1 && <0.9,
++        ansi-terminal ==0.9.*,
+@@ -1180,1 +1180,1 @@ library
+-        clock <0.8,
++        clock ==0.8.*,
+@@ -1246,1 +1246,1 @@ executable purs
+-        Glob ==0.9.*,
++        Glob ==0.10.*,
+@@ -1250,1 +1250,1 @@ executable purs
+-        ansi-terminal >=0.7.1 && <0.9,
++        ansi-terminal ==0.9.*,
+@@ -1260,1 +1260,1 @@ executable purs
+-        clock <0.8,
++        clock ==0.8.*,
+@@ -1281,1 +1281,1 @@ executable purs
+-        network >=3.0.1.1 && <3.1,
++        network >=2.8 && <3.1,
+@@ -1358,1 +1358,1 @@ test-suite tests
+-        Glob ==0.9.*,
++        Glob ==0.10.*,
+@@ -1363,1 +1363,1 @@ test-suite tests
+-        ansi-terminal >=0.7.1 && <0.9,
++        ansi-terminal ==0.9.*,
+@@ -1372,1 +1372,1 @@ test-suite tests
+-        clock <0.8,
++        clock ==0.8.*,
+@@ -1384,2 +1384,2 @@ test-suite tests
+-        hspec <2.7,
+-        hspec-discover <2.7,
++        hspec ==2.7.*,
++        hspec-discover ==2.7.*,
diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm
index 244fe0ed7d..13cd773839 100644
--- a/gnu/packages/purescript.scm
+++ b/gnu/packages/purescript.scm
@@ -17,6 +17,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages purescript)
+  #:use-module (gnu packages)
   #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages haskell-check)
   #:use-module (gnu packages haskell-crypto)
@@ -42,3 +43,91 @@
        (sha256
         (base32
          "138xpxdb7x62lpmgmb6b3v3vgdqqvqn4273jaap3mjmc2gla709y"))))))
+
+(define-public purescript
+  (package
+    (name "purescript")
+    (version "0.13.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://hackage/package/purescript/purescript-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1xss3wpv6wb38gsh9r635s09cxzmiz81hhssdxzdba2pw6ifzx8j"))
+       (patches (search-patches "purescript-relax-dependencies.patch"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-glob" ,ghc-glob)
+       ("ghc-aeson" ,ghc-aeson)
+       ("ghc-aeson-better-errors" ,ghc-aeson-better-errors)
+       ("ghc-aeson-pretty" ,ghc-aeson-pretty)
+       ("ghc-ansi-terminal" ,ghc-ansi-terminal)
+       ("ghc-base-compat" ,ghc-base-compat)
+       ("ghc-blaze-html" ,ghc-blaze-html)
+       ("ghc-bower-json" ,ghc-bower-json)
+       ("ghc-boxes" ,ghc-boxes)
+       ("ghc-cheapskate" ,ghc-cheapskate)
+       ("ghc-clock" ,ghc-clock)
+       ("ghc-cryptonite" ,ghc-cryptonite)
+       ("ghc-data-ordlist" ,ghc-data-ordlist)
+       ("ghc-dlist" ,ghc-dlist)
+       ("ghc-edit-distance" ,ghc-edit-distance)
+       ("ghc-file-embed" ,ghc-file-embed)
+       ("ghc-fsnotify" ,ghc-fsnotify)
+       ("ghc-happy" ,ghc-happy)
+       ("ghc-language-javascript" ,ghc-language-javascript)
+       ("ghc-lifted-async" ,ghc-lifted-async)
+       ("ghc-lifted-base" ,ghc-lifted-base)
+       ("ghc-memory" ,ghc-memory)
+       ("ghc-microlens-platform" ,ghc-microlens-platform)
+       ("ghc-monad-control" ,ghc-monad-control)
+       ("ghc-monad-logger" ,ghc-monad-logger)
+       ("ghc-network" ,ghc-network)
+       ("ghc-parallel" ,ghc-parallel)
+       ("ghc-pattern-arrows" ,ghc-pattern-arrows)
+       ("ghc-protolude" ,ghc-protolude)
+       ("ghc-regex-tdfa" ,ghc-regex-tdfa)
+       ("ghc-safe" ,ghc-safe)
+       ("ghc-scientific" ,ghc-scientific)
+       ("ghc-semialign" ,ghc-semialign)
+       ("ghc-semigroups" ,ghc-semigroups)
+       ("ghc-sourcemap" ,ghc-sourcemap)
+       ("ghc-split" ,ghc-split)
+       ("ghc-stringsearch" ,ghc-stringsearch)
+       ("ghc-syb" ,ghc-syb)
+       ("ghc-these" ,ghc-these)
+       ("ghc-transformers-base" ,ghc-transformers-base)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-utf8-string" ,ghc-utf8-string)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint)
+       ("ghc-http-types" ,ghc-http-types)
+       ("ghc-network" ,ghc-network)
+       ("ghc-optparse-applicative" ,ghc-optparse-applicative)
+       ("ghc-wai" ,ghc-wai)
+       ("ghc-wai-websockets" ,ghc-wai-websockets)
+       ("ghc-warp" ,ghc-warp)
+       ("ghc-websockets" ,ghc-websockets)))
+    (native-inputs
+     `(("ghc-happy" ,ghc-happy-1.19.9) ; build fails with 1.19.12
+       ("ghc-hunit" ,ghc-hunit)
+       ("ghc-hspec" ,ghc-hspec)
+       ("hspec-discover" ,hspec-discover)
+       ("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-golden" ,ghc-tasty-golden)
+       ("ghc-tasty-hspec" ,ghc-tasty-hspec)))
+    (arguments
+     `(;; Tests require npm
+       #:tests? #f
+       #:configure-flags '("--flags=release")))
+    (home-page "https://www.purescript.org/")
+    (synopsis "Haskell inspired programming language compiling to JavaScript")
+    (description
+     "Purescript is a small strongly, statically typed programming language with
+expressive types, inspired by Haskell and compiling to JavaScript.")
+    (license license:bsd-3)))
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* bug#38596: [PATCH] gnu: Add PureScript.
  2020-05-08  0:32         ` John Soo
@ 2020-05-08  9:13           ` Christopher Baines
  0 siblings, 0 replies; 9+ messages in thread
From: Christopher Baines @ 2020-05-08  9:13 UTC (permalink / raw)
  To: John Soo; +Cc: 38596-done

[-- Attachment #1: Type: text/plain, Size: 2461 bytes --]


John Soo <jsoo1@asu.edu> writes:

> Christopher Baines <mail@cbaines.net> writes:
>
>> Some really minor description things I missed earlier:
>>
>> ghc-aeson-better-errors, ghc-transformers and ghc-websockets have URLs
>> in the description, @url could probably be used.
>>
>> I'd also remove the following from the ghc-bower-json description, it
>> reads more like uninformative advertising to me and isn't really
>> relevant to this specific package:
>>
>>   Bower is a package manager for the web (see http://bower.io).
>
> Done!
>
>> Maybe it would be good to note why the package in Guix didn't work, like
>> I tried to use ghc-happy@1.19.12, and the build phase failed with some
>> type errors. That'll at least point out clearly that there's an
>> incompatability. I don't think much detail is needed, the following
>> would be fine.
>>
>>      `(("ghc-happy" ,ghc-happy-1.19.9)  ; build fails with 1.19.12
>
> Done!
>
>>> Ah thanks for the suggestion here. I found one that could be taken from
>>> the existing package in (gnu packages haskell-xyz). The rest seemed to
>>> be either pinned exactly or too strict to take from guix packages.
>>
>> Thanks, although my intent was more about adding something like this.
>>
>>   #:phases
>>   (modify-phases %standard-phases
>>     (add-after 'unpack 'patch
>>       (lambda _
>>         (substitute* "purescript.cabal"
>>           (("clock .*$")
>>            "clock,\n"))
>>         #t)))))
>
> With the addition of a patch I was able to relax most of the package
> versions I introduced to ones we have. The final remaining required
> dependency seems to be happy which I kept at 1.19.9.

Awesome. I added the patch to the list in gnu/local.mk, which I think is
necessary when building the guix package for guix at least. I also added
a small comment to the top of the patch.

>> Now I'm not sure quite how risky this is, the purescript tests aren't
>> being run, but given this is Haskell and it compiles, hopefully that
>> provides some guarantees.
>>
>> What do you think?
>
> My only caveat too is now I have not really tested this version. I had
> done some work with a prior version.  I wish I could run the tests but
> they seem to rely heavily on npm and bower.

Personally, I think that's fine for the moment. It builds at least and I
can run purs to at least get the help.

I've gone ahead and pushed these patches as
de488b3a5fff4535471f6706da03e1b74e6a37fd, thanks for all your work!

Chris

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 962 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-05-08  9:14 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-13 18:46 [bug#38596] [PATCH] Add PureScript John Soo
2019-12-18 13:50 ` John Soo
2019-12-18 14:30 ` John Soo
2020-04-11 20:12 ` [bug#38596] [PATCH] gnu: " John Soo
2020-04-17 19:21   ` Christopher Baines
2020-04-18 22:31     ` John Soo
2020-04-21  7:55       ` Christopher Baines
2020-05-08  0:32         ` John Soo
2020-05-08  9:13           ` bug#38596: " Christopher Baines

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).