Closed yutakang closed 5 years ago
Probably I should have only one signature for Eval_Path and use it for both Eval_Inner_Path
and Eval_Outer_Path
.
The good news is that we do not have to expose the tables (path-to-(inner/outer)node-table and print-to-(inner/outer)-nodes-table).
So, we can have an ML functor from_Table_to_Eval_Path: PATH_TO_UNODE_TABLE -> EVAL_PATH
.
So, it is going to be something like
structure Eval_Inner_Path = from_Table_to_Eval_Path (Inner_Table)
structure Eval_Inner_Parameter
= from_Path_To_Parameter (Eval_Inner_Path)`This means I have to have constructs for outer-nodes even when I deal with inner-nodes.
Use Utils.try'
.
Essentially, the only difference between Inner
and Outer
should be
from_Table_to_Eval_Path
and from_Variable_To_Quantifier
,from_Variable_to_Eval_Quantifier
and from_Variable_To_Quantifier
.I think we can produce Quantifier_Domain
from a path-to-node-table. i.e.
structure Quantifier_Inner_Domain = from_Table_To_Quantifier_Domain (Inner_Table)
structure Quantifier_Outer_Domain = from_Table_To_Quantifier_Domain (Outer_Table)
which means we probably do not have to have these functors independently.
Done.
signature TEST = sig type test_type; end; structure Test = struct datatype test_type = One | Two; end; Test.One; structure Test2 = Test:TEST; (Test2.One;)
functor mk_Test (T:TEST) = T; structure Test3 = mk_Test(Test); (Test3.One;)