diff --git a/simplest_model/tests.ml b/simplest_model/tests.ml index 2039036..6e7452f 100644 --- a/simplest_model/tests.ml +++ b/simplest_model/tests.ml @@ -53,6 +53,7 @@ let%expect_test "synthesis test 6" = print_endline (synt_t6 ()); [%expect {| [[R let%expect_test "synthesis test 7" = print_endline (synt_t7 ()); [%expect {| [[Ref; Val]; [Val; Val]] |}] let%expect_test "synthesis test 8" = print_endline (synt_t8 ()); [%expect {| [[Val; Ref]; [Val; Val]] |}] let%expect_test "synthesis test 9" = print_endline (synt_t9 ()); [%expect {| [[Val; Ref]; [Val; Val]] |}] -(* TODO: test with assymetric args order *) -(* TODO: tests names *) + +(* NOTE: inf test in current model (without additional functional interfaces and ) *) +(* let%expect_test "recursive eval test" = print_endline (rec_eval_t ()); [%expect {| [St ([], [], O, [])] |}] *) diff --git a/simplest_model/tests_f.ml b/simplest_model/tests_f.ml index 1da1256..18ea63f 100644 --- a/simplest_model/tests_f.ml +++ b/simplest_model/tests_f.ml @@ -427,3 +427,12 @@ let synt_t9 _ = show(answerTags) (Stream.take (run qr ocanren {eval_progo (Prog ([FunDecl ([q; r], [Write 0; Read 1])], FunDecl ([Val; Val], [Call (0, [0; 1]); Read 0; Read 1]))) (St ([], [], 0, []))}) (fun q r -> [q#reify (Tag.prj_exn); r#reify (Tag.prj_exn)]))) +(* prog with recursive function call *) +let rec_eval_t _ = show(answer) (Stream.take (run q + (fun q -> let open Prog in + let open FunDecl in + let open Tag in + let open Stmt in + ocanren {eval_progo (Prog ([FunDecl ([Ref], [Write 0; Call (0, [0])])], FunDecl ([Val], [Call (0, [0]); Write 0; Read 0]))) q}) + (fun q -> q#reify (St.prj_exn)))) +