Lorsque je fais une liste dans Scheme, à quoi pointe le cdr de la dernière paire? Est-ce un «mot vide» ou une «liste vide»? DrScheme ne dérange pas (cons 'a empty)
ni (cons 'a '())
. Enfin quelle est la différence entre le mot vide et la liste vide?À quoi sert le dernier élément d'une liste dans Scheme?
Répondre
DrScheme ne me dérange pas votre cons
-ing, parce que cons
peut faire plus que simplement construire des listes. De la référence,
(cons a d) → pair? a : any/c d : any/c
signifie que cons
construit paires. Il est également tout à fait légal de le faire
> (cons 1 2)
(1 . 2)
qui n'est pas une liste, mais qui vous laisse toujours faire
> (car (cons 1 2))
1
> (cdr (cons 1 2))
2
Mais de toute façon, le « mot vide » et la « liste vide » sont le même objet , comme peut être vérifié par
> (eq? empty '())
#t
Le cdr de la dernière paire pointe vers '(), la liste vide.
La réponse à toutes vos questions peut être trouvée si vous évaluez le symbole empty
. Il est défini comme égal à '()
, la liste vide, et c'est ce à quoi pointe le dernier CDR. Pour vous convaincre, essayez ceci:
(cdr (list 1 2 3))
(cdr (cdr (list 1 2 3)))
(cdr (cdr (cdr (list 1 2 3))))
Bien qu'il réponde à une partie de ma question, je viens de me rendre compte que le cdr n'a pas besoin d'être vide. Je pourrais avoir une liste incorrecte comme (un b .d). Merci quand même. – unj2
- 1. À quoi sert __gxx_personality_v0?
- 2. À quoi sert MyAssembly.XmlSerializers.dll?
- 3. À quoi sert le dossier obj?
- 4. À quoi sert le paramètre Neutral Language?
- 5. System.Web.Abstractions: à quoi sert-il?
- 6. à quoi sert un manifeste?
- 7. Dans Active Directory, à quoi sert mailNickname?
- 8. $$ dans jQuery, à quoi cela sert-il?
- 9. À quoi sert Reflection dans .NET?
- 10. À quoi sert la propriété AppDomainSetup.SandboxInterop?
- 11. À quoi sert la variable d'environnement XDG_SESSION_COOKIE?
- 12. À quoi sert l'expression régulière/^ \ s * $/do?
- 13. À quoi sert l'opérateur de substitution Perl?
- 14. À quoi sert "strip" (application GCC)?
- 15. À quoi sert le paramètre de chemin HHOJSID URI?
- 16. SQL Server et le compte Invité - à quoi sert-il?
- 17. à quoi sert le sel jeton anti-falsification?
- 18. À quoi sert ModelState.IsValid dans ASP.NET MVC dans NerdDinner?
- 19. ASP.NET MVC, À quoi sert le dossier Modèles?
- 20. Officiellement, à quoi sert le nom de fichier?
- 21. À quoi sert le fichier .cs sous MyDataContext.dbml?
- 22. À quoi sert le message WM_REFLECT de l'API WIN32?
- 23. À quoi sert le développement piloté par les modèles?
- 24. A quoi sert vraiment EditorReuseAttribute?
- 25. À quoi sert "string [] args" dans la classe Main?
- 26. À quoi sert l'observation variable dans une classe Java?
- 27. A quoi sert le N dans varchar (N)
- 28. À quoi sert la directive du compilateur @package dans Cocoa?
- 29. À quoi sert la collection TempData dans asp.net MVC?
- 30. Scheme Comment prendre le premier article dans la liste?
pourquoi (contre 'vide') fonctionne? – unj2
Toutes les listes sont constituées d'une série de listes, chacune de longueur 2. Par exemple, (1 2 3) est en fait une liste de longueur 2: le premier élément est 1, et le second élément est (2 3). Cette liste interne est également une liste de longueur 2: le premier élément est 2, et le deuxième élément est (3). Ce deuxième élément est en fait une liste de deux éléments également: le premier élément est 3 et le deuxième élément est(). Donc, cons ('a'()) renvoie ('a), parce que c'est en fait (' a. '()). –