kouamano / RECURSIVE-SYSTEM

test for recursive operation
3 stars 1 forks source link

不要な"@"("%") #76

Closed kouamano closed 4 years ago

kouamano commented 4 years ago

下の出力行で、"$##1[1]@@"の"@"(次期仕様では"%")が余分である、このノードにはデータバインドされない。しかし、本当にその解釈で良いか、検討する。

echo '($##1[1],##1$##2(A[1]),##2$##3(B[1]),##3(C[1]))' | ./tq.o in=/dev/stdin -FT -Pin data=num.csv
($##1[1]@@##1$##2@##2$##3@##3(C[1]@(4))(B[1]@(3))(A[1]@(2))(1),##1$##2@##2$##3@##3(C[1]@(4))(B[1]@(3))(A[1]@(2)),##2$##3@##3(C[1]@(4))(B[1]@(3)),##3(C[1]@(4)))
8 Nodes were operated.
ksakam commented 4 years ago

下の出力行で、"$##1[1]@@"の"@"(次期仕様では"%")が余分である、このノードにはデータバインドされない。

 このノードは、配列指定[1]を持ちかつ子ノードを持たない、ので1個のデータ(この場合1)がバインドされて良いと思います。すなわち、

($##1[1],##1$##2(A[1]),##2$##3(B[1]),##3(C[1]))

において、各ノードのバインド値は

$##1[1] -> 1
A[1]  -> 2
B[1]  -> 3
C[1]  -> 4

であるとすると、

$##1[1]@@##1$##2@##2$##3@##3(C[1]@(4))(B[1]@(3))(A[1]@(2))(1) 次期仕様では $##1[1]%@##1$##2@##2$##3@##3(C[1]%(4))(B[1]%(3))(A[1]%(2))(1)

において、

 「$##1[1]%の%は、直前のノード$##1[1]がバインド値を持つことを示し、その値が末尾の1である」

という解釈でよいと思います。  ただし、上例では問題ないですが、一般には 「@連鎖内の$##1[1]等各ノードが、後続のどのバインド値と対応するかが特定できるとは限らない」 という課題があります。これが問題かどうかは、@連鎖の意味づけにもよると思います。 (cf. issue73, 2020/5/7コメント by ksakam)

kouamano commented 4 years ago
ただし、上例では問題ないですが、一般には
「@連鎖内の$##1[1]等各ノードが、後続のどのバインド値と対応するかが特定できるとは限らない」

@ksakam では、このissueは一旦closeしますか。

ksakam commented 4 years ago

@ksakam では、このissueは一旦closeしますか。

はい、いったんcloseでよいと思います。

kouamano commented 4 years ago

close。