2009-03-23 7 views
-1

Je suis un débutant en train d'apprendre sml et la question que l'on me pose implique des fonctions d'E/S que je ne comprends pas. Voici les 2 questions que j'ai vraiment besoin d'aide pour me lancer, s'il vous plaît me fournir du code et quelques explications, je serai en mesure d'utiliser des essais et erreurs avec le code donné pour les autres questions. Q2) readlist (nom de fichier) qui lit une liste de noms de fichiers (dont chacun a été produit par listdir dans (Q1) et les combine en une grande liste (lit dans le fichier texte au Q1, puis assigne le contenu En 1 grande liste contenant toutes les informations)smlnj listdir problèmes

Il est vrai, j'ai seulement appris du conférencier à l'école sur la section d'introduction, il n'y a même pas un exemple d'entrée ou de sortie du système, même pas la fonction "utiliser le fichier" Si quelqu'un qui connaît sml voit cela, s'il vous plaît aidez, merci à tous ceux qui ont fait l'effort pour m'aider

Merci pour la réponse, actuellement j'utilise SMLNJ pour essayer de le faire. En pratique, Q1 me demande de lister les fichiers du répertoire "directoryname" fournis dans un fichier texte dans "filename". Le Q2 ​​me demande de lire le fichier texte "nom de fichier", puis de placer le contenu dans une grande liste.

Par ailleurs, si vous ne voyez que cet article, essayez de poser des questions. Actuellement, je suis coincé en train de lire à partir du fichier txt et annexant à une liste, je suis en mesure de le faire pour une seule ligne, mais essaie maintenant de le faire pour le fichier entier:

fun readlist(infile : string) = 
let val ins = TextIO.openIn infile 

fun listing() = 
TextIO.inputLine ins; 

in listing() 
end; 
TextIO.closeIn; 
+0

Ce que vous demandez n'est pas très clair. Avez-vous besoin d'implémenter ces deux fonctions, ou sont-elles implémentées et vous devez les utiliser pour quelque chose? – jalf

Répondre

1

Il est très difficile pour moi de distinguer les questions que vous essayez de poser.

Les fonctions que vous demandez ne font pas partie de la bibliothèque de base standard pour ML. Si vous êtes supposé les écrire, vous allez avoir du mal sans un module Posix. Vous pouvez dire à votre instructeur que je ne me suis pas occupé de cette tâche.

Moscou ML contient une fonction listDir qui est admirablement simple:

- load "Mosml"; 
> val it =() : unit 
- Mosml.listDir "."; 
> val it = ["natural-semantics.djvu", "natural-semantics.pdf"] : string list 
- 

Pour obtenir plus d'aide, s'il vous plaît être un peu plus clair ce que vous demandez.


EDIT: Comme il est une question de devoirs que je ne devrais pas vous donner la réponse, mais certaines fonctions utiles comprennent openDir, readDir et closeDir de la structure OS.Filesys. Ceux-ci vous diront ce qu'il y a dans le répertoire. Ensuite, pour lire et écrire des fichiers, vous voulez TextIO. Vous trouverez le Standard Basis Library documentation indispensable.

+0

Merci pour la réponse, actuellement j'utilise SMLNJ pour essayer de le faire. Fondamentalement, Q1 me demande de lister les fichiers du répertoire "nom_répertoire" fournis dans un fichier texte dans "nom_fichier". Le Q2 ​​me demande de lire le fichier texte "filename", puis de placer le contenu dans une grande liste. –

+0

OK, j'ai ajouté quelques suggestions sur les fonctions à utiliser. Ils sont tous en SML/NJ, au moins celui sur ma machine, qui est la version 110.67. –

+0

Thx pour les fonctions, c'est utile. Puis-je demander quelques explications sur le plaisir quelque chose (un: quelque chose) = laisser val a = un +1 à la fin Je ne comprends pas vraiment comment le "let", "in", "fin" fonctionne, y at-il un webby à Lire sur eux? –

1

Vous êtes sûr que je ne vous ai pas enseigné? tu me dois une tarte au poulet.

+0

Je peux confirmer que l'utilisation de la fonction "fichier.sml" n'a pas été enseignée, et les choses TEXTIO ne sont pas enseignées aussi. Les choses qui sont enseignées sont principalement val a = quelque chose, liste, amusant quelque chose (a, b) = quelque chose; , pas n'importe quoi hors cours. Labs et lect montré est en tapant dans cmd et ne pas utiliser "fichier.sml" –