aboutsummaryrefslogtreecommitdiff
path: root/src/Data/Array/Nested.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Data/Array/Nested.hs')
-rw-r--r--src/Data/Array/Nested.hs128
1 files changed, 101 insertions, 27 deletions
diff --git a/src/Data/Array/Nested.hs b/src/Data/Array/Nested.hs
index ec5f0b5..c3635e9 100644
--- a/src/Data/Array/Nested.hs
+++ b/src/Data/Array/Nested.hs
@@ -2,52 +2,126 @@
{-# LANGUAGE PatternSynonyms #-}
module Data.Array.Nested (
-- * Ranked arrays
- Ranked,
- ListR(ZR, (:::)), knownListR,
- IxR(.., ZIR, (:.:)), IIxR, knownIxR,
- ShR(.., ZSR, (:$:)), knownShR,
- rshape, rindex, rindexPartial, rgenerate, rsumOuter1,
- rtranspose, rappend, rscalar, rfromVector, rtoVector, runScalar,
- rconstant, rfromList, rfromList1, rtoList, rtoList1,
- rslice, rrev1,
+ Ranked(Ranked),
+ ListR(ZR, (:::)),
+ IxR(.., ZIR, (:.:)), IIxR,
+ ShR(.., ZSR, (:$:)), IShR,
+ rshape, rrank, rsize, rindex, rindexPartial, rgenerate, rsumOuter1, rsumAllPrim,
+ rtranspose, rappend, rconcat, rscalar, rfromVector, rtoVector, runScalar,
+ remptyArray,
+ rrerank,
+ rreplicate, rreplicateScal,
+ rfromList1, rfromListOuter, rfromListLinear, rfromListPrim, rfromListPrimLinear,
+ rtoList, rtoListOuter, rtoListLinear,
+ rslice, rrev1, rreshape, rflatten, riota,
+ rminIndexPrim, rmaxIndexPrim, rdot1Inner, rdot,
+ rnest, runNest, rzip, runzip,
-- ** Lifting orthotope operations to 'Ranked' arrays
- rlift,
+ rlift, rlift2,
+ -- ** Conversions
+ rtoXArrayPrim, rfromXArrayPrim,
+ rtoMixed, rcastToMixed, rcastToShaped,
+ rfromOrthotope, rtoOrthotope,
+ -- ** Additional arithmetic operations
+ --
+ -- $integralRealFloat
+ rquotArray, rremArray, ratan2Array,
-- * Shaped arrays
- Shaped,
+ Shaped(Shaped),
ListS(ZS, (::$)),
IxS(.., ZIS, (:.$)), IIxS,
- ShS(..), KnownShape(..),
- sshape, sindex, sindexPartial, sgenerate, ssumOuter1,
+ ShS(.., ZSS, (:$$)), KnownShS(..),
+ sshape, srank, ssize, sindex, sindexPartial, sgenerate, ssumOuter1, ssumAllPrim,
stranspose, sappend, sscalar, sfromVector, stoVector, sunScalar,
- sconstant, sfromList, sfromList1, stoList, stoList1,
- sslice, srev1,
+ -- TODO: sconcat? What should its type be?
+ semptyArray,
+ srerank,
+ sreplicate, sreplicateScal,
+ sfromList1, sfromListOuter, sfromListLinear, sfromListPrim, sfromListPrimLinear,
+ stoList, stoListOuter, stoListLinear,
+ sslice, srev1, sreshape, sflatten, siota,
+ sminIndexPrim, smaxIndexPrim, sdot1Inner, sdot,
+ snest, sunNest, szip, sunzip,
-- ** Lifting orthotope operations to 'Shaped' arrays
- slift,
+ slift, slift2,
+ -- ** Conversions
+ stoXArrayPrim, sfromXArrayPrim,
+ stoMixed, scastToMixed, stoRanked,
+ sfromOrthotope, stoOrthotope,
+ -- ** Additional arithmetic operations
+ --
+ -- $integralRealFloat
+ squotArray, sremArray, satan2Array,
-- * Mixed arrays
Mixed,
- IxX(..), IIxX,
- KnownShapeX(..), StaticShX(..),
- mgenerate, mtranspose, mappend, mfromVector, mtoVector, munScalar,
- mconstant, mfromList, mtoList, mslice, mrev1,
+ ListX(ZX, (::%)),
+ IxX(.., ZIX, (:.%)), IIxX,
+ ShX(.., ZSX, (:$%)), KnownShX(..), IShX,
+ StaticShX(.., ZKX, (:!%)),
+ SMayNat(..),
+ mshape, mrank, msize, mindex, mindexPartial, mgenerate, msumOuter1, msumAllPrim,
+ mtranspose, mappend, mconcat, mscalar, mfromVector, mtoVector, munScalar,
+ memptyArray,
+ mrerank,
+ mreplicate, mreplicateScal,
+ mfromList1, mfromListOuter, mfromListLinear, mfromListPrim, mfromListPrimLinear,
+ mtoList, mtoListOuter, mtoListLinear,
+ mslice, mrev1, mreshape, mflatten, miota,
+ mminIndexPrim, mmaxIndexPrim, mdot1Inner, mdot,
+ mnest, munNest, mzip, munzip,
+ -- ** Lifting orthotope operations to 'Mixed' arrays
+ mlift, mlift2,
+ -- ** Conversions
+ mtoXArrayPrim, mfromXArrayPrim,
+ mcast,
+ mcastToShaped, mtoRanked,
+ convert, Conversion(..),
+ -- ** Additional arithmetic operations
+ --
+ -- $integralRealFloat
+ mquotArray, mremArray, matan2Array,
-- * Array elements
- Elt(mshape, mindex, mindexPartial, mscalar, mfromList1, mtoList1, mlift, mlift2),
+ Elt,
PrimElt,
Primitive(..),
-
- -- * Inductive natural numbers
- module Data.INat,
+ KnownElt,
-- * Further utilities / re-exports
type (++),
Storable,
+ SNat, pattern SNat,
+ pattern SZ, pattern SS,
+ Perm(..),
+ IsPermutation,
+ KnownPerm(..),
+ NumElt, IntElt, FloatElt,
+ Rank, Product,
+ Replicate,
+ MapJust,
) where
-import Prelude hiding (mappend)
+import Prelude hiding (mappend, mconcat)
-import Data.Array.Mixed
-import Data.Array.Nested.Internal
-import Data.INat
+import Data.Array.Nested.Convert
+import Data.Array.Nested.Mixed
+import Data.Array.Nested.Mixed.Shape
+import Data.Array.Nested.Permutation
+import Data.Array.Nested.Ranked
+import Data.Array.Nested.Ranked.Shape
+import Data.Array.Nested.Shaped
+import Data.Array.Nested.Shaped.Shape
+import Data.Array.Nested.Types
+import Data.Array.Strided.Arith
import Foreign.Storable
+import GHC.TypeLits
+
+-- $integralRealFloat
+--
+-- These functions are separate top-level functions, and not exposed in
+-- instances for 'RealFloat' and 'Integral', because those classes include a
+-- variety of other functions that make no sense for arrays.
+-- This problem already occurs with 'fromInteger', 'fromRational' and 'pi', but
+-- having 'Num', 'Fractional' and 'Floating' available is just too useful.