| shwlinux 
 
 
 가입: 2011년 9월 26일
 올린 글: 39
 
 
 | 
			
				|  올려짐: 2011년11월18일 23:06    주제: (수정) 숙제 7-2 테스트셋 |   |  
				| 
 |  
				| (* 제가 잘못 짜서 11번이 문제가 있었네요. 수정했습니다 또 문제가 있으면 알려주세요.
 11번의 오류를 지적해주신 김태훈 학우님 감사합니다
  *) 
 예전에 숙제 5-3의 테스트셋으로 올라왔던
 
 작년 조교님의 테스트셋과
 
 김찬민님의 테스트셋을 변형해보았습니다..
 
 혹시 문제 있으면 지적해주세요!
 
 사용방법은 ocaml 실행후
 
 7-2의 파일을 open한 후
 
 다음의 코드를 붙여 넣으면 됩니다.
 
 참고로 pprint는 liquid -> unit이라 어떻게 테스트해야 할지를 모르겠네요..
 
 혹시 아시는 분 있으면 어떻게 테스트할지 가르쳐주세요^^;
 
 
  	  | 코드: |  	  | open SkiLiquid 
 let a l1 l2 = M (l1, l2)
 let v str = V str
 
 let makeI e =
 M (I, e)
 
 let makeK e1 e2 =
 M (M (K, e1),e2)
 
 let makeS e1 e2 e3 =
 M (M (M (S, e1), e2), e3)
 
 let sol1 = makeI (V "Alice")
 
 let sol2 = makeK I S
 
 let sol3 = makeS (V "how") (V "you") (V "do")
 
 let sol_13 = M (sol1,sol3)
 
 
 let _ =
 print_string (if react S = S then "#1 : success" else "#1 : fail");
 print_newline();
 print_string (if react K = K then "#2 : success" else "#2 : fail");
 print_newline();
 print_string (if react I = I then "#3 : success" else "#3 : fail");
 print_newline();
 print_string (if react (M (S,I)) = M (S,I) then "#4 : success" else
 "#4 : fail");
 print_newline();
 print_string (if react sol2 = I then "#5 : success" else "#5 : fail");
 print_newline();
 print_string (if react sol_13 = M (V "Alice", M (M (V "how", V "do"),
 M (V "you", V "do"))) then "#6 : success" else "#6 : fail");
 print_newline();
 print_string (if react (M (M (M (I, (M (M (S,K), S))), (M (M ((V "1"),K), (M (M (I,I),K))))), (M (S, (V "2"))))) = M (M (M (V "1", K), K), M (S, V "2")) then "#7 : success" else "#7 : fail");
 print_newline();
 print_string (if (react (a (a (v "3") (a (a (a (a (a (a I K) (a K I)) (a K (a K K))) S) (v "4")) S)) (a (a (a (a (a S I) (a (a K (v "5")) (a K S))) (a (a I I) S)) (a S I)) (a (a (a (a (a K I) I) (a (a (v "6") (a (v "7") (v "8"))) (a K (v "9")))) (a (a (a I K) S) (v "10"))) (a (a I (a (a (a (v "11") (v "12")) (v "13")) (v "14"))) (a S (a (a (a I K) S) (a K S)))))))) = M (M (V "3", M (V "4", S)), M (M (M (V "5", S), M (M (M (M (V "6", M (V "7", V "8")), M (K, V "9")), S), M (M (M (M (V "11", V "12"), V "13"), V "14"), M (S, S)))), M (M (S, I), M (M (M (M (V "6", M (V "7", V "8")), M (K, V "9")), S), M (M (M (M (V "11", V "12"), V "13"), V "14"), M (S, S)))))) then "#8 : success" else "#8 : fail");
 print_newline();
 
 print_string (if (react (a (a (a I S) (a K S)) (a (v "15") (a K K))))
 = M (M (S, M (K, S)), M (V "15", M (K, K))) then "#9 : success" else "#9 : fail");
 print_newline();
 print_string (if (react (v "16")) = v "16" then "#10 : success" else "#10 : fail");
 print_newline();
 print_string (if (react (a (a (a S S) (a K (a S (a (a S K) S)))) (a K (a (a (a S (a S K)) (a I (a S S))) S)))) = M (M (S, M (K, M (M (S, S), S))), M (S, M (M (S, K), S))) then "#11 : success" else "#11 : fail");
 print_newline();
 print_string (if (react (a (a (a (a (a S I) (a (a (v "17") (a K S)) (a (a S (v "18")) (v "19")))) (a (a (a (a S K) (a I I)) (a (a (v "20") S) (a I I))) (a (a S (v "21")) (a (a (v "22") K) K)))) (a (a (a (v "23") (a (a K S) (a K (v "24")))) (a (a S K) S)) (a (a (a (a S (v "25")) (a K K)) (a I K)) (a K (a (a (v "26") I) (a K S)))))) (a (a (a (v "27") K) (a I (a (a S K) (a (a (v "28") I) (a I S))))) (a (a (a I (a (a S I) (a (v "29") (v "30")))) (a (v "31") (a I (a (v "32") (v "33"))))) (a (a (a (a K I) (v "34")) I) (a (a I (v "35")) (a (v "36") I))))))) =
 M (M (M (M (M (M (V "20", S), I), M (M (S, V "21"), M (M (V "22", K), K))), M (M (M (V "17", M (K, S)), M (M (S, V "18"), V "19")), M (M (M (V "20", S), I), M (M (S, V "21"), M (M (V "22", K), K))))), M (M (M (V "23", S), M (M (S, K), S)), M (M (M (V "25", K), K), M (K, M (M (V "26", I), M (K, S)))))), M (M (M (V "27", K), M (M (S, K), M (M (V "28", I), S))), M (M (M (V "31", M (V "32", V "33")), M (M (V "29", V "30"), M (V "31", M (V "32", V "33")))), M (V "35", M (V "36", I))))) then "#12 : success" else "#12 : fail");
 print_newline(); ;;
 
 | 
 |  |