packages feed

aern2-mp 0.2.14.0 → 0.2.15.0

raw patch · 3 files changed

+31/−1 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

+ AERN2.Select: class CanSelectCountable k where {
+ AERN2.Select: instance AERN2.Select.CanSelectCountable (Numeric.CollectErrors.Type.CN AERN2.Kleenean.Kleenean)
+ AERN2.Select: instance AERN2.Select.CanSelectCountable AERN2.Kleenean.Kleenean
+ AERN2.Select: selectCountable :: CanSelectCountable k => (Integer -> k) -> SelectCountableType k
+ AERN2.Select: type CanSelectCountableCNInteger k = (CanSelectCountable k, SelectCountableType k ~ CN Integer)
+ AERN2.Select: type CanSelectCountableInteger k = (CanSelectCountable k, SelectCountableType k ~ Integer)
+ AERN2.Select: type SelectCountableType k;
- AERN2.Select: -- | Must be Bool or similar
+ AERN2.Select: -- | Must be Integer or similar

Files

aern2-mp.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           aern2-mp-version:        0.2.14.0+version:        0.2.15.0 synopsis:       Multi-precision ball (interval) arithmetic description:    Please see the README on GitHub at <https://github.com/michalkonecny/aern2/#readme> category:       Math
changelog.md view
@@ -1,5 +1,7 @@ # Change log for aern2-mp +* v 0.2.15 2023-04-11+  * add generic selectCountable, instance for Kleenean * v 0.2.14 2023-04-10   * minor improvements supporting aern2-linear and aern2-real * v 0.2.11 2022-08-25
src/AERN2/Select.hs view
@@ -48,4 +48,32 @@     k2 <- cnk2     select k1 k2 +class CanSelectCountable k where+  {-| Must be Integer or similar -}+  type SelectCountableType k +  {-|+    Execute a sequence of lazy computations "in parallel" until one of them succeeds+    and return the index of a succeeding computation. +  -}+  selectCountable :: (Integer -> k) -> SelectCountableType k +type CanSelectCountableInteger k = (CanSelectCountable k, SelectCountableType k ~ Integer)+type CanSelectCountableCNInteger k = (CanSelectCountable k, SelectCountableType k ~ CN Integer)++instance CanSelectCountable Kleenean where+  type SelectCountableType Kleenean = Integer+  selectCountable kleeneans = aux 0+    where+    aux i = case kleeneans i of+      CertainTrue -> i+      _ -> aux (i + 1)++instance CanSelectCountable (CN Kleenean) where+  type SelectCountableType (CN Kleenean) = CN Integer+  selectCountable cnkleeneans = aux 0+    where+    aux i = do+      ki <- cnkleeneans i+      case ki of+        CertainTrue -> cn i+        _ -> aux (i + 1)