リスト構造を使わないschemeが可能か?

http://www.pkan.org/~ufo/wiliki.cgi?ufo
遺伝的アルゴリズムの資料をヒントに思いついた。


具体的には
http://www.miv.t.u-tokyo.ac.jp/ibalab/papers/98/tokui98.pdf
この文献の「2.システムの概要」と
http://save.k.u-tokyo.ac.jp/jsces/trans/trans2004/No20040026.pdf
この文献の「4.並列分散線形GP」

prefix型の式を stack counter を使って解く。

ターゲット
3xy+y
これを prefix で表現すると
  +  *  3  *  x  y  y
 -1 -1  1 -1  1  1  1  (stack count)
となる。S式では
( + (* 3 ( *  x  y))y)
 -1 -1 1  -1  1  1  1  (stack count)

(部分木の stack count の総和は1になる。)

見やすくするため、1を+、-1を-で表す。

prefix表現
 +  *  3  *  x  y  y
 -  -  +  -  +  +  +

S式
(+ (*  3 (*  x  y))y)
 -  -  +  -  +  +  +

()内が1になるか計算
(-  -  +  -  +  +  +) = 1

 - (-  +  -  +  +) +  = 1

 -  -  + (-  +  +) +  = 1

 基点は必ず - となる。
 どの基点から開始しても必ず1となる終点がある。
 + が示すノードは終端ノードという。
 - が示すノードは非終端ノードという。

 全ての非終端ノードは2項演算子である。
 右側の非終端ノードから計算する。