Estou confuso por que minha função nest
que compõe f
consigo mesma n
vezes
nest f 0 = id
nest f n = f . nest f (n - 1)
nunca termina. Eu teria pensado que seria "correspondência de padrão" no caso quando n
se tornar zero. Estou definindo-o digitando essas duas linhas no GHCI e ligando, nest (+ 1) 2 3
por exemplo.
nest (+1) 3 2
que terminar5
.nest (+1) 3 2
.Respostas:
Ao digitar a função em duas linhas REPL separadas, você a redefine essencialmente na segunda vez, omitindo o caso base.
A maneira correta de inserir esta função no REPL é:
Como alternativa, você pode entrar no modo de múltiplas linhas com o
:{
comando e deixá-lo usando:}
.fonte
Quando você colou no GHCi, o que você fez foi definir uma função
nest f 0 = id
. Então você disse: "ignore essa função, estou substituindo-a por uma nova função com o mesmo nome, onde está toda a definiçãonest f n = f . nest f (n - 1)
.fonte