Haskell/Listas e n-uplas: diferenças entre revisões

[revisão pendente][revisão pendente]
Conteúdo apagado Conteúdo adicionado
m Marcada como "em tradução"
→‎Criando listas: Nota sobre associatividade
Linha 51:
}}
 
Na verdade, todas as listas em Haskell são construída desta forma, sendo que o último elemento adicionado é uma ''lista vazia'', representada por <code>[]</code>. A notação de usar colchete trata-se de um ''açúcar sintático''. Isso quer dizer que <code>[1,2,3,4]</code> é exatamente a mesma coisa que <code>1:2:3:4:[]</code>. Entretanto, visualizar a avaliaçãoordem dessareversa notaçãoda emavaliação ordemdesse reversaaçúcar sintático ajuda a entender o que acontece:
 
<source lang=haskell>
Linha 61:
[1,2,3,4]
</source>
 
Aqui podemos ver que ''cons'' é um operador com associatividade-à-direita.<ref group=nota>Para mais informações sobre associatividade de operadores, cf. [[w:Associatividade de operadores|Wikipédia]]. Em resumo, associatividade-à-direita quer dizer que <code>a : b : c : d</code> é o mesmo que <code>a : (b -: (c : d))</code>.</ref>
 
Observe que <code>True:False:[]</code> é uma expressão válida, enquanto que <code>True:False</code> não é.
Linha 74 ⟶ 76:
}}
 
Novamente, temos um erro de incompatibilidade de tipos. Ele nos diz que <code>(:)</code> (que é uma função, como quase tudo em Haskell), esperava que seu segundo argumento, o do lado direito, fosse uma lista (<codett>exptected type [Bool]</codett>), quando na verdade <code>False</code> não o é (<codett>actual type `Bool'</codett>).
 
Lembre-se: