finite-field 0.9.0 → 0.10.0
raw patch · 6 files changed
+59/−18 lines, 6 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Data.FiniteField.PrimeField: instance GHC.TypeLits.KnownNat p => Data.FiniteField.Base.FiniteField (Data.FiniteField.PrimeField.PrimeField p)
- Data.FiniteField.PrimeField: instance GHC.TypeLits.KnownNat p => Data.Hashable.Class.Hashable (Data.FiniteField.PrimeField.PrimeField p)
- Data.FiniteField.PrimeField: instance GHC.TypeLits.KnownNat p => GHC.Enum.Bounded (Data.FiniteField.PrimeField.PrimeField p)
- Data.FiniteField.PrimeField: instance GHC.TypeLits.KnownNat p => GHC.Enum.Enum (Data.FiniteField.PrimeField.PrimeField p)
- Data.FiniteField.PrimeField: instance GHC.TypeLits.KnownNat p => GHC.Num.Num (Data.FiniteField.PrimeField.PrimeField p)
- Data.FiniteField.PrimeField: instance GHC.TypeLits.KnownNat p => GHC.Read.Read (Data.FiniteField.PrimeField.PrimeField p)
- Data.FiniteField.PrimeField: instance GHC.TypeLits.KnownNat p => GHC.Real.Fractional (Data.FiniteField.PrimeField.PrimeField p)
+ Data.FiniteField.PrimeField: instance GHC.TypeNats.KnownNat p => Data.FiniteField.Base.FiniteField (Data.FiniteField.PrimeField.PrimeField p)
+ Data.FiniteField.PrimeField: instance GHC.TypeNats.KnownNat p => Data.Hashable.Class.Hashable (Data.FiniteField.PrimeField.PrimeField p)
+ Data.FiniteField.PrimeField: instance GHC.TypeNats.KnownNat p => GHC.Enum.Bounded (Data.FiniteField.PrimeField.PrimeField p)
+ Data.FiniteField.PrimeField: instance GHC.TypeNats.KnownNat p => GHC.Enum.Enum (Data.FiniteField.PrimeField.PrimeField p)
+ Data.FiniteField.PrimeField: instance GHC.TypeNats.KnownNat p => GHC.Num.Num (Data.FiniteField.PrimeField.PrimeField p)
+ Data.FiniteField.PrimeField: instance GHC.TypeNats.KnownNat p => GHC.Read.Read (Data.FiniteField.PrimeField.PrimeField p)
+ Data.FiniteField.PrimeField: instance GHC.TypeNats.KnownNat p => GHC.Real.Fractional (Data.FiniteField.PrimeField.PrimeField p)
Files
- .travis.yml +25/−12
- CHANGELOG.markdown +9/−0
- README.md +5/−1
- finite-field.cabal +12/−3
- src/Data/FiniteField/PrimeField.hs +3/−1
- test/TestPrimeField.hs +5/−1
.travis.yml view
@@ -1,5 +1,6 @@ language: c sudo: false+dist: bionic cache: directories:@@ -12,22 +13,34 @@ matrix: include:- - env: CABALVER=1.18 GHCVER=7.6.3- compiler: ": #GHC 7.6.3"- addons: {apt: {packages: [cabal-install-1.18,ghc-7.6.3,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}- - env: CABALVER=1.18 GHCVER=7.8.3 COVERAGE=1- compiler: ": #GHC 7.8.3"- addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.3,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}- - env: CABALVER=1.22 GHCVER=7.10.3+ - env: CABALVER=2.0 GHCVER=7.8.4 COVERAGE=1+ compiler: ": #GHC 7.8.4"+ addons: {apt: {packages: [cabal-install-2.0,ghc-7.8.4,alex-3.1.7,happy-1.19.5], sources: [hvr-ghc]}}+ - env: CABALVER=2.0 GHCVER=7.10.3 compiler: ": #GHC 7.10.3"- addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}- - env: CABALVER=1.24 GHCVER=8.0.1- compiler: ": #GHC 8.0.1"- addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.1,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}+ addons: {apt: {packages: [cabal-install-2.0,ghc-7.10.3,alex-3.1.7,happy-1.19.5], sources: [hvr-ghc]}}+ - env: CABALVER=2.0 GHCVER=8.0.2+ compiler: ": #GHC 8.0.2"+ addons: {apt: {packages: [cabal-install-2.0,ghc-8.0.2,alex-3.1.7,happy-1.19.5], sources: [hvr-ghc]}}+ - env: CABALVER=2.0 GHCVER=8.2.2+ compiler: ": #GHC 8.2.2"+ addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.2,alex-3.1.7,happy-1.19.5], sources: [hvr-ghc]}}+ - env: CABALVER=2.0 GHCVER=8.4.4+ compiler: ": #GHC 8.4.4"+ addons: {apt: {packages: [cabal-install-2.0,ghc-8.4.4,alex-3.1.7,happy-1.19.5], sources: [hvr-ghc]}}+ - env: CABALVER=2.0 GHCVER=8.6.5+ compiler: ": #GHC 8.6.5"+ addons: {apt: {packages: [cabal-install-2.0,ghc-8.6.5,alex-3.1.7,happy-1.19.5], sources: [hvr-ghc]}}+ - env: CABALVER=2.4 GHCVER=8.8.4+ compiler: ": #GHC 8.8.4"+ addons: {apt: {packages: [cabal-install-2.4,ghc-8.8.4,alex-3.1.7,happy-1.19.5], sources: [hvr-ghc]}}+ - env: CABALVER=2.4 GHCVER=8.10.2+ compiler: ": #GHC 8.10.2"+ addons: {apt: {packages: [cabal-install-2.4,ghc-8.10.2,alex-3.1.7,happy-1.19.5], sources: [hvr-ghc]}} before_install: - unset CC- - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:/opt/alex/3.1.4/bin:/opt/happy/1.19.5/bin:~/.cabal/bin:$PATH+ - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:/opt/alex/3.1.7/bin:/opt/happy/1.19.5/bin:~/.cabal/bin:$PATH install: - cabal --version
CHANGELOG.markdown view
@@ -1,3 +1,12 @@+0.10.0+------+* fix `toEnum` to work when `p` is beyond Int's `maxBound`.++0.9.0+-----+* use `tasty` instead of `test-framework` for testing+* add `UseGHCTypeLits` flag to switch to use GHC's type-level natural numbers instead of `type-level-numbers` package+ 0.8.0 ----- * remove dependency on `algebra` package, since it is outdated and not compatible with recent version of other packages
README.md view
@@ -1,4 +1,8 @@ finite-field ============ -[](http://travis-ci.org/msakai/finite-field) [](https://hackage.haskell.org/package/finite-field) [](https://coveralls.io/r/msakai/finite-field)+[](https://travis-ci.org/msakai/finite-field)+[](https://hackage.haskell.org/package/finite-field)+[](https://packdeps.haskellers.com/feed?needle=finite-field)+[](https://coveralls.io/r/msakai/finite-field)+[](https://opensource.org/licenses/BSD-3-Clause)
finite-field.cabal view
@@ -1,5 +1,5 @@ Name: finite-field-Version: 0.9.0+Version: 0.10.0 License: BSD3 License-File: COPYING Author: Masahiro Sakai (masahiro.sakai@gmail.com)@@ -18,6 +18,15 @@ .travis.yml .gitignore Build-Type: Simple+Tested-With:+ GHC ==7.8.4+ GHC ==7.10.3+ GHC ==8.0.2+ GHC ==8.2.2+ GHC ==8.4.4+ GHC ==8.6.5+ GHC ==8.8.4+ GHC ==8.10.2 Flag UseGHCTypeLits Description: set GHC.TypeLits module@@ -62,8 +71,8 @@ deepseq, hashable, tasty >=0.10.1,- tasty-hunit ==0.9.*,- tasty-quickcheck ==0.8.*,+ tasty-hunit >=0.9 && <0.11,+ tasty-quickcheck >=0.8 && <0.11, tasty-th, QuickCheck >=2.5 && <3, finite-field,
src/Data/FiniteField/PrimeField.hs view
@@ -97,8 +97,10 @@ instance KnownNat p => Enum (PrimeField p) where toEnum x- | toInt (minBound :: PrimeField p) <= x && x <= toInt (maxBound :: PrimeField p) = fromIntegral x+ | toInteger (minBound :: PrimeField p) <= x' && x' <= toInteger (maxBound :: PrimeField p) = PrimeField x' | otherwise = error "PrimeField.toEnum: bad argument"+ where+ x' = fromIntegral x fromEnum = toInt instance Ord (PrimeField p) where
test/TestPrimeField.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TemplateHaskell, ScopedTypeVariables, GADTs, DataKinds, CPP #-}+{-# LANGUAGE TemplateHaskell, ScopedTypeVariables, GADTs, DataKinds, CPP, TypeOperators #-} {-# OPTIONS_GHC -fcontext-stack=32 #-} import Prelude hiding (toInteger)@@ -193,6 +193,10 @@ a = toEnum (-1) (ret :: Either SomeException (PrimeField p)) <- QM.run $ try $ evaluate $ a QM.assert $ isLeft ret++-- https://github.com/msakai/finite-field/issues/2+case_toEnum_big_integer =+ (toEnum 7 :: $(primeField (2^127 - 1))) @?= 7 -- ----------------------------------------------------------------------