• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

Revisiona9e700fb69b748aa9a63658884b16dd0efa65aa8 (tree)
Time2018-12-27 23:01:55
Authordhrname <dhrname@user...>
Commiterdhrname

Log Message

Modify the replace_node inline function

Change Summary

Incremental Difference

--- a/source_code/shadowstar.c
+++ b/source_code/shadowstar.c
@@ -546,10 +546,10 @@ static inline void replace_node(ST_Node first, ST_Node applied, ST_Node freelist
546546 }
547547 else if(node->nodeType == ST_VARIABLE_NODE)
548548 {
549- /*現在ノードのキャッシュ*/
550- ST_Node cache;
551549 if ( ST_first(ST_getNodeValue(node)) == value )
552550 {
551+ /*現在ノードのキャッシュ*/
552+ ST_Node cache;
553553 /*nodeが解放されるため、キャッシュしておく*/
554554 cache = node;
555555 /*束縛変数の値が等しいならばノードをappliedのコピーノードと置き換えていく
@@ -595,18 +595,8 @@ static inline ST_Node beta_reduce(ST_Node blist)
595595 /*ベータ簡約の結果、新たに生成されたノード*/
596596 ST_Node result = ST_EMPTY_NODE;
597597
598- /*関数適用のパターンは以下の通り
599- * (1) 変数に関数抽象を適用
600- * (2) 変数に変数を適用
601- * (3) 関数抽象に変数を適用
602- * (4) 関数抽象に関数抽象を適用
603- * (5) 計算実体に変数か関数抽象を適用
604- * (6) 変数に計算実体を適用
605- * (7) 関数抽象に計算実体を適用
606- * パターンに応じて、以下では処理を変えていく
607- *
608- * 現在のノードが計算実体化するのは、現在ノードが関数抽象以外のとき
609- * よって、(1),(2),(5),(6)のパターンのみである*/
598+ /*現在のノードが計算実体化するのは、
599+ * 現在ノードが関数抽象以外のとき*/
610600
611601 ST_Node first = blist;
612602
@@ -627,7 +617,7 @@ static inline ST_Node beta_reduce(ST_Node blist)
627617 {
628618
629619 /*firstが変数ノードであれば、計算実体ノードへ変わる*/
630- if(first->nodeType == ST_VARIABLE_NODE)
620+ if(ST_VARIABLE_NODE == first->nodeType)
631621 {
632622 first->nodeType = ST_Thunk_NODE;
633623
@@ -644,8 +634,7 @@ static inline ST_Node beta_reduce(ST_Node blist)
644634
645635 break;
646636 }
647-
648- if (ST_LAMBDA_ABSTRACTION_NODE == first->nodeType)
637+ else if (ST_LAMBDA_ABSTRACTION_NODE == first->nodeType)
649638 {
650639 /*appliedはfirstが関数抽象のときのみ、適用対象となる
651640 * 関数適用はノード値が一致したnodeをappliedのコピーノードに置き換えることとなる*/