2010-01-30 2 views
0

ML (SLMNJ) 파일을 읽고 일부 구조에 저장해야합니다. I는 선언을 그래프로 가리키는 어떤 데이터를 판독해야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)] 

(제 번호 : 노드 secend 번호 이름이 갈기 (각()에 대한 접속 노드, 제 번호 중량 이름 하나 갈기 표시)) expamle에 대한

이 파일을 읽을하고있는 구조, 그것은

답변

5

파일에서 읽어 줄에 문자열의 목록에이를 수행

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); 

당신이 튜플 구문 분석 할 수있는이 기능 (X, Y, Z)와 :

fun creatGraph([],reList) = reList 

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

답변의 원래 출처를 제공하는 것이 좋을 것입니다. http://stackoverflow.com/a/742549/2339141 –

1

이 문제는 구문 분석 콤비에 완벽하게 적합 저장할 수있는 당신이 steal from my friend Greg Morrisett at Harvard을 수있는 방법을 테스트 입력입니다.

기본 아이디어를 이해하려면 Graham Hutton의 논문 Higher-Order Functions for Parsing을 읽어보십시오. 표준 ML에서 I/O를 구현하는 방법을 알고 싶으면 의 TextIO module을 참조하십시오. 누군가가 당신을 위해 코드를 작성하기를 원하면 잘못된 웹 사이트에 도달했을 수 있습니다.

+0

방법 문자열을 int로 파싱하는 데 사용합니까? – SjB

+0

+1 downvote의 균형을 잡으십시오 –