[nota] concatenação de listas em haskell

A partir deste final de semana reservarei algumas horas do meu dia para estudar e escrever aqui um pouco sobre haskell, neste final de semana o tema será concatenação de listas e algumas coisinhas mais.

Para começar, devemos deixar claro que strings são listas, definir a seguinte função

     texto = "ola"

é equivalente a declarar: texto = ['o','l','a']. Ou seja, qualquer coisa passada aqui poderá ser usada com strings.

Para concatenar duas lista podemos usar o operador ++, como no seguinte exemplo:

     [1,2,3,4] ++ [5,6,7,8].

Dessa forma haskell andará por toda a primeira lista adicionando os elementos a uma terceira lista e depois fará o mesmo com a segunda lista. Isso parece ser banal para uma lista com poucos elementos, mas se tivermos uma lista enorme com todos os alunos de uma universidade, por exemplo, o haskell demorará vários minutos para terminar essa operação.

Uma outra forma de adicionar elementos a uma lista que não demande tanto esforço é usar o operador : que adiciona UM elemento no começo da lista, por exemplo:

     1  :  [2,3,4]

Atenção para o fato de que o operador ++ só aceita duas listas, enquanto que o operador : aceita UM elemento e UMA lista.

Mais uma coisa que vale adicionar essa nota é que caso queiramos "pegar" um elemento da lista temos que usar o operador !!, por exemplo em java se queremos imprimir o quinto elemento de um vetor usamos:

     System.out.println(nomeVetor[5]);

Já em haskell como dito anteriormente usamos o !!

     listaDeExemplo !! 6