Estoy confundido por qué mi función nest
que se compone f
consigo misma n
veces
nest f 0 = id
nest f n = f . nest f (n - 1)
nunca termina Pensé que "coincidiría con el patrón" en el caso cuando se n
convierta en cero. Lo estoy definiendo escribiendo estas dos líneas en GHCI y llamando nest (+ 1) 2 3
por ejemplo.
nest (+1) 3 2
termine con5
.nest (+1) 3 2
.Respuestas:
Al escribir la función en dos líneas REPL separadas, esencialmente la está redefiniendo la segunda vez, omitiendo el caso base.
La forma correcta de ingresar esta función en REPL es:
Alternativamente, puede ingresar al modo multilínea con el
:{
comando y dejarlo usando:}
.fuente
Cuando lo pegó en GHCi, lo que hizo fue definir una función
nest f 0 = id
. Luego dijiste "ignora esa función, la estoy reemplazando con una nueva función del mismo nombre donde está toda la definiciónnest f n = f . nest f (n - 1)
.fuente