Estoy confundido en cuanto a lo que hace la función Cons()
, en la definición de la función para.¿Qué hace Contras en esta función?
Respuesta
Lo que Stream
representa es lazy y una lista potencialmente infinita. Dado que SML es eager, esto debe hacerse de una manera un poco indirecta. primer vistazo
Vamos de lo ordinario listas de trabajo:
datatype 'a list = [] | :: of 'a * 'a list
Los contras consta de dos partes:
- El primer elemento de la lista
- El resto de la lista
En la lista perezosa, es bastante similar.
datatype 'a Stream = Nil | Cons of 'a * (unit -> 'a Stream)
Aquí los contras consiste de los siguientes:
- El primer elemento en la lista
- Una función que produce el resto de la lista cuando se evaluó en
()
Por lo tanto, puede ver que el principio es muy similar, aunque un poco más difícil de trabajar. mirada
Vamos a una lista de ejemplo:
fun succ n = Cons (n, fn() => succ (n+1))
val naturals = succ 0
¿Qué tiene esto produce? Vamos a examinarlo.
naturals
se definió como succ 0
, que a su vez se define como Cons(0, fn() => succ 1)
. De esto podemos ver que el primer elemento en la lista es 0
.
Ahora vamos un paso más allá. Evaluamos fn() => succ 1
, la segunda parte de nuestro Cons
, en ()
, que produce succ 1
, que a su vez es Cons(1, fn() => succ 2)
. Ahora podemos ver que el segundo elemento en la lista es 1
.
Si repetimos este proceso, obtenemos que la lista representa la lista infinita [0, 1, 2, ...]
.
También puede ver esto tratando de hacer
val firstnats = take 10 naturals;
y ver lo que hay.
Es uno de los dos constructores de Stream. Vea la segunda línea de esa captura de pantalla, eso es todo lo que hay para Cons.
- 1. ¿Qué hace esta función?
- 2. Ubicación getAccuracy() ¿qué hace esta función?
- 3. ¿Qué hace esta consulta LINQ?
- 4. ¿Qué hace esta función de respuesta de JavaScript?
- 5. ¿Qué hace esta asignación dinámica?
- 6. n & (n-1) ¿Qué hace esta expresión?
- 7. ¿Qué hace esta línea de javascript?
- 8. ¿Qué hace la función invisible()?
- 9. ¿Qué función jQuery data() hace
- 10. ¿Qué hace la función j en Rails?
- 11. ¿Qué hace la función _ ($ string) en PHP?
- 12. ¿Qué hace queryString en href de esta hoja de estilo?
- 13. ¿Qué está haciendo esta función de Ruby?
- 14. ¿Qué significa "esta función se fusionará"?
- 15. ¿por qué esta función no devuelve decimal?
- 16. ¿Por qué obtengo ninguna función coincidente cuando heredo esta función
- 17. ¿Qué hace la función cvWaitKey() de OpenCV?
- 18. ¿Qué hace la función de php 'sobrecarga'?
- 19. ¿Qué hace esto realmente? - Crazy C++ función
- 20. ¿Qué hace la función "_e()" de Wordpress?
- 21. ¿Qué hace esta línea perl de un archivo "blanqueado"?
- 22. ¿Qué hace la siguiente función get (1)?
- 23. ¿Tiene esta característica C# un nombre y qué hace?
- 24. ¿Qué hace esta fila del código c? (const VAR = "cadena";)
- 25. ¿Qué es WCF (y pros y contras)?
- 26. ¿Por qué esta función javascript se ejecuta sin ser llamada?
- 27. ¿Esta función existe en PHP?
- 28. ¿Qué significa esta expresión? (Función SetConsoleTextAttribute en C)
- 29. qué significa esta declaración de función en C++
- 30. ¿Por qué se usa "cuándo" en esta función?