DistinctListModule

PackageReified.Refinements
Operations over lists known to hold no duplicates.

Summary

NameSignatureSynopsis
refinementDistinctList.refinement ()No description available.
toListDistinctList.toList inputReturns the refined value as a standard list.
createDistinctList.create valuesAdmits a list, failing when it holds duplicates.
ofSeqDistinctList.ofSeq valuesRemoves duplicates rather than rejecting them, preserving first-seen order.
emptyDistinctList.empty The list with no items.
lengthDistinctList.length inputReturns the number of items as a plain int.
containsDistinctList.contains item inputReturns whether the item is present.
toMapByDistinctList.toMapBy projection inputBuilds a map keyed by a projection of each item, failing when the projection sends two items to the same key.
toMapDistinctList.toMap inputBuilds a map from a distinct list of pairs, failing when two pairs share a key.
toSetDistinctList.toSet inputBuilds a set.
addDistinctList.add item inputAdds an item, ignoring it when already present.
removeDistinctList.remove item inputRemoves an item.
unionDistinctList.union first secondReturns the items of either list, without duplicates.
intersectDistinctList.intersect first secondReturns the items present in both lists.
differenceDistinctList.difference first secondReturns the items of the first list absent from the second.
filterDistinctList.filter predicate inputKeeps the matching items.
mapDistinctList.map mapping inputApplies a mapping and removes any duplicates it introduces, since a mapping need not be injective.
chooseDistinctList.choose chooser inputKeeps the chosen items, removing any duplicates the chooser introduces.
sortDistinctList.sort inputReorders the items.
sortByDistinctList.sortBy projection inputReorders the items by a projected key.
revDistinctList.rev inputReverses the order of the items.
truncateDistinctList.truncate count inputKeeps at most the first count items.
isEmptyDistinctList.isEmpty inputReturns whether the list has no items.
tryHeadDistinctList.tryHead inputReturns the first item, if any.
existsDistinctList.exists predicate inputReturns whether any item satisfies the predicate.
forallDistinctList.forall predicate inputReturns whether every item satisfies the predicate.
tryFindDistinctList.tryFind predicate inputReturns the first matching item, if any.
tryPickDistinctList.tryPick chooser inputReturns the first item the chooser accepts, if any.
iterDistinctList.iter action inputApplies an action to every item.
foldDistinctList.fold folder state inputFolds over the items from an explicit seed.
sumDistinctList.sum inputAdds every item, matching List.sum.
sumByDistinctList.sumBy projection inputAdds a projection of every item, matching List.sumBy.

refinement

DistinctList.refinement ()
Member

Parameters

NameTypeDescription
unit

Returns

Refinement<'value list, DistinctList<'value>>

toList

DistinctList.toList input
Member
Returns the refined value as a standard list.

Parameters

NameTypeDescription
inputDistinctList<'value>

Returns

'value list

create

DistinctList.create values
Member
Admits a list, failing when it holds duplicates.

Parameters

NameTypeDescription
values'a seq

Returns

Result<DistinctList<'a>, Violation>

ofSeq

DistinctList.ofSeq values
Member
Removes duplicates rather than rejecting them, preserving first-seen order. Total.

Parameters

NameTypeDescription
values'a seq

Returns

DistinctList<'a>

empty

DistinctList.empty
Member
The list with no items.

Returns

DistinctList<'value>

length

DistinctList.length input
Member
Returns the number of items as a plain int.

Parameters

NameTypeDescription
inputDistinctList<'value>

Returns

int

contains

DistinctList.contains item input
Member
Returns whether the item is present.

Parameters

NameTypeDescription
item'value
inputDistinctList<'value>

Returns

bool

toMapBy

DistinctList.toMapBy projection input
Member
Builds a map keyed by a projection of each item, failing when the projection sends two items to the same key. Distinct items do not imply distinct projections.

Parameters

NameTypeDescription
projection'value -> 'a
inputDistinctList<'value>

Returns

Result<Map<'a, 'value>, Violation>

toMap

DistinctList.toMap input
Member
Builds a map from a distinct list of pairs, failing when two pairs share a key.

Parameters

NameTypeDescription
inputDistinctList<'key * 'value>

Returns

Result<Map<'key, 'value>, Violation>

toSet

DistinctList.toSet input
Member
Builds a set. Total and lossless — this is the operation that justifies the type, because distinct items always produce a set of the same size, while Set.ofList on an ordinary list silently collapses duplicates.

Parameters

NameTypeDescription
inputDistinctList<'value>

Returns

Set<'value>

add

DistinctList.add item input
Member
Adds an item, ignoring it when already present. Total.

Parameters

NameTypeDescription
item'value
inputDistinctList<'value>

Returns

DistinctList<'value>

remove

DistinctList.remove item input
Member
Removes an item. Total.

Parameters

NameTypeDescription
item'value
inputDistinctList<'value>

Returns

DistinctList<'value>

union

DistinctList.union first second
Member
Returns the items of either list, without duplicates. Total.

Parameters

NameTypeDescription
firstDistinctList<'value>
secondDistinctList<'value>

Returns

DistinctList<'value>

intersect

DistinctList.intersect first second
Member
Returns the items present in both lists. Total.

Parameters

NameTypeDescription
firstDistinctList<'value>
secondDistinctList<'value>

Returns

DistinctList<'value>

difference

DistinctList.difference first second
Member
Returns the items of the first list absent from the second. Total.

Parameters

NameTypeDescription
firstDistinctList<'value>
secondDistinctList<'value>

Returns

DistinctList<'value>

filter

DistinctList.filter predicate input
Member
Keeps the matching items. Total — filtering cannot introduce duplicates.

Parameters

NameTypeDescription
predicate'value -> bool
inputDistinctList<'value>

Returns

DistinctList<'value>

map

DistinctList.map mapping input
Member
Applies a mapping and removes any duplicates it introduces, since a mapping need not be injective. Total.

Parameters

NameTypeDescription
mapping'value -> 'a
inputDistinctList<'value>

Returns

DistinctList<'a>

choose

DistinctList.choose chooser input
Member
Keeps the chosen items, removing any duplicates the chooser introduces. Total.

Parameters

NameTypeDescription
chooser'value -> 'a option
inputDistinctList<'value>

Returns

DistinctList<'a>

sort

DistinctList.sort input
Member
Reorders the items. Total — reordering cannot introduce duplicates.

Parameters

NameTypeDescription
inputDistinctList<'value>

Returns

DistinctList<'value>

sortBy

DistinctList.sortBy projection input
Member
Reorders the items by a projected key. Total.

Parameters

NameTypeDescription
projection'value -> 'a
inputDistinctList<'value>

Returns

DistinctList<'value>

rev

DistinctList.rev input
Member
Reverses the order of the items. Total.

Parameters

NameTypeDescription
inputDistinctList<'value>

Returns

DistinctList<'value>

truncate

DistinctList.truncate count input
Member
Keeps at most the first count items. Total.

Parameters

NameTypeDescription
countint
inputDistinctList<'value>

Returns

DistinctList<'value>

isEmpty

DistinctList.isEmpty input
Member
Returns whether the list has no items.

Parameters

NameTypeDescription
inputDistinctList<'value>

Returns

bool

tryHead

DistinctList.tryHead input
Member
Returns the first item, if any. Distinctness says nothing about emptiness.

Parameters

NameTypeDescription
inputDistinctList<'value>

Returns

'value option

exists

DistinctList.exists predicate input
Member
Returns whether any item satisfies the predicate.

Parameters

NameTypeDescription
predicate'value -> bool
inputDistinctList<'value>

Returns

bool

forall

DistinctList.forall predicate input
Member
Returns whether every item satisfies the predicate.

Parameters

NameTypeDescription
predicate'value -> bool
inputDistinctList<'value>

Returns

bool

tryFind

DistinctList.tryFind predicate input
Member
Returns the first matching item, if any.

Parameters

NameTypeDescription
predicate'value -> bool
inputDistinctList<'value>

Returns

'value option

tryPick

DistinctList.tryPick chooser input
Member
Returns the first item the chooser accepts, if any.

Parameters

NameTypeDescription
chooser'value -> 'a option
inputDistinctList<'value>

Returns

'a option

iter

DistinctList.iter action input
Member
Applies an action to every item.

Parameters

NameTypeDescription
action'value -> unit
inputDistinctList<'value>

Returns

unit

fold

DistinctList.fold folder state input
Member
Folds over the items from an explicit seed.

Parameters

NameTypeDescription
folder'a -> 'value -> 'a
state'a
inputDistinctList<'value>

Returns

'a

sum

DistinctList.sum input
Member
Adds every item, matching List.sum.

Parameters

NameTypeDescription
inputDistinctList<^value>

Returns

^value

sumBy

DistinctList.sumBy projection input
Member
Adds a projection of every item, matching List.sumBy.

Parameters

NameTypeDescription
projection'value -> ^a
inputDistinctList<'value>

Returns

^a