Recent Changes - Search:

PmWiki

pmwiki.org

edit SideBar

IsoErrata

7.12.2 and 8.1.2.1

There is a confusion about what a "type" is. There seem to be 3 different groups:

  • Those that are listed in 8.1.2.1 and also occur as ValidTypes in type_error terms in 7.12.2.b
  • Those that are listed in 8.1.2.1 and occur as ValidDomain in domain_error terms in 7.12.2.c
  • Those that are listed in 8.1.2.1 only

In addition, there are ValidDomains in 7.12.2.c that are not listed in 8.1.2.1, presumably by mistake (eg. io_mode).

8.14.3.3.f

The template requires the type atom_or_atom_list for the 3rd argument, but strangely the required error term here is type_error(list,Operator). This results in (see examples)

op(30,xfy,0)  =====>  error(type_error(list,0))

where type_error(atom,0) or type_error(atom_or_atom_list,0) would be more appropriate (but note that atom_or_atom_list is not among the ValidTypes listed in 7.12.2!). For ECLiPSe we have therefore opted for type_error(list,Op) only if Op is an improper list, and type_error(atom,Op) if Op is any other non-atom.

8.14.4 current_op/3

There should be extra errors

  • type_error(integer) if Priority is neither a variable nor an integer
  • type_error(atom) if Op_specifier is neither a variable not an atom

Questions

  • is there consensus about the effect of catch((B=foo,throw(bar)),B,true). Is it uncaught or succeeds with B=bar? Uncaught in SWI and ECLiPSe (up to 6.1). With incremental stack unwinding (which ECLiPSe will probably have in the future), the natural behaviour is success.
Edit - History - Print - Recent Changes - Search
Page last modified on December 01, 2013, at 09:09 PM