Path: csiph.com!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail From: Mild Shock Newsgroups: comp.lang.javascript Subject: Re: ANN: Dogelog Player 1.3.0 (Graph Plotting) Date: Thu, 13 Mar 2025 20:59:34 +0100 Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Thu, 13 Mar 2025 19:59:33 -0000 (UTC) Injection-Info: solani.org; logging-data="1533217"; 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:cP+Bn2RvbLR5glfo66BGQYkN3so= In-Reply-To: X-User-ID: eJwFwYEBwDAEBMCVkH/ScVD2HyF3PK7eAaeDy52WKjt2bwFjTIRkwtgoUA5jgpraCinm5vyeMZcsG9vvAUnyFXU= Xref: csiph.com comp.lang.javascript:124390 Tired of pounding out the same old boring boilerplate code over and over and over again. I'll show you how to eliminate the boilerplate by using higher-order programming: functions that take other functions as arguments; or in Prolog, predicates that take other predicates as arguments. Somehow we shied away from implementing call/n for our Prolog system. We thought our Prolog system has only monomorphic predicate lookup caches and therefore we kept a distance. This changed when we had the idea to dynamically add a cache for the duration of a higher order loop. We could provide a new builtin call/n for our Prolog system. Testing some list processing from different angles we conclude our performance is middle field, comparable to Scryer Prolog. This makes it feasible to bring call/n and predicates such as maplist/n to the upcoming release of Dogelog Player. See also: Higher Order in Dogelog Player https://x.com/dogelogch/status/1900273770792644651 Higher Order in Dogelog Player https://www.facebook.com/groups/dogelog Mild Shock schrieb: > Dear All, > > We are happy to announce a new edition of > the Dogelog player: > > - Enhanced library(lists): >   We made the predicate free_variables/3 now public > in library(lists). It implements then ISO core standard > specification ISO 7.1.1.4 of witness variables. The > predicate does not appear in the Novacore kernel. > > - Enhanced library(sequence): >   As an alternative we provide a new predicate firstof/2. > The predicate is bootstraped from what is used in > distinct/1, but makes use of free_variables/3 to determine > the keys for deduplication during backtracking. Has more > logical properties than distinct/2. > > - New library(plot): >   The library(plot) can generate line plots in the form > of a SVG element. We currently provide the predicates > plot/1 and plot/2 which take a list of points (x,y1,..,yn) > and plot the lines (x,y1) ... (x,yn). The binary predicate > allows specifying various plot options. > > Have Fun! > > Jan Burse, http://www.xlog.ch/ , 26.02.2025