Bien, esto puede sonar como una pregunta ridícula, pero ¿cómo se devuelve una lista en el esquema ?.Esquema de cómo crear una lista
Respuesta
Probablemente quiera simplemente: '(2 3 5 7 11)
o (list 2 3 5 7 11)
?
También puede construir listas mediante la especificación de un elemento y una lista para añadirlo a: (cons 2 (cons 3 '()))
He aquí un ejemplo de devolver una lista de una función:
(define returnlist
(lambda(a b c)
(cons a (cons b (cons c '())))
))
(returnlist 2 3 4)
Valor de retorno será la lista : (list 2 3 4)
Otra forma no tan bien conocido para hacer esto:
> ((lambda x x) 2 3 5 7 11)
(2 3 5 7 11)
, es decir, la función de "lista" sí se puede definir como:
> (define list (lambda x x))
Sobre la base de ver algunas de sus otras preguntas, creo que puede estar teniendo problemas para conseguir su cabeza envuelta en torno a los conceptos centrales a un funcional lenguaje como Scheme.
En el nivel que está aprendiendo Scheme (novato), cada función que escribe tiene una entrada y una salida, y el cuerpo de cada función es una sola expresión. Cualquier valor que la expresión evalúa es devuelto por la función. No es necesario "devolver" explícitamente nada como lo haría en un lenguaje imperativo como Java o C; simplemente sucede como una consecuencia directa de la evaluación de la expresión.
El cuerpo de una función es una expresión única. No es como Java, donde el cuerpo de un método consiste en una serie de instrucciones:
do this
then do that
then do something else
then return something (maybe)
funcionamiento del Esquema evalúan una sola expresión; nada mas. He aquí una simple función que añade 5 a cualquier número se pasa como argumento:
(define (add5 x)
(+ x 5))
El cuerpo de la función es (+ x 5)
, que es sólo una expresión a evaluar. El valor de x
está conectado, la función +
(adición) se aplica a x
y 5, y se devuelve el resultado.
Las listas no son muy diferentes. Todo lo que necesitas es una expresión que construirá una lista. Dos ya se han mencionado: list se utiliza para crear una lista desde cero si ya tiene todos los elementos; cons se usa para agregar un solo elemento a una lista existente y se usa a menudo de forma recursiva.
Aquí es una función que consume un número n
y construye la lista (n n-1 n-2 ... 0)
(define (makelist n)
(if (= n 0)
(list 0) ; base case. Just return (0)
(cons n (makelist (- n 1))))) ; recursive case. Add n to the head of (n-1 n-2 ... 0)
En la base y en los casos recurrentes, se devuelve una lista con sólo evaluar una expresión que utiliza una de las funciones de fomento de la lista .
Aquí hay otro ejemplo.Éste utiliza nuestra función add5
añadir 5 a cada elemento de una lista de números (lon):
(define (add5list lon)
(if (null? lon)
`() ; base case: lon is empty. Return an empty list.
(cons (add5 (car lon)) (add5list (cdr lon))))) ; recursive case.
; Add 5 to the head of lon and prepend it to the tail of lon
Una vez más, la base y en los casos recurrentes están regresando listas mediante la evaluación de expresiones que resultan en las listas.
La clave para recordar sobre Scheme es que todas las funciones devuelven algo, y ese algo es simplemente el resultado de evaluar una expresión. El cuerpo de una función Scheme es una expresión única.
- 1. Esquema: CAR y CDR de una lista
- 2. Cómo crear un esquema para una lista desordenada de nodos XML, con restricciones de ocurrencia
- 3. Cómo crear esquema en SQL
- 4. Cómo crear una base de datos Esquema usando Hibernate
- 5. Crear esquema en SSMS
- 6. Cómo crear una lista de correo electrónico
- 7. cómo crear una lista de listas
- 8. cómo crear una lista de categorías/segmentos?
- 9. Crear una lista de EL
- 10. ¿Cómo puedo crear una nueva lista de la lista existente?
- 11. Cómo crear una lista desde el rango
- 12. Cómo crear una lista anidada en reStructuredText?
- 13. ¿Cómo podría crear una lista en C++?
- 14. Replicar una lista para crear una lista de listas
- 15. ¿Cómo crear una lista con los caracteres de una cadena?
- 16. Esquema: valor de cambio de un elemento en una lista
- 17. Función de esquema de desplazamiento como una lista
- 18. Lista Comprensión Biblioteca para el Esquema?
- 19. Crear una lista numerada automáticamente
- 20. Crear una lista de páginas en Orchard
- 21. eliminando el último elemento de una lista (esquema)
- 22. Crear una lista de objetos en Python
- 23. Crear una lista de respaldo en python
- 24. Crear una lista de medicamentos genéricos
- 25. Crear una lista de objetos en Python
- 26. Java: crear una lista de HashMaps
- 27. Crear una lista de listas en C#
- 28. Crear una lista de conjuntos de átomos
- 29. Cómo crear un esquema de la forma mongo/nosql
- 30. PostgreSQL ¿cómo crear una copia de una base de datos o esquema?
Puede que le sea útil: http://www.r6rs.org/. No es excesivamente técnico en su mayor parte y puede responder muchas preguntas como esta. Es una guía muy útil para entender cómo los programas Scheme están hechos de las estructuras de datos más comunes en Scheme. – avpx