subhask-0.1.1.0: subhask.cabal
name: subhask
version: 0.1.1.0
synopsis: Type safe interface for programming in subcategories of Hask
homepage: http://github.com/mikeizbicki/subhask
license: BSD3
license-file: LICENSE
author: Mike Izbicki
maintainer: mike@izbicki.me
category: Control, Categories, Algebra
build-type: Simple
extra-source-files: README.md
cabal-version: >=1.10
description:
SubHask is a radical rewrite of the Haskell <https://www.haskell.org/onlinereport/standard-prelude.htm Prelude>.
The goal is to make numerical computing in Haskell fun and fast.
The main idea is to use a type safe interface for programming in arbitrary subcategories of <https://wiki.haskell.org/Hask Hask>.
For example, the category <http://ncatlab.org/nlab/show/Vect Vect> of linear functions is a subcategory of Hask, and SubHask exploits this fact to give a nice interface for linear algebra.
To achieve this goal, almost every class hierarchy is redefined to be more general.
I recommend reading the <http://github.com/mikeizbicki/subhask/blob/master/README.md README> file and the <http://github.com/mikeizbicki/subhask/blob/master/examples examples> before looking at the documetation here.
source-repository head
type: git
location: http://github.com/mikeizbicki/subhask
--------------------------------------------------------------------------------
library
exposed-modules:
SubHask
SubHask.Algebra
SubHask.Algebra.Array
SubHask.Algebra.Container
SubHask.Algebra.Group
SubHask.Algebra.Logic
SubHask.Algebra.Metric
SubHask.Algebra.Ord
SubHask.Algebra.Parallel
SubHask.Algebra.Ring
SubHask.Algebra.Vector
SubHask.Algebra.Vector.FFI
SubHask.Category
SubHask.Category.Finite
SubHask.Category.Product
SubHask.Category.Polynomial
SubHask.Category.Slice
SubHask.Category.Trans.Bijective
SubHask.Category.Trans.Constrained
SubHask.Category.Trans.Derivative
SubHask.Category.Trans.Monotonic
SubHask.Compatibility.Base
SubHask.Compatibility.BloomFilter
SubHask.Compatibility.ByteString
SubHask.Compatibility.Cassava
SubHask.Compatibility.Containers
SubHask.Compatibility.HyperLogLog
SubHask.Monad
SubHask.Mutable
SubHask.SubType
SubHask.TemplateHaskell.Base
SubHask.TemplateHaskell.Deriving
SubHask.TemplateHaskell.Mutable
SubHask.TemplateHaskell.Test
other-modules:
SubHask.Internal.Prelude
SubHask.TemplateHaskell.Common
default-extensions:
TypeFamilies,
ConstraintKinds,
DataKinds,
GADTs,
MultiParamTypeClasses,
FlexibleInstances,
FlexibleContexts,
TypeOperators,
RankNTypes,
InstanceSigs,
ScopedTypeVariables,
UndecidableInstances,
PolyKinds,
StandaloneDeriving,
GeneralizedNewtypeDeriving,
TemplateHaskell,
BangPatterns,
FunctionalDependencies,
TupleSections,
MultiWayIf,
AutoDeriveTypeable,
DeriveGeneric,
RebindableSyntax
-- OverloadedLists
hs-source-dirs:
src
c-sources:
cbits/Lebesgue.c
cc-options:
-- -O3
-ffast-math
-msse3
ghc-options:
-- -O2
-- -O
-funbox-strict-fields
build-depends:
-- NOTE:
-- We specify the *exact* versions of all non-base libraries to ensure that we get reproducible builds.
-- This helps prevent performance regressions.
-- The downside of exact version dependencies is that the user probably doesn't have these versions installed.
-- This can result in significantly longer build times and build conflicts.
-- But since subhask is designed as an alternative to base, this is an acceptable tradeoff.
-- haskell language
base >= 4.8 && <4.9,
ghc-prim == 0.4.0.0,
template-haskell == 2.10.0.0,
-- special functionality
parallel == 3.2.0.6,
deepseq == 1.4.1.1,
primitive == 0.6,
monad-primitive == 0.1,
QuickCheck == 2.8.1,
-- math
erf == 2.0.0.0,
gamma == 0.9.0.2,
hmatrix == 0.16.1.5,
-- compatibility control flow
mtl == 2.2.1,
MonadRandom == 0.4,
-- compatibility data structures
bytestring == 0.10.6.0,
bloomfilter == 2.0.1.0,
cassava == 0.4.3.1,
containers == 0.5.6.2,
vector == 0.10.12.3,
array == 0.5.1.0,
hyperloglog == 0.3.4,
-- required for hyperloglog compatibility
semigroups == 0.16.2.2,
bytes == 0.15.0.1,
approximate == 0.2.2.1,
lens == 4.12.3
default-language:
Haskell2010
--------------------------------------------------------------------------------
Test-Suite TestSuite-Unoptimized
default-language: Haskell2010
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: TestSuite.hs
ghc-options:
-O0
build-depends:
subhask,
test-framework-quickcheck2 >= 0.3.0,
test-framework >= 0.8.0
-- FIXME:
-- The test below takes a long time to compile.
-- The slow builds are causing travis tests to fail.
--
-- Test-Suite TestSuite-Optimized
-- default-language: Haskell2010
-- type: exitcode-stdio-1.0
-- hs-source-dirs: test
-- main-is: TestSuite.hs
--
-- build-depends:
-- subhask,
-- test-framework-quickcheck2 >= 0.3.0,
-- test-framework >= 0.8.0
--
-- ghc-options:
-- -O2
-- -fllvm
--------------------
Test-Suite Example0001
default-language: Haskell2010
type: exitcode-stdio-1.0
hs-source-dirs: examples
main-is: example0001-polynomials.lhs
build-depends: subhask, base
Test-Suite Example0002
default-language: Haskell2010
type: exitcode-stdio-1.0
hs-source-dirs: examples
main-is: example0002-monad-instances-for-set.lhs
build-depends: subhask, base
Test-Suite Example0003
default-language: Haskell2010
type: exitcode-stdio-1.0
hs-source-dirs: examples
main-is: example0003-linear-algebra.lhs
build-depends: subhask, base
--------------------------------------------------------------------------------
benchmark Vector
default-language: Haskell2010
type: exitcode-stdio-1.0
hs-source-dirs: bench
main-is: Vector.hs
build-depends:
base,
subhask,
criterion == 1.1.0.0,
MonadRandom
ghc-options:
-O2
-funbox-strict-fields
-fexcess-precision
-- -fliberate-case-threshold=100000
-- -fexpose-all-unfoldings
-- -fmax-simplifier-iterations=10
-- -fmax-worker-args=100
-- -fsimplifier-phases=5
-- -fspec-constr-count=50
-fllvm
-optlo-O3
-optlo-enable-fp-mad
-optlo-enable-no-infs-fp-math
-optlo-enable-no-nans-fp-math
-optlo-enable-unsafe-fp-math
-- -ddump-to-file
-- -ddump-rule-firings
-- -ddump-rule-rewrites
-- -ddump-rules
-- -ddump-cmm
-- -ddump-simpl
-- -ddump-simpl-stats
-- -dppr-debug
-- -dsuppress-module-prefixes
-- -dsuppress-uniques
-- -dsuppress-idinfo
-- -dsuppress-coercions
-- -dsuppress-type-applications