我謹代表一組函數和他們類型規則,以及正在考慮的數據結構的...例如,表示一組功能及其類型規則
For function "PLUS":
PLUS-integer: Integer -> Integer -> Integer, with priority high
PLUS-boolean: Boolean -> Boolean -> Integer, with priority high
...
For function "Unary Minus":
UM-0: Integer -> Integer, with priority high
UM-1: Date -> Date, with priority high
...
For function "Unary Minus":
UM-error: Date -> Error, with priority low
...
一些意見:本功能和規則的名稱始終是唯一的;一個函數(例如PLUS)總是有固定數量的參數,並且可以有多個與之相關的輸入規則;打字規則有一個名稱(例如PLUS-integer),一個前提,一個結論和一個優先級。可能有兩個分享規則具有相同的前提,但給出不同的結論,在這種情況下,這是優先考慮的因素。
後來,我需要這樣定義功能:
add_rule: add a rule to a function
get_rules: get all the rules from a function
get_first_rule: get the most priority rule from a function and a premise
get_conclusions: get all the conclusions that a function can give
get_errors: get all the rules whose conclusion is an error
get_function: get the function from a typing rule
set_priority: set a priority for a rule
...
爲此,我不知道是否有定義這些類型的傳統方式......在此刻,我想一個方法如下:
type func =
{ name: string;
... }
type rule =
{ name: string;
premise: Type.t list;
conclusion: Type.t;
priority: Priority.t
... }
type rules = rule list
幾個問題:
1)它是一個好主意,定義rules
爲rule
列表,與ARRA比較Y ...關於func
和rules
之間的關係
2),有幾種選擇:讓rules
爲func
一個記錄字段;使func
作爲rule
的記錄字段;製作func
和rules
的哈希表;製作從func
到rules
的地圖。我真的不知道哪種方式比較好...
另一方面我需要考慮的是該數據庫的啓動,有很多進入,所以我希望我選擇的類型將啓動容易進入並期待直線前進...
誰能幫助?