Soy nuevo en Haskell (y en la programación funcional en general) y me preguntaba cómo puedo acceder a un elemento nuevo que he agregado a una lista usando el operador contra (:)?¿Cómo accedo a un elemento de lista que he agregado con el operador cons (:)?
Por ejemplo, el uso de WinGHCi puedo crear una nueva lista y acceder al primer elemento:
ghci> let a = [1,2,3]
ghci> a!!0
1
Los vuelve a aparecer 1, el valor del primer elemento, fresco. Ahora añado un nuevo valor a la parte delantera de la lista y tratar de acceder a ella:
ghci> 5:a
[5,1,2,3]
ghci> a!!0
1
Parece que los elementos de la lista no ser re-indexado. Intenté obtener un índice negativo para el trabajo y otras cosas similares, pero el compilador no pareció aprobar. Los tutoriales que estoy leyendo solo se saltan y no pude encontrar nada de uso en línea. ¿Cómo obtengo el valor "5" de la lista?
Gracias por la ayuda y lo siento si esta es una pregunta muy básica.
Para ilustrar el punto de Marcin, escriba 'a' en GHCI y verá [1,2,3], porque no puede modificar una variable en Haskell. Para aclarar las cosas, considere [estas definiciones de variable y asignable] (http: //existentialtype.wordpress.com/2012/02/01/words-matter /): Haskell tiene 'variables' en el sentido matemático, pero no 'asignables' como en los lenguajes imperativos. –
a sigue siendo [1,2,3] después de 5: a.Thera no tiene efectos secundarios como la mutación en la programación funcional – nist
Ya lo entiendo, es solo otra forma de pensar ... jaja. ¡Gracias a todos! – Awesominator