[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
