Manual MosML
Juliene Lopes Gonzalez
Orientada por Isabel Harb Manssour
 

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]

 ../Imagens/EMBAN15.GIF (1469 bytes)

../Imagens/E-MAIL.JPG (3237 bytes) Comentários, dúvidas, sugestões, envie um mail para Juliene ou para Isabel

../Imagens/EMBAN15.GIF (1469 bytes)

Última alteração em 12 de Outubro de 2000.