Author: | Alex Mitchell |
---|
This module implements operations for the built-in seq type which were inspired by functional programming languages.
Note: This interface will change as soon as the compiler supports closures and proper coroutines.
Procs
proc concat*[T](seqs: varargs[seq[T]]): seq[T]
- Takes several sequences' items and returns them inside of one sequence.
proc distnct*[T](seq1: seq[T]): seq[T]
- Removes duplicates from a sequence and returns it.
proc zip*[S, T](seq1: seq[S]; seq2: seq[T]): seq[tuple[a: S, b: T]]
- Combines two sequences. If one sequence is too short, the remaining items in the longer sequence are discarded.
proc filter*[T](seq1: seq[T]; pred: proc (item: T): bool {.closure.}): seq[T]
- Returns all items in a sequence that fulfilled the predicate.
Iterators
iterator filter*[T](seq1: seq[T]; pred: proc (item: T): bool {.closure.}): T
- Iterates through a sequence and yields every item that fulfills the predicate.
Templates
template filterIt*(seq1, pred: expr): expr {.immediate, dirty.}
- Finds a specific item in a sequence as long as the predicate returns true. The predicate needs to be an expression containing it: filterIt("abcxyz", it == 'x').