physis#52
Szerintem ez nagyon szép megoldás, és nem jutott eszembe még soha így, köszönöm, hogy ilyen értetően leírtad. A rögtön kipróbálható működéstől szerintem már nem választja sok el, valószínűleg csak annyi, hogy a tervrajz-stringben belül is vannak idézőjelek (mármint nem a tervrajz-stringet határoló idézőjelpárra gondolok, hanem épp azokra, amiket a tervrajz-string mint a forráskód részét alkotó idézőjeleket ábrázol), ezeket kétféleképp kell majd használni: a külső részeknél közvetlenül ki lehet íratni őket, a középre beszúrt tervrajz-másodpéldánynál pedig escape-elve kell őket kiíratni. Ezért itt kell egy ,,escape''-elő, ,,idéző'', ,,kódoló'' segédfüggvény is:
function idéz(string s)
{
az idézőjel-karaktereket backslash-idézőjel karakterszekvenciákra cseréli:
foreach char c in s do replace c as '"' ---> "\"";
}
Még nem tudtam kipróbálni, de szerintem így már működni fog.
Az escape-elés elméleti szinten szerintem valami olyasmivel kapcsolatos, hogy a tárgynyelvi és a metanyelvi szintet elválasztjuk, és az egyik nyelven belül reprezentáljuk a másikat. Sajnos az általános elméleti keretre már nem emlékszem, de van ilyen, a quine-ok ötlete nagymértékben általánosítható, és épp ezért ez a megoldás a biológia által a valóságban alkalmazott megoldással rokon.