Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Fortran array representation primitives.
Fortran arrays are homogeneous: every element has the same type. That means a
REAL(8)
array must store only REAL(8)
s, no REAL(4)
s. We use some type
algebra to obtain correct-by-construction types.
Also, Fortran arrays are multi-dimensional. Rather than storing a single natural number for a single dimension, or doing some recursive work for arrays of arrays (which don't exist in Fortran), we instead store a list of naturals, defining each dimension's extent.
Synopsis
- type family Size dims where ...
- data FVA (ft :: k -> Type) (fk :: k) (dims :: [NaturalK]) = FVA {}
- mkFVA1 :: forall l ft fk. Vector l (ft fk) -> FVA ft fk '[l]
- fvaShape :: forall dims ft fk. KnownNats dims => FVA ft fk dims -> Shape
- mkSomeFVA :: (forall l. KnownNat l => Vector l a -> r) -> [a] -> r
- class KnownNats (ns :: [NaturalK]) where
- data SomeFVA k ft = forall (fk :: k) (dims :: [NaturalK]).(KnownNats dims, SingKind k, SingI fk) => SomeFVA {}
- someFVAKind :: SomeFVA k ft -> Demote k
- someFVAShape :: SomeFVA k ft -> Shape
- mkSomeFVA1 :: forall k ft (fk :: k). (SingKind k, SingI fk) => [ft fk] -> SomeFVA k ft
- data FArrayValue
- fArrayValueType :: FArrayValue -> FArrayType
Documentation
Wrapper for defining an array of a kind-tagged Fortran type.
someFVAKind :: SomeFVA k ft -> Demote k Source #
someFVAShape :: SomeFVA k ft -> Shape Source #
data FArrayValue Source #
FAVInt (SomeFVA FTInt FInt) | |
FAVReal (SomeFVA FTReal FReal) | |
FAVComplex (SomeFVA FTReal FComplex) | |
FAVLogical (SomeFVA FTInt FInt) | |
FAVString (SomeFVA NaturalK FString) |
Instances
Show FArrayValue Source # | |
Defined in Language.Fortran.Repr.Value.Array.Machine showsPrec :: Int -> FArrayValue -> ShowS # show :: FArrayValue -> String # showList :: [FArrayValue] -> ShowS # |