2009-03-25 3 views
1

У меня есть этот код SML/NJ, который читает одну строку из текстового файла, а затем возвращает список для меня, но у меня возникают проблемы с тем, что он делает то же самое для каждой отдельной линии и останавливаться, когда линий больше нет. Может кто-нибудь, пожалуйста, помогите мне, предоставив мне образец цикла?Зацикливание строк текстового файла в SML/NJ

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

    val list = [] 
    fun listing() = [TextIO.inputLine ins]::list; 

in listing() 
end 

ответ

6

Как о чем-то вроде этого:

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