PF2 - le cours 9
Voici le cours 9 et le TP9. sur les vecteurs [les tableaux de Java, sauf qu'en Scheme on peut mélanger les types]...
En ce qui concerne le TP8, il faut bien saisir la nuance entre le nom physique d'un fichier-disque "foo.txt" qui est une string, et le port (d'entrée ou de sortie) qui permet la communication (unidirectionnelle) entre l'ordinateur et le fichier sur le disque dur.

Par exemple, pour lire un fichier "foo.txt", la fonction call-with-input-file va nous fournir un port d'entrée p-in :
(call-with-input-file "foo.txt"
(lambda (p-in)
lectures sur
le port p-in))
Le port est automatiquement fermé à la fin du traitement, c'est à dire à la fin de l'exécution de la lambda-expression. Simple ? Ouaip, simple. Idem si le port est en sortie, donc si l'on veut écrire au lieu de lire (sauf qu'il faut alors préciser ce qu'on doit faire si le fichier existe déjà).
En supposant que l'on a programmé read-line-until de l'exo 3 (corrigé ci-dessous), voici comment l'utiliser pour trouver au toplevel le première ligne d'un fichier boursorama.rkt contenant le mot none :
> (call-with-input-file "boursorama.rkt"
(lambda (p-in)
(read-line-until p-in (lambda (str) (regexp-match "none" str)))))
" (file-stream-buffer-mode p-out 'none)"
Pour le TP8, voici une solution possible du client Web... Je récupère en temps réel le cours de l'action AAPL [Apple Computer] sur le Nasdaq pour vérifier si les ventes de l'iPad ont une influence sur le moral des boursiers :-)
Euh, l'iPad comme console de jeux rétro ?
