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