kouamano / RECURSIVE-SYSTEM

test for recursive operation
3 stars 1 forks source link

tq/cqコードレビュー議事メモ(2020.6.25) #84

Closed ksakam closed 3 years ago

ksakam commented 4 years ago

日時: 6/25(木)10:00-11:30 (於:M-cube116) 参加: 天野氏、坂本(記) 資料: (打合結果反映済) cq-code-review-20200625-after.pptx (p79~)

議事内容:

  1. オペレータの評価 ・tqのオペレータは「バックトラック」なしに評価できる (例)「f(x,y)」の評価(tqではprint)
    • (古典的)lisp流はbottom up => x、y、fの順に評価
    • tqは、top downもあり(bottom upとのhybrid) => f、x、yの順に評価(print)

・tqにおいて、「f(x,y)」の評価方式をbottom up/topdownいずれで実行するかはfにおまかせ。

・「f(x,y)」の評価方式がfの親(下例g)に依存する場合もある。 この場合は、fが構文木から親であるgを特定する。 (例) 「g(f(x,y))」

・tqにも、従来のtq型オペレータに加えてlisp型オペレータを導入する。 (例) 以下の$mult$$plus$ {$op$({X(Y),P(Q,R)}[1](Z),{$cat$(“$”,”#”)}{$mult$(1,4{2})}[2],{MM,KG}[{$plus$(1,1)}])}A{B,C}[](D,E)

- 式のprint処理においては、lisp型オペレータを評価結果の値に置換したのち、print処理を実行する。
- オペレータがlisp型であるかtq型であるかは、オペレータテーブルで管理する。
  1. {}の導入 ・<function>において、引数なしオペレータの場合、escape用には{}は不要であるが、<function>の範囲を明示するために{}で囲ってもよい。 (例)以下は等価であり、いずれでもよい。
    $PI$(...)
    {$PI$}(...)

・{}はBNFでは定義しない方向(“”と同様)

  1. その他 ・現状のtqでは、out内の式には値をbindしないなどの制約があるが、in/outに関する制約は廃止する。 ただし、Executorは残す。

・次回