SEARCH
NEW RPMS
DIRECTORIES
ABOUT
FAQ
VARIOUS
BLOG

 
 

ghc-set-monad rpm build for : OpenSuSE. For other distributions click ghc-set-monad.

Name : ghc-set-monad
Version : 0.2.0.0 Vendor : openSUSE
Release : bp150.2.6 Date : 2018-07-30 20:24:57
Group : Development/Libraries/Haskell Source RPM : ghc-set-monad-0.2.0.0-bp150.2.6.src.rpm
Size : 0.10 MB
Packager : https://bugs_opensuse_org
Summary : Set monad
Description :
The \'set-monad\' library exports the \'Set\' abstract data type and
set-manipulating functions. These functions behave exactly as their namesakes
from the \'Data.Set\' module of the \'containers\' library. In addition, the
\'set-monad\' library extends \'Data.Set\' by providing \'Functor\', \'Applicative\',
\'Alternative\', \'Foldable\', \'Monad\', and \'MonadPlus\' instances for sets.

In other words, you can use the \'set-monad\' library as a drop-in replacement
for the \'Data.Set\' module of the \'containers\' library and, in addition, you
will also get the aforementioned instances which are not available in the
\'containers\' package.

It is not possible to directly implement instances for the aforementioned
standard Haskell type classes for the \'Set\' data type from the \'containers\'
library. This is because the key operations \'map\' and \'union\', are constrained
with \'Ord\' as follows.

> map :: (Ord a, Ord b) => (a -> b) -> Set a -> Set b > union :: (Ord a) => Set
a -> Set a -> Set a

The \'set-monad\' library provides the type class instances by wrapping the
constrained \'Set\' type into a data type that has unconstrained constructors
corresponding to monadic combinators. The data type constructors that represent
monadic combinators are evaluated with a constrained run function.
This elevates the need to use the constraints in the instance definitions (this
is what prevents a direct definition). The wrapping and unwrapping happens
internally in the library and does not affect its interface.

For details, see the rather compact definitions of the \'run\' function and type
class instances. The left identity and associativity monad laws play a crucial
role in the definition of the \'run\' function. The rest of the code should be
self explanatory.

The technique is not new. This library was inspired by [1]. To my knowledge,
the original, systematic presentation of the idea to represent monadic
combinators as data is given in [2]. There is also a Haskell library that
provides a generic infrastructure for the aforementioned wrapping and
unwrapping [3].

The \'set-monad\' library is particularly useful for writing set-oriented code
using the do and/or monad comprehension notations. For example, the following
definitions now type check.

> s1 :: Set (Int,Int) > s1 = do a < - fromList [1 .. 4] > b < - fromList [1 ..
4] > return (a,b)

> -- with -XMonadComprehensions > s2 :: Set (Int,Int) > s2 = [ (a,b) | (a,b) < -
s1, even a, even b ]

> s3 :: Set Int > s3 = fmap (+1) (fromList [1 .. 4])

As noted in [1], the implementation technique can be used for monadic libraries
and EDSLs with restricted types (compiled EDSLs often restrict the types that
they can handle). Haskell\'s standard monad type class can be used for
restricted monad instances. There is no need to resort to GHC extensions that
rebind the standard monadic combinators with the library or EDSL specific ones.

\'[\'1\']\' CSDL Blog: The home of applied functional programming at KU.
Monad Reification in Haskell and the Sunroof Javascript compiler.
< http://www.ittc.ku.edu/csdlblog/?p=88>

\'[\'2\']\' Chuan-kai Lin. 2006. Programming monads operationally with Unimo.
In Proceedings of the eleventh ACM SIGPLAN International Conference on
Functional Programming (ICFP \'06). ACM.

\'[\'3\']\' Heinrich Apfelmus. The operational package.
< http://hackage.haskell.org/package/operational>.

RPM found in directory: /packages/linux-pbone/ftp5.gwdg.de/pub/opensuse/repositories/openSUSE:/Backports:/SLE-15/standard/x86_64

Content of RPM  Changelog  Provides Requires

Download
ftp.icm.edu.pl  ghc-set-monad-0.2.0.0-bp150.2.6.x86_64.rpm
     

Provides :
ghc-set-monad
ghc-set-monad(x86-64)
libHSset-monad-0.2.0.0-1duB4cOoBuvJyv3YX9LaEt-ghc8.0.2.so()(64bit)

Requires :
libHSarray-0.5.1.1-ghc8.0.2.so()(64bit)
libHSbase-4.9.1.0-ghc8.0.2.so()(64bit)
libHScontainers-0.5.7.1-ghc8.0.2.so()(64bit)
libHSdeepseq-1.4.2.0-ghc8.0.2.so()(64bit)
libHSghc-prim-0.5.0.0-ghc8.0.2.so()(64bit)
libHSinteger-gmp-1.0.0.1-ghc8.0.2.so()(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libgmp.so.10()(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1


Content of RPM :
/usr/lib64/ghc-8.0.2/set-monad-0.2.0.0-1duB4cOoBuvJyv3YX9LaEt
/usr/lib64/ghc-8.0.2/set-monad-0.2.0.0-1duB4cOoBuvJyv3YX9LaEt/libHSset-monad-0.2.0.0-1duB4cOoBuvJyv3YX9LaEt-ghc8.0.2.so
/usr/share/doc/packages/ghc-set-monad
/usr/share/doc/packages/ghc-set-monad/LICENSE

 
ICM