Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- class BoundedDim n => SortBy n where
- sortByInplace :: PrimBytes t => (STDataFrame s t ns -> STDataFrame s t ns -> ST s Ordering) -> STDataFrame s t (n ': ns) -> ST s ()
- sortBy :: forall (t :: Type) n ns. (SortableDataFrame t (n ': ns), SortBy n) => (DataFrame t ns -> DataFrame t ns -> Ordering) -> DataFrame t (n ': ns) -> DataFrame t (n ': ns)
- sort :: forall (t :: Type) n ns. (SortableDataFrame t (n ': ns), Ord t, SortBy n) => DataFrame t (n ': ns) -> DataFrame t (n ': ns)
- type family SortableDataFrame (t :: Type) (ns :: [k]) :: Constraint where ...
Documentation
class BoundedDim n => SortBy n where Source #
:: PrimBytes t | |
=> (STDataFrame s t ns -> STDataFrame s t ns -> ST s Ordering) | must not modify state! |
-> STDataFrame s t (n ': ns) | |
-> ST s () |
Note, Inplace here means the input frame is modified. It does not mean the algorithm does not use extra space (it does use).
Instances
sortBy :: forall (t :: Type) n ns. (SortableDataFrame t (n ': ns), SortBy n) => (DataFrame t ns -> DataFrame t ns -> Ordering) -> DataFrame t (n ': ns) -> DataFrame t (n ': ns) Source #
Sort a DataFrame
along the first dimension using given comparison function.
sort :: forall (t :: Type) n ns. (SortableDataFrame t (n ': ns), Ord t, SortBy n) => DataFrame t (n ': ns) -> DataFrame t (n ': ns) Source #
Sort a DataFrame
along the first dimension.
Note: the elements (which are of type DataFrame t ns
) are compared
lexicographically.
type family SortableDataFrame (t :: Type) (ns :: [k]) :: Constraint where ... Source #
The required context for sorting a DataFrame is slightly different
for Nat
and XNat
indexed arrays.
This type family abstracts away the difference.
SortableDataFrame t (n ': ns :: [Nat]) = (PrimArray t (DataFrame t ns), PrimArray t (DataFrame t (n ': ns))) | |
SortableDataFrame t (n ': ns :: [XNat]) = PrimBytes t |