• ANN: Dogelog Player 1.3.0 (Graph Plotting)

    From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Wed Feb 26 14:10:17 2025
    From Newsgroup: comp.lang.prolog

    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
    --- Synchronet 3.20c-Linux NewsLink 1.2
  • From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Thu Mar 13 20:57:29 2025
    From Newsgroup: comp.lang.prolog


    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

    --- Synchronet 3.20c-Linux NewsLink 1.2
  • From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Fri Mar 14 13:22:53 2025
    From Newsgroup: comp.lang.prolog


    Our old Prolog system had a little computer algebra
    system (CAS) that supported vectors and marices. In
    the following we report on a new take that is less
    leaning towards object oriented programming and more
    leaning towards higher order logic programming.

    Currently we only support numerical computation, either
    floats or bigint. We could implement Prolog operations
    that have strict vector or matrix signatures. Running
    it in the browser, we can answer in a blink “What are
    the last 8 digits of fib(1000000)?”.

    See also:

    Linear Algebra in Dogelog Player https://x.com/dogelogch/status/1900509046924312767

    Linear Algebra in Dogelog Player
    https://www.facebook.com/groups/dogelog

    Mild Shock schrieb:

    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


    --- Synchronet 3.20c-Linux NewsLink 1.2