Re: Ann: SWI-Prolog 7.1.0

Boris Vassilev <[email protected]>
Newsgroups gmane.comp.ai.prolog.swi
Message-ID <CAFw8os+7-JNP7M+qXzTLdi1WKP5XT8gCQkT0drreEHxvgyG_gA@mail.gmail.com>
This is very exciting, and maps are a thing of beauty. I couldn't contain
myself so I had to say it :)

Now it's time to start using maps. What is your plan regarding standard
libraries that could benefit from using maps? (Or is it just "if it ain't
broke don't fix it"?)

Great stuff,
Boris


On Fri, Nov 22, 2013 at 5:36 PM, Jan Wielemaker <[email protected]> wrote:

> Hi,
>
> I have uploaded SWI-Prolog 7.1.0. As the major release indicates, this
> makes SWI-Prolog a different system. You find more elaborate
> documentation including motivations in the chapter "SWI-Prolog
> extensions" in the manual.
> (http://www.swi-prolog.org/pldoc/man?section=extensions).
>
> I understand that this move will make some users deeply unhappy. I am
> also convinced that (SWI-)Prolog badly needed some refreshment that
> enables smoother integration with modern IT platforms while making the
> language appear more natural to new users. The key issue is that
> many of us need a language to write applications that talk to other
> systems and not only a language that can "solve N-queens very elegantly,
> but in splendid isolation". Don't worry, it can still solve N-queens
> very elegantly, especially using Markus' clp(fd).
>
> I would like to thank all people that provided feedback on the original
> proposal.
>
> Vitor Santos Costa has expressed that he likes most aspects of the
> current proposal, which makes it likely that YAP users can enjoy
> these gadgets too at some point in the future.
>
> Below are the highlights:
>
>   - Lists are no longer represented as .(H,T).  Instead, the list
>     functor is now '$cons'(H, T).  The empty list is still [], but
>     this is not an atom.  I.e., '[]' == [] fails.
>
>   - By default, double quoted "text" is mapped to an object of type
>     string.  This already raised some discussions.
>
>   - The system introduces `maps' as primary citizens.  Maps are
>     collections of key-value pairs, optionally typed. Maps are
>     supported by read and write.  The syntax is
>
>         type{key1:value1, key2:value2, ...}
>
>     Keys in a map can be addressed using the functional notation
>     Map.Key.  User functions on maps can be accessed as Map.Compound
>     (e.g., Vector.multiply(V2)).
>
>   - Quoted atoms are no longer operators.
>
>   - Unquoted atoms may contain internal dots.  E.g., a.b is an
>     atom.
>
>   - functor() is valid syntax.  It produces a term that is distinct
>     from 'functor'.  The `block' operator '()' to hack this syntax
>     has been removed.
>
>   - The `block' operators [] and {} remain.
>
> Most of this can be disabled using "swipl --traditional". Notable this
> gets the old list datastructure and "text" as a list of character codes.
> It also disables functional notations on maps. The other syntax
> extensions remain valid as they do not cause incompatibilites by
> themselves.
>
> I expect the system to run fairly stable.  Depending on feedback, there
> could be minor changes to the extensions.  Certainly, there will be more
> predicates operating on strings and maps and more of the libraries will
> be prepared to work with these extensions.
>
>
>         Enjoy --- Jan
>
>
> ========================================
> SWI-Prolog Changelog since version 6.5.3
> ========================================
>
>  * CLEANUP: Renamed `meta_atom' into `reserved_symbol'.  This is a mostly
>    internal name, only showing up when using blob/2 on [].
>
>  * FIXED: edit/0: file detection and edit/1: allow for file.<ext>
>
>  * FIXED: Map.put(New).
>
>  * FIXED: specify access as access([read,write]).  Map-based option
>    processing does not allow for multiple options with the same name.
>
>  * ADDED: Make set_stream(S, file_name(Name)) accept a string a Name.
>
>  * ADDED: read_term/2 option dot_lists(Bool) to read lists in traditional
>    canonical syntax.
>
>  * MODIFIED: Deleted PL_WRT_LIST from SWI-Prolog.h.  This is no longer
>    used.
>
>  * FIXED: char_type(X, prolog_atom_start)
>
>  * DOC: Added desction on when to use which representation for text.
>
>  * ADDED: Colour support for maps.
>
>  * ADDED: Finished subterm position representation for maps
>
>  * DOC: Added new operators to the table
>
>  * DOC: Updated section on operators, pointing to YAP and to the
>    extension section.
>
>  * DOC: Integrate V7 changes in type checking section.
>
>  * DOC: Moved section on strings to extensions
>
>  * DOC: Moves section on block operators from hackers corner to
>    extensions.
>
>  * DOC: Updated block operators since '()' is no longer part of them.
>
>  * ADDED: get_map_ex/3, raise exception from Map.Key if Key is not in
>    Map and added Map.get(Key).
>
>  * FIXED: Consider map functions evaluable.
>
>  * FIXED: number_codes/2 reports errors as if it was number_chars/2.
>    Paulo Moura.
>
>  * DOC: Document the back_quotes option of write_term/3
>
>  * FIXED: Quote the `, unless =back_quotes= is set to =symbol_char=.
>
>  * ADDED: map_select/2, map_select/3.
>
>  * ADDED: b_set_map/3, nb_set_map/3, nb_link_map/3.
>
>  * ADDED: existence_error(Type, Object, In) to express that Object does
>    not exist in In.
>
>  * ADDED: =~=/2
>
>  * ADDED: map_pairs/3
>
>  * ADDED: partial processing of maps in library(options).
>
>  * ADDED: is_map/1.
>
>  * ADDED: built-in predicate option processing (scan_options()) now also
>    processes maps.
>
>  * CLEANUP: Reorganize option scanning code, preparing for reuse in
>    analyzing maps
>
>  * DOC: Small stuff
>
>  * DOC: Various errors
>
>  * BUILD: Suppress some warnings for building the online manual.
>
>  * DQUOTES: Update manual index generation
>
>  * ADDED: Functional syntax for maps
>
>  * ADDED: Allow for embedding the dot (.) in unquoted atoms.  E.g.,
>    math.abs is a valid Prolog atom.  This is controlled by the flag
>    =allow_dot_in_atom=.
>
>  * ADDED: Various additions to support zero-argument compounds:
>      - compound_name_arity/3, - compound_name_arguments/3 -
>      PL_get_compound_name_arity() - PL_unify_compound()
>
>  * MODIFIED: Allow reading functor()
>
>  * ADDED: Type check on DCG in/out.
>
>  * DQUOTES: Various fixes to the library
>
>  * MODIFIED: Removed library(am_match).  This library contained a simple
>      regex matching library.  It was buggy, mostly undocumented and
>      hopefully not used.
>
>  * ADDED: list_strings/0 and list_strings/1 to find portability issues
>      do to the changed interpretation of "..."
>
>  * DQUOTES: Fix processing in git.pl
>
>  * DQUOTES: Fix double quote dependency in the library.
>
>  * MODIFIED: Default setting of the prolog flag double quote has been
>      changed to 'string', causing "hello" to read as the string onject
>      "hello".  Note that the flag is module-aware.
>
>  * MODIFIED: Quoting an atom disables it as an operator.  Trying to define
>      an operator from an atom that needs quotes raises a domain error.
>
>  * ADDED: --traditional option to get traditional behaviour wrt . and [].
>
>  * ENHANCED: Save [] and . special in QLF files.  More compact, faster
>      and provides portable states between extended and traditional modes.
>
>  * ADDED: subterm position support for maps
>
>  * ADDED: Reading maps (needs sorting and position handling)
>
>  * ADDED: Write maps with {}-syntax.
>
>  * ADDED: is_map/1, map_create/3, map_get/3, map_put/3, map_put/4.
>
>  * ADDED: write_term/3: options fullstop(Bool) and nl(Bool).
>
>  * ADDED: ATOM_nil and ATOM_dot constants to SWI-Prolog.h
>
>  * ADDED: Options dot_lists and brace_terms to write_term/3
>
>  * TEST: Compensate for meta atoms
>
>  * ADDED: . \== '.'
>
>  * MODIFIED: Introduce flag back_quotes, just like double_quotes.
>
>  * ADDED: Introduced meta-atoms
>
>  * ADDED: Forward compatibility using ATOM_nil and ATOM_dot
>
>  * ENHANCED: Avoid that debug/3 messages from multiple threads get
>      mixed up.
>
>  * DOC: Updated HTML readme for MacOS application
>
>  * FIXED: Now really fixed qsave_program/2.  Jos de Roo.
>
>  * FIXED: library(pack): answered_default/1 was undefined.  Nicos
>      Angelopoulos.
>
>  * FIXED: qsave_program('/tmp/img'). ERROR: Undefined procedure: 0/0.
>      Jos de Roo.
>
>  * FIXED: Syntax error in library(dialect/sicstus).
>
>  * MODIFIED: Removed style_check/1 =string= style.  See the Prolog flag
>      =double_quotes=.  This change also enhances runtime check of the
>      argument to style_check/1.
>
>  * PPA: Prepare making a PPA for Saucy Salamander (13.10)
>
>
> _______________________________________________
> SWI-Prolog mailing list
> [email protected]
> https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog
>
-------------- next part --------------
HTML attachment scrubbed and removed
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.