Structure Vector
['ty array] ['ty vector] é um vetor unidimensional com elementos do tipo 'ty, e que
não pode ser alterado. Algumas funções trabalham com "um intervalo" (slice) de um vetor:
- O intervalo (v, i, SOME n) denota o subvetor v[i..i+n-1]. Isto é,
v[i] é o primeiro elemento do intervalo, e n é o tamanho do intervalo.
Válido somente se 0 <= i <= i+n <= length v.
- O intervalo (v, i, NONE) denota o subvetor v[i..length v-1]. Isto é,
o intervalo denota o sufixo do vetor começando em i. Válido somente
se 0 <= i <= length v. Equivalente a (v, i, SOME(length v - i)).
Intervalo  
Significado
-----------------------------------------------------------------------------------------------
(v, 0, NONE) todo o vetor v[0..len-1]
(v, 0, SOME n) um subvetor a esquerda (prefixo) v[0..n-1]
(v, i, NONE) um subvetor a direita (sufixo) v[i..len-1]
(v, i, SOME n) um intervalo genérico v[i..i+n-1]
Nome |
Tipo |
Efeito |
maxLen |
int |
[maxLen] é
o número máximo de elementos no vetor |
fromList |
'a list -> 'a vector |
[fromList xs ] retorna
um vetor cujos elementos são os membros de xs |
tabulate |
int * (int -> 'a) -> 'a
vector |
[tabulate(n,f)]
retorna um vetor de tamanho n cujos elementos são f(0), f(1),...,f(n-1),
criado da esquerda para a direita |
length |
'a vector -> int |
[length v]
retorna o número de elementos de v |
sub |
'a vector * int -> 'a |
[sub (v,i)] retorna
o iésimo elemento de v, contando a partir de 0 |
extract |
'a vector * int * int option
-> 'a vector |
[extract (v,i,NONE)] retorna
um vetor dos elementos v[i..length v-1] de v
[extract (v,i,SOME n)] retorna
um vetor dos elementos v[i..i+n-1]de v |
concat |
'a vector list -> 'a vector |
[concat vs]
retorna um vetor que é a concatenação da esquerda para a direita dos vetores em vs |
app |
('a -> unit) -> 'a vector
-> unit |
[app f v] aplica
f para v[j], para j variando de 0 a length v-1 |
map |
('a -> 'b) -> 'a vector
-> 'b vector |
[map f v]
aplica f para v[j], para j variando de 0 a length v-1 e retorna um novo vetor contendo os
resultados |
foldl |
('a * 'b -> 'b) -> 'b ->
'a vector -> 'b |
[foldl f e v] aplica a função
f sobre v da esquerda para a direita, da
seguinte maneira: f(v[len-1], f(v[len-2], ..., f(v[1], f(v[0], e)) ...)), onde "len" é
o tamanho de v |
foldr |
('a * 'b -> 'b) -> 'b ->
'a vector -> 'b |
[foldr f e v] aplica a função
f sobre v da direita para a esquerda, da
seguinte maneira: f(v[0], f(v[1], ..., f(v[len-2], f(v[len-1], e)) ...)), onde "len" é
o tamanho de v |
appi |
(int * 'a -> unit) -> 'a
vector * int * int option -> unit |
[appi f (v, i, SOME n)] aplica a fução
f a sucessivos pares (j, v[j]) para j=i,i+1,...,i+n-1
[appi f (v, i, NONE)] aplica a fução
f a sucessivos pares (j, v[j]) para j=i,i+1,...,len-1,
onde len = length v |
mapi |
(int * 'a -> 'b) -> 'a
vector * int * int option -> 'b vector |
[mapi f (v, i, SOME n)] aplica a função
f a pares sucessivos (j, v[j]) para j=i,i+1,...,i+n-1 e retorna
um novo vetor (de tamanho n) contendo os resultados
[mapi f (v, i, NONE)] aplica a função
f a pares sucessivos (j, v[j]) para j=i,i+1,...,len-1, quando len = length v,
e retorna um novo vetor (de tamanho len-1) contendo os resultados |
foldli |
(int * 'a * 'b -> 'b) -> 'b
-> 'a vector*int*int option -> 'b |
[foldli f e (v, i, SOME n)] aplica a função
f sobre o subvetor v[i..i+n-1] da esquerda para a direita, da
seguinte maneira: f(i+n-1, v[i+n-1], f(..., f(i+1, v[i+1], f(i, v[i], e)) ...))
[foldli f e (v, i, NONE)] aplica a função
f sobre o subvetor v[i..len-1] da esquerda para a direita, onde
len = length v, da seguinte maneira:
f(len-1, v[len-1], f(..., f(i+1, v[i+1], f(i, v[i], e)) ...)). |
foldri |
(int * 'a * 'b -> 'b) -> 'b
-> 'a vector*int*int option -> 'b |
[foldri f e (v, i, SOME n)] aplica a função
f sobre o subvetor v[i..i+n-1] da direita para a esquerda, da seguinte
maneira: f(i, v[i], f(i+1, v[i+1], ..., f(i+n-1, v[i+n-1], e) ...))
[foldri f e (v, i, NONE)] aplica a função
f sobre o subvetor v[i..len-1] da direita para a esquerda, onde
len = length v, da seguinte maneira: f(i, v[i], f(i+1, v[i+1], ..., f(len-1, v[len-1], e) ...)) |
[Bibliotecas Moscow ML]
[Manual Mosml]
Comentários, dúvidas, sugestões, envie um mail para
Juliene ou para Isabel
|