List of Import References :
See BOOL
See DENOTATION
See ISeq
See Nat
See Option
See Seq
SIGNATURE ISeqIndex[data]
$Date: 2010-09-30 18:24:17 +0200 (Do, 30. Sep 2010) $ ($Revision: 616 $)
-- functions which use an "index" for accessing arbitary elements of an -- infinite sequence -- note, that some of these functions are quite expensive and therefore -- should be avoided, if possible -- Parameter SORT data IMPORT Nat ONLY nat Seq[data] ONLY seq ISeq[data] ONLY iseq Option[nat] ONLY option FUN ! : iseq ** nat -> data -- s ! i -- select component at position i in s -- (positions of components in sequences are counted beginning -- from 0!) -- informally: -- <...,e_i,...> ! i = e_i -- ^i FUN pos : (data -> bool) ** iseq -> nat FUN pos : (data -> bool) ** iseq -> option[nat] -- pos(P, s) -- return avail(n), for first component of s which fulfills -- predicate P FUN slice : iseq ** nat ** nat -> seq -- slice (s, i, j) -- subsequence of s from position i upto j where i <= j -- informally: -- slice (<...,e_i,...,e_i+n,...>, i, i+n) = <e_i,...,e_i+n> -- ^0 ^i ^i+n FUN upd : nat ** data ** iseq -> iseq -- upd(i, d, <e_0, ..., e_i, ..., e_n>) = -- <e_0, ..., d, ..., e_n> FUN upd : nat ** (data -> data) ** iseq -> iseq -- upd(i, f, <e_0, ..., e_i, ..., e_n>) = -- <e_0, ..., f(e_i), ..., e_n> FUN swap : nat ** nat ** iseq -> iseq -- swap(i, j, <e_0, ..., e_i, ..., e_j, ..., e_n>) = -- <e_0, ..., e_j, ..., e_i, ..., e_n> FUN repl : iseq ** nat ** seq -> iseq -- repl(<e_0, e_1, ... >, k, <d_0, d_1, ..., d_m>) = r -- replace elements e_k, e_k+1, ... e_k+m by -- d_0, d_1, ..., d_m FUN insert : iseq ** nat ** seq -> iseq -- insert(e, k, d) = take(k, e) ++ d ++ drop(k, e) FUN delete : iseq ** nat ** nat -> iseq -- delete (s, i, j) -- delete subsequence from position i upto j in s -- where i <= j -- informally: -- delete ('...ab...cd...', i, i+n) = '...ad...' -- ^i ^i+n -- has no effect, if i > j
next node: ISeqMap,
prev node: ISeqFilter,
up to node: Subsystem Infinite Sequences