Re: mutable object model

Torbjörn Lager <[email protected]>
Newsgroups gmane.comp.ai.prolog.swi
Message-ID <CA+Y3JZh9c2whb_KR+Zg3=BR9F4kWyTUpK2NaqvbM_2Ctymqa4g@mail.gmail.com>
Hi Alan,

It may not be exactly what you need, but I have from time to time
considered somthing similar to what you describe. Unfortunately, I'm
far to occupied with the next version of Pengines to attempt an
implementation. I share my ideas with you and with others on the list
in the hope that it will feed into further discussions.

My suggestion for a syntax, both for an immutable "record type" and
for a mutable "dictionary type" would be something like this:

{a: {b: 1},
 c: [ {d: 2}, {d:3}],
 e: foo,
 f: [4, 5, 6],
 g: @true
)

Note that:
1) This syntax is prolog readable
2) If ground, it *very* easily and naturally translates into JSON -
just transform it into SWI-Prolog's JSON terms
3) A path language able to pick out any value can easily be defined
4) A graph unification operation can be defined that allows us to
unify two immutable and "open" records
5) Assignment operation can be defined that allow us to update any
instance of a mutable dictionary
6) One could probably define a predicate able to turn any immutable
record into a mutable dictionary
7) One could probably define a predicate able to turn any mutable
dictionary into a immutable record

Oz/Mozart (http://mozart.github.io/) has such things. They are
referred to as records and dictionaries, and I have therefore used
this terminology.

I would love to have something like this.

I have no ideas for an *efficient* implementation at this point. :-(

Best regards,
Torbjörn


On Tue, Nov 12, 2013 at 7:51 PM, Alan Baljeu <[email protected]> wrote:
> What would people suggest I use for a mutable object model in Prolog?  Some specifics:
>
> An open model is preferred, like is implicit in XML and JSON specs.
> Simple XPath type queries are desired.  Select speed is paramount.
>
> Data is public.  There are no methods as such.
>
> Usually member variables would be treated logically: Initially unbound, then later bound.
>
> At times selected variables will be reset to unbound.
> Variables can share an object.
>
> Usually objects are made by instantiating classes.
>
> Standard serialization such as XML or JSON is desirable to communicate with other systems.
>
> I don't expect everything above to be ready-provided.  I'm looking for whatever might
> be an efficient and simple foundation and I'll code the rest.
>
> Alan Baljeu
> -------------- next part --------------
> HTML attachment scrubbed and removed
> _______________________________________________
> SWI-Prolog mailing list
> [email protected]
> https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog



-- 
Torbjörn Lager
Professor of General and Computational Linguistics
Department of Philosophy, Linguistics and Theory of Science
University of Gothenburg
Box 200, SE-405 30 Gothenburg, Sweden
Phone: +46317864962
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.