lib(iso)

Overview
    This library provides an implementation of Standard Prolog as
    defined in ISO/IEC 13211-1 (Information Technology, Programming
    Languages, Prolog, Part 1, General Core, 1995) and the technical
    corrigenda ISO/IEC 13211-1 TC1 (2007) and TC2 (2012).
    The library is provided in source form.
    
    There are libraries for three degrees of compatibility:
    
    iso
        A blend of ISO and ECLiPSe functionality.  All ISO features
        are available, plus such ECLiPSe features that do not significantly
        conflict with ISO. But as some of these extensions go beyond what the
        letter of the standard allows, and because error checking may be
        less strict than required by ISO, this is not a fully compliant mode.
    iso_light
        The same as 'iso', with the exception of error handling.
        This is sufficient for code that does not rely on a particular
        form of error terms being thrown by built-in predicates.
    iso_strict
        This aims to be fully ISO compliant, and represents the
        'strict mode' required by the standard.
    
    For more details on ISO compliance, see library(iso_strict).
    
Usage
    The effect of this compatibility library is (with minor exceptions)
    local to the module where it is loaded.  An ISO-program should always
    be contained in a separate module, starting with a directive like
    
    :- module(myisomodule, [], iso).
    
    Here, the last argument of the module/3 directive indicates the language.
    It is not advisable to use ":-lib(iso)" or ":-ensure_loaded(library(iso))"
    within an eclipse_language module, because this would lead to import
    conflicts between the different versions of built-in predicates.
    
    Alternatively, in order to use ISO-Prolog without having different
    modules, one can invoke eclipse with a "-L iso" command line option,
    or set the ECLIPSEDEFFAULTLANGUAGE environment variable to 'iso'.
    This will launch eclipse with a default module accepting 'iso' language
    instead of the usual 'eclipse_language'.
    
Differences
    The main differences of this extended iso-language compared to the
    default eclipse_language are the following:
    
    The syntax is more restricted, and ISO style is preferred, e.g.
        for writing hexadecimal numbers.
    Double quotes denote character lists, while in ECLiPSe they denote
        string constants.  ECLiPSe-strings can however be written using
        back-quotes, e.g. `abc`.
    Arithmetic functions like floor/1 return integer results.
    All ISO built-in predicates are available.
    
Limitations
    ISO's idiosyncratic char_conversion features is not implemented.


