const -syb +package
This plugin evaluates constant math expressions at compile-time.
For details and full usage information, see;
To use it to compile foo.hs:
> $ cabal install const-math-ghc-plugin
> $ ghc -fplugin ConstMath.Plugin foo.hs
To use it to build a cabal package packagename:
> $ cabal install --ghc-options="-package const-math-ghc-plugin
> -fplugin ConstMath.Plugin" packagename
Math should run faster.
The package provides normal forms for monads and related structures, similarly to the Operational package. The difference is that we parameterise the normal forms on a constraint, and apply that constraint to all existential types within the normal form. This allows monad (and other) instances to be generated for underlying types that require constraints on their return-like and bind-like operations, e.g. Set.
This is documented in the following paper:
The Constrained-Monad Problem. Neil Sculthorpe and Jan Bracker and George Giorgidze and Andy Gill. 2013. http://www.ittc.ku.edu/~neil/papers_and_talks/constrained-monad-problem.pdf
The functionality exposed by this library is also used internally by the Set-Monad and RMonad packages.
The constructible reals are the subset of the real numbers that can be represented exactly using field operations (addition, subtraction, multiplication, division) and positive square roots. They support exact computations, equality comparisons, and ordering.
A library of algebra focusing mainly on commutative ring theory from a constructive point of view.
Classical structures are implemented without Noetherian assumptions. This means that it is not assumed that all ideals are finitely generated. For example, instead of principal ideal domains one gets Bezout domains which are integral domains in which all finitely generated ideals are principal (and not necessarily that all ideals are principal). This give a good framework for implementing many interesting algorithms.
This module provides more flexible versions of common type classes that use the ConstraintKinds extension. This allows us to make types that require constraints instances of the popular classes. For example, we reimplement Functor and Foldable using the ContraintKinds style. This allows us to manipulate lists and unboxed vectors using the same functions.
This library needs a lot of work before it can be considered ready for others to use. Right now, only those instances needed by the HLearn library have been implemented in this library.
Repeatable builds for cabalized Haskell projects
'cabal-constraints' provides repeatable builds for cabalized Haskell projects by "freezing" the exact versions of the dependencies selected by 'cabal-install'. All build environments for the project, such as the test or staging build environments, or other developers collaborating on the project, will then use the same dependency versions.
It is designed to be used alongside 'cabal-install' sandboxes, in which case isolated, repeatable builds can be achieved.
'cabal-constraints' should be run from the root directory of a cabalized Haskell project and given the path to the `setup-config` file to use. It will print out all dependencies of the project in a format suitable for use in a `cabal-install` config file. For example, running 'cabal-constraints' against itself produces the following:
> $ cabal-constraints dist/dist-sandbox-500003c6/setup-config
> constraints: Cabal == 1.19.0
> , array == 0.4.0.1
> , base == 188.8.131.52
> , bytestring == 0.10.0.2
> , containers == 0.5.0.0
> , deepseq == 184.108.40.206
> , directory == 220.127.116.11
> , filepath == 18.104.22.168
> , ghc-prim == 0.3.0.0
> , integer-gmp == 0.5.0.0
> , old-locale == 22.214.171.124
> , pretty == 126.96.36.199
> , process == 188.8.131.52
> , rts == 1.0
> , time == 184.108.40.206
> , unix == 220.127.116.11
A single mandatory argument must be provided which is the path to the setup-config file to use. The file will be located under the dist directory. Usually there will be a single setup-config file which can be found by running find dist -name setup-config from the root directory of the project. If your project has more than one such file, it is likely because you have built it either with and without sandboxes or with multiple sandboxes. You probably want the most recently modified file which can be found with ls -tr $( find dist -name setup-config ) | tail -n1.
To use these constraints for reproducible builds, one should make use of the new sandbox feature of cabal-install 1.18. The constraints can be redirected to cabal.config and committed to your code repository. When the project is built, the same set of dependency versions will be resolved by cabal-install ensuring repeatable builds.
If cabal.config contains no other information the simplest solution is to overwrite it:
> $ cabal-constraints > cabal.config
If cabal.config contains information that needs to be preserved, the following will replace the constraints section and everything following it with the new constraints. If you ensure that the constraints section is the last section of the file, all other information in it will be kept.
> $ sed -i /^constraints:/,$d cabal.config && cabal-constraints
> >> cabal.config
The library provides efficient implementation of the first-order, linear-chain conditional random fields (CRFs) with position-wise constraints imposed over label values.
It is strongly related to the simpler http://hackage.haskell.org/package/crf-chain1 library where constraints are not taken into account and all features which are not included in the CRF model are considered to have probability of 0. Here, on the other hand, such features do not influence the overall probability of the (sentence, labels) pair - they are assigned the default potential of 0.
Efficient algorithm for determining marginal probabilities of individual labels is provided. The tagging is performed with respect to marginal probabilities.