Path: ...!news.nobody.at!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail From: Mild Shock Newsgroups: comp.lang.prolog Subject: =?UTF-8?Q?variable_ordering_guarantees_in_term=5fsingletons/2_=28Wa?= =?UTF-8?Q?s:_Prolog_Development_=c3=a0_la_Sigmund_Freud=29?= Date: Sun, 25 May 2025 09:57:10 +0200 Message-ID: <100uigj$aeol$1@solani.org> References: <100uhte$8rfn$1@solani.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Sun, 25 May 2025 07:57:07 -0000 (UTC) Injection-Info: solani.org; logging-data="342805"; mail-complaints-to="abuse@news.solani.org" User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0 SeaMonkey/2.53.20 Cancel-Lock: sha1:wc+OWmSdOCjNydkcbSeijBOJ9rE= X-User-ID: eJwNyUkBwDAIBEBLEMIlh7LgX0I631ExtvZraldXF7kE17hcc9risPxBXwlWnDKWiwaBBidMp6VBddy3GsMPUWcWHA== In-Reply-To: <100uhte$8rfn$1@solani.org> Bytes: 2776 Lines: 52 Hi, People from Vienna were always a little strange. Why not adopt term_singletons/2 its already around for a while. You can do quite some magic with it. Example: Determining singletons during listing, from Dogelog Player library(tester/tools): % sys_listing_write(+Term, +Stream) sys_listing_write(C, T) :- term_variables(C, V), term_singletons(C, A), sys_listing_names(V, A, 0, N), write_term(T, C, [quoted(true), variable_names(N), format(true)]), sys_answer_period(T). If term_singletons/2 has the same variable ordering guarantees, i.e. left to right, as in term_variables/2 you can use an algorithm without expensive lookup, sys_listing_names([], _, _, []). sys_listing_names([X|L], [Y|R], K, ['_'=X|S]) :- X==Y, !, sys_listing_names(L, R, K, S). sys_listing_names([X|L], A, K, [N=X|R]) :- sys_listing_name(K, N), J is K+1, sys_listing_names(L, A, J, R). Just run along the two lists , if something is both in the term_variables/2 and term_singletons/2 list, generate a '_' name, otherwise generate a synthetic name. Bye Mild Shock schrieb: > Hi, > > The development of Trealla Prolog and Scryer Prolog > looks like a random search in a mental ocean. > > It is like Prolog Development à la Sigmund Freud, > you have only to dig deep enough, and a solution > > will pop up. Otherwise blame your mother or other > relatives that raised you for supression. > > LoL > > Bye > > Examples: Still clueless how to detect singletons? > https://github.com/trealla-prolog/trealla/issues/743