| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Numeric.Subroutine.Sort
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 #
Methods
Arguments
| :: 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.
Equations
| SortableDataFrame t (n ': ns :: [Nat]) = (PrimArray t (DataFrame t ns), PrimArray t (DataFrame t (n ': ns))) | |
| SortableDataFrame t (n ': ns :: [XNat]) = PrimBytes t |