2010-01-30 16 views
0

Je dois lire le fichier en ML (SLMNJ) et le sauvegarder dans certaines structures. Je dois lire certaines données qui pointe vers un graphique déclaration:Ouvrir le fichier en ML (SMLNJ)

[(1 , 2 , 13),(2 , 3 , 3),(2 , 4 , 8),(2 , 5 , 4),(3 , 1 , 5),(3 , 4 , 1),(4 , 6 , 5),(5 , 5 , 5),(6 , 4 , 6)] 

(premier numéro: nom du nœud, numéro de secend: nom du noeud connecté, troisième poids de nombre pour cette crinière (each() montrent une crinière))

pour expamle ce test est entrée à lire fichier et quelle structure pour l'enregistrer

Répondre

5

pour la lecture du fichier suivre cette liste de chaîne par ligne:

val infile = "c:/input.txt" ; 

fun readlist (infile : string) = let 

    val ins = TextIO.openIn infile 

    fun loop ins = 

    case TextIO.inputLine ins of 

     SOME line => line :: loop ins 

    | NONE  => [] 

in 

    loop ins before TextIO.closeIn ins 

end ; 

val pureGraph = readlist(infile); 

et cette fonction vous pouvez analyser à tuple (x, y, z):

fun creatGraph([],reList) = reList 

|creatGraph(x::y::z::input,reList) = creatGraph(input,[email protected][(x,y,z)]); 
+2

Il serait bon de fournir la source originale de la réponse. http://stackoverflow.com/a/742549/2339141 –

1

ce problème est parfaitement adapté à combinateurs d'analyse syntaxique, que vous pouvez steal from my friend Greg Morrisett at Harvard.

Si vous voulez comprendre les idées sous-jacentes, lisez le document de Graham Hutton Higher-Order Functions for Parsing. Si vous voulez savoir comment implémenter les E/S en ML standard, consultez le TextIO module dans le Standard Basis Library. Si vous voulez que quelqu'un écrive le code pour vous, vous avez peut-être atteint le mauvais site Web.

+0

Comment l'utiliser pour pars chaîne à int? – SjB

+0

+1 pour équilibrer la downvote –