forked from jsoo1/guix-channel
-
Notifications
You must be signed in to change notification settings - Fork 1
/
ghc-microlens.scm
93 lines (84 loc) · 6.09 KB
/
ghc-microlens.scm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
(define-module (ghc-microlens)
#:use-module (gnu packages haskell-xyz)
#:use-module (guix build-system haskell)
#:use-module (guix download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:export (ghc-microlens-0.4.10
ghc-microlens-ghc
ghc-microlens-mtl))
(define ghc-microlens-0.4.10
(package
(name "ghc-microlens-0.4.10")
(version "0.4.10")
(source
(origin
(method url-fetch)
(uri (string-append
"mirror://hackage/package/microlens/microlens-"
version
".tar.gz"))
(sha256
(base32
"1v277yyy4p9q57xr2lfp6qs24agglfczmcabrapxrzci3jfshmcw"))))
(build-system haskell-build-system)
(home-page
"http://github.com/monadfix/microlens")
(synopsis
"A tiny lens library with no dependencies.")
(description
"NOTE: If you're writing an app, you probably want microlens-platform at http://hackage.haskell.org/package/microlens-platform it has the most features. microlens is intended more for library writers who want a tiny lens library (after all, lenses are pretty useful for everything, not just for updating records!).
This library is an extract from lens at http://hackage.haskell.org/package/lens (with no dependencies). It's not a toy lenses library, unsuitable for real world, but merely a small one. It is compatible with lens, and should have same performance. It also has better documentation.
There's a longer readme on Github at https://github.com/monadfix/microlens#readme. It has a migration guide for lens users, a description of other packages in the family, a discussion of other lens libraries you could use instead, and so on. . Here are some usecases for this library: . * You want to define lenses or traversals in your own library, but don't want to depend on lens. Having lenses available often make working with a library more pleasant. . * You just want to be able to use lenses to transform data (or even just use over _1 to change the first element of a tuple). . * You are new to lenses and want a small library to play with. . However, don't use this library if: . * You need Isos, Prisms, indexed traversals, or actually anything else which isn't defined here (tho some indexed functions are available elsewhere containers and vector provide them for their types, and <http://hackage.haskell.org/package/ilist ilist> provides indexed functions for lists). . * You want a library with a clean, understandable implementation (in which case you're looking for <http://hackage.haskell.org/package/lens-simple lens-simple>). . As already mentioned, if you're writing an application which uses lenses more extensively, look at <http://hackage.haskell.org/package/microlens-platform microlens-platform> â\x80\x93 it combines features of most other microlens packages (<http://hackage.haskell.org/package/microlens-mtl microlens-mtl>, <http://hackage.haskell.org/package/microlens-th microlens-th>, <http://hackage.haskell.org/package/microlens-ghc microlens-ghc>). . If you want to export getters or folds and don't mind the <http://hackage.haskell.org/package/contravariant contravariant> dependency, please consider using <http://hackage.haskell.org/package/microlens-contra microlens-contra>. . If you haven't ever used lenses before, read <http://hackage.haskell.org/package/lens-tutorial/docs/Control-Lens-Tutorial.html this tutorial>. (It's for lens, but it applies to microlens just as well.) . Note that microlens has no dependencies starting from GHC 7.10 (base-4.8). Prior to that, it depends on transformers-0.2 or above.")
(license license:bsd-3)))
(define ghc-microlens-ghc
(package
(name "ghc-microlens-ghc")
(version "0.4.10")
(source
(origin
(method url-fetch)
(uri (string-append
"mirror://hackage/package/microlens-ghc/microlens-ghc-"
version
".tar.gz"))
(sha256
(base32
"102dbrdsdadxbbhvx8avv1wbk84767a7lkb8ckp3zxk9g7qlly33"))))
(build-system haskell-build-system)
(inputs `(("ghc-microlens" ,ghc-microlens-0.4.10)))
(home-page
"http://github.com/monadfix/microlens")
(synopsis
"microlens + array, bytestring, containers, transformers")
(description
"Use this package instead of microlens at http://hackage.haskell.org/package/microlens if you don't mind depending on all dependencies here.
Lens.Micro.GHC reexports everything from Lens.Micro and additionally provides orphan instances of microlens classes for packages coming with GHC (array at http://hackage.haskell.org/package/array array, bytestring at http://hackage.haskell.org/package/bytestring, Containers at http://hackage.haskell.org/package/containers, transformers at http://hackage.haskell.org/package/transfromers).
The minor and major versions of microlens-ghc are incremented whenever the minor and major versions of microlens are incremented, so you can depend on the exact version of microlens-ghc without specifying the version of microlens you need.
This package is a part of the microlens family; see the readme on Github at https://github.com/monadfix/microlens#readme.")
(license license:bsd-3)))
(define ghc-microlens-mtl
(package
(name "ghc-microlens-mtl")
(version "0.1.11.1")
(source
(origin
(method url-fetch)
(uri (string-append
"mirror://hackage/package/microlens-mtl/microlens-mtl-"
version
".tar.gz"))
(sha256
(base32
"0l6z1gkzwcpv89bxf5vgfrjb6gq2pj7sjjc53nvi5b9alx34zryk"))))
(build-system haskell-build-system)
(inputs
`(("ghc-microlens" ,ghc-microlens-0.4.10)
("ghc-transformers-compat"
,ghc-transformers-compat)))
(home-page "http://github.com/aelve/microlens")
(synopsis
"microlens support for Reader/Writer/State from mtl")
(description
"This package contains functions (like 'view' or '+=') which work on 'MonadReader', 'MonadWriter', and 'MonadState' from the mtl package. . This package is a part of the microlens family; see the readme on Github at https://github.com/aelve/microlens#readme.")
(license license:bsd-3)))