Re: Ann: SWI-Prolog 7.1.0
Carlo Capelli <[email protected]>
| Newsgroups | gmane.comp.ai.prolog.swi |
|---|---|
| Message-ID | <CABty9wz8xw9pbbWUiWkLdoqHvndOmOwSUW4yTj1pn=LN_4r0mA@mail.gmail.com> |
Hi Jan
There must be something complex I don't understand
1 ?- phrase("hello","hello").
ERROR: Type error: `list' expected, found `hello'
2 ?- set_prolog_flag(double_quotes,codes).
true.
3 ?- phrase("hello","hello").
true.
I get the same behaviour from command line swipl...
OTOH, if I use some library before (my source files interface internally
issues calls on background threads to get proper syntax support) I get
1 ?- phrase("bye","bye").
false.
2 ?- set_prolog_flag(double_quotes,codes).
true.
3 ?- phrase("bye","bye").
true.
Also this behaviour is unexpected: I understood from docs that DCGs
literals are already handled...
Maybe I misunderstood
documentation<http://www.swi-prolog.org/pldoc/man?section=ext-dquotes-motivation>and
it's mandatory to set the flag to get old code running ?
bye Carlo
2013/11/22 Jan Wielemaker <[email protected]>
> 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