Revision | a9e700fb69b748aa9a63658884b16dd0efa65aa8 (tree) |
---|---|
Time | 2018-12-27 23:01:55 |
Author | dhrname <dhrname@user...> |
Commiter | dhrname |
Modify the replace_node inline function
@@ -546,10 +546,10 @@ static inline void replace_node(ST_Node first, ST_Node applied, ST_Node freelist | ||
546 | 546 | } |
547 | 547 | else if(node->nodeType == ST_VARIABLE_NODE) |
548 | 548 | { |
549 | - /*現在ノードのキャッシュ*/ | |
550 | - ST_Node cache; | |
551 | 549 | if ( ST_first(ST_getNodeValue(node)) == value ) |
552 | 550 | { |
551 | + /*現在ノードのキャッシュ*/ | |
552 | + ST_Node cache; | |
553 | 553 | /*nodeが解放されるため、キャッシュしておく*/ |
554 | 554 | cache = node; |
555 | 555 | /*束縛変数の値が等しいならばノードをappliedのコピーノードと置き換えていく |
@@ -595,18 +595,8 @@ static inline ST_Node beta_reduce(ST_Node blist) | ||
595 | 595 | /*ベータ簡約の結果、新たに生成されたノード*/ |
596 | 596 | ST_Node result = ST_EMPTY_NODE; |
597 | 597 | |
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 | + * 現在ノードが関数抽象以外のとき*/ | |
610 | 600 | |
611 | 601 | ST_Node first = blist; |
612 | 602 |
@@ -627,7 +617,7 @@ static inline ST_Node beta_reduce(ST_Node blist) | ||
627 | 617 | { |
628 | 618 | |
629 | 619 | /*firstが変数ノードであれば、計算実体ノードへ変わる*/ |
630 | - if(first->nodeType == ST_VARIABLE_NODE) | |
620 | + if(ST_VARIABLE_NODE == first->nodeType) | |
631 | 621 | { |
632 | 622 | first->nodeType = ST_Thunk_NODE; |
633 | 623 |
@@ -644,8 +634,7 @@ static inline ST_Node beta_reduce(ST_Node blist) | ||
644 | 634 | |
645 | 635 | break; |
646 | 636 | } |
647 | - | |
648 | - if (ST_LAMBDA_ABSTRACTION_NODE == first->nodeType) | |
637 | + else if (ST_LAMBDA_ABSTRACTION_NODE == first->nodeType) | |
649 | 638 | { |
650 | 639 | /*appliedはfirstが関数抽象のときのみ、適用対象となる |
651 | 640 | * 関数適用はノード値が一致したnodeをappliedのコピーノードに置き換えることとなる*/ |