Bonjour, je débute en scheme et suis un peu dérouté (dégouté ? ;-)) par la syntaxe... Je cherche à comprendre ce code.
Je vois le principe du lambda appelé directement par call-with-input-file... Qui fait un truc du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 (call-with-input-file "test1.scm" (lambda (p) (let f ((x (read p)) ) (if (eof-object? x) '() (cons x (f (read p)))) ) ) )
open
yield -> le code lambda
close
Par contre, je pige pas trop ce qui suit :
- Que représente le f du let ? (Puisque ce que les données lues se trouvent dans x)
- A la fin, quand on détecte un EOF on retourne une liste vide mais dans le cas contraire (la lecture continue) que fait le cons x ? Pourquoi y a-t-il encore un read ??
J'imagine aussi que le nil ou le cons sont retourné à l'appelant, et que l'appelant procède à un boucle tant qu'on lui retourne pas nil...
Merci de m'éclairer... Je cherche des exemples en scheme simples à comprendre, pas du tout orienté vers les maths, du coup je me tourne vers les fichiers, les sockets, etc.
Partager