Subject: [bug#53690] Add ghc-machines

From: WinterHound <[email-masked]>
Date: Tue, 1 Feb 2022 15:02:09 +0530

---
 gnu/packages/haskell-xyz.scm | 42 ++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index c820d5e585..bf704abe85 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -16254,3 +16254,45 @@ (define-public ghc-concise
      "@code{concise} provides a handful of functions to extend what you
 can do with Control.Lens.Cons.")
     (license license:bsd-3)))
+
+(define-public ghc-machines
+  (package
+    (name "ghc-machines")
+    (version "0.7.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (hackage-uri "machines" version))
+       (sha256
+        (base32 "0pgsa67j9l1zmazlqdb5wg3cqsikyfvkq8yih7iwcqzkys5qssvr"))))
+    (build-system haskell-build-system)
+    (inputs
+     (list ghc-adjunctions
+           ghc-comonad
+           ghc-distributive
+           ghc-pointed
+           ghc-profunctors
+           ghc-semigroupoids
+           ghc-semigroups
+           ghc-transformers-compat
+           ghc-void))
+    (home-page "http://github.com/ekmett/machines/")
+    (synopsis "Networked stream transducers")
+    (description "Ceci n'est pas une pipe\n
+Machines are demand driven input sources like pipes or conduits,
+but can support multiple inputs.\n
+You design a @code{Machine}by writing a @code{Plan}. You then
+@code{construct}the machine.\n
+Simple machines that take one input are called a @code{Process}
+and processes form a @code{Category}. More generally you can attach
+a Process to the output of any type of @code{Machine},
+yielding a new @code{Machine}.\n
+More complicated machines provide other ways of connecting to them.\n
+Typically the use of machines proceeds by using simple plans into machine
+@code{Tees}and @code{Wyes}, capping many of the inputs to those with
+possibly monadic sources, feeding the rest input (possibly repeatedly)
+and calling @code{run}or @code{runT} to get the answers out.\n
+There is a lot of flexibility when building a machine in choosing between
+empowering the machine to run its own monadic effects or delegating that
+responsibility to a custom driver.")
+    (license license:bsd-3)))
-- 
2.34.0