This repository has been archived on 2023-05-29. You can view files and clone it, but cannot push or open issues or pull requests.
fp-ts-training/src/exo3/exo3.ts

60 lines
2.2 KiB
TypeScript
Raw Normal View History

2020-09-14 13:00:45 +03:00
// `fp-ts` training Exercice 3
// Sort things out with `Ord`
import * as Option from 'fp-ts/lib/Option';
import { unimplemented } from '../utils';
///////////////////////////////////////////////////////////////////////////////
// SORT PRIMITIVE TYPES //
///////////////////////////////////////////////////////////////////////////////
export const sortStrings: (
strings: ReadonlyArray<string>,
) => ReadonlyArray<string> = unimplemented;
export const sortNumbers: (
numbers: ReadonlyArray<number>,
) => ReadonlyArray<number> = unimplemented;
///////////////////////////////////////////////////////////////////////////////
// REVERSE SORT //
///////////////////////////////////////////////////////////////////////////////
export const sortNumbersDescending: (
numbers: ReadonlyArray<number>,
) => ReadonlyArray<number> = unimplemented;
///////////////////////////////////////////////////////////////////////////////
// SORT OPTIONAL VALUES //
///////////////////////////////////////////////////////////////////////////////
export const sortOptionalNumbers: (
optionalNumbers: ReadonlyArray<Option.Option<number>>,
) => ReadonlyArray<Option.Option<number>> = unimplemented;
///////////////////////////////////////////////////////////////////////////////
// SORT COMPLEX OBJECTS //
///////////////////////////////////////////////////////////////////////////////
export interface Person {
readonly name: string;
readonly age: Option.Option<number>;
}
export const sortPersonsByName: (
person: ReadonlyArray<Person>,
) => ReadonlyArray<Person> = unimplemented;
export const sortPersonsByAge: (
person: ReadonlyArray<Person>,
) => ReadonlyArray<Person> = unimplemented;
///////////////////////////////////////////////////////////////////////////////
// COMBINE SORTING SCHEMES //
///////////////////////////////////////////////////////////////////////////////
export const sortPersonsByAgeThenByName: (
person: ReadonlyArray<Person>,
) => ReadonlyArray<Person> = unimplemented;