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 +1/−1
- changelog.md +2/−0
- src/AERN2/Select.hs +28/−0
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)