    # KEHOME/knowledge/tools/unicon/icon2unicon.txt
    # Mar/3/2003

    Differences between Icon and Unicon

    Programming with Unicon, Appendix D
    by Jeffery, Mohamed, Pereda & Parlett
    #===================================#

    This appendix summarizes the known differences
    between Arizona Icon and Unicon.

    Extensions to Functions and Operators
    #===================================#
    Unicon broadens the meaning of certain pre-existing
    functions where it is consistent and unambiguous to
    do so.  These extensions revolve primarily around the
    list type.  For example, insert() allows insertion
    into the middle of a list, reverse() reverses a list,
    and so forth.

    Objects
    #=====#
    Unicon supports the concepts of classes and packages
    with declaration syntax. This affects scope and visibility
    of variable names at compile time. At runtime, objects
    behave similar to records in most respects.

    System Interface
    #==============#
    Unicon's system interface presumes the availability of
    hierarchical directory structure, communication between
    programs using standard Internet protocols, and other
    widely available facilities not present in Arizona Icon.

    Database Facilities
    #=================#
    Unicon supports GDBM and SQL databases with built-in functions
    and operators. The programmer manipulates data in terms of
    persistent table and record abstractions. SQL database support
    may not be present on platforms that do not provide ODBC open
    database connectivity drivers.

    Multiple Programs and Execution Monitoring Support
    #================================================#
    Unicon virtual machine interpreters by default support the
    loading of multiple programs so that various debugging and
    profiling tools can be applied to them without recompilation.
    The execution monitoring facilities are described in "Program
    Monitoring and Visualization: An Exploratory Approach", by
    Clinton Jeffery. Unicon optimizing compilers may omit or
    substitute for these facilities.