<HTML>
<XMP>
# KEHOME/knowledge/theory/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.
</XMP>
</HTML>
