Icon+Unicon/Intro: Difference between revisions
Content added Content deleted
Line 25: | Line 25: | ||
Icon and Unicon do not require strict static typing of variables as does languages like [[Pascal]], nor does it require type definitions to reserve space such as in languages such as [[C]]. In fact, variables may happily change type from one moment to the next. Knowing this you might expect that declarations are non-existent. |
Icon and Unicon do not require strict static typing of variables as does languages like [[Pascal]], nor does it require type definitions to reserve space such as in languages such as [[C]]. In fact, variables may happily change type from one moment to the next. Knowing this you might expect that declarations are non-existent. |
||
Declarations are optional and any undeclared variables are either (a) parameters to procedures or (b) local to procedures. This design decision ensured that Icon/Unicon are not susceptible to the kind of side-effects that the global nature of variables in SNOBOL4 led to. |
Declarations are optional and any undeclared variables are either (a) parameters to procedures or (b) local to procedures. This design decision ensured that Icon/Unicon are not susceptible to the kind of side-effects that the global nature of variables in [SNOBOL4] led to. |
||
Still, declarations are desirable for clarity and needed for a number of special cases: |
Still, declarations are desirable for clarity and needed for a number of special cases: |
||
Line 36: | Line 36: | ||
* procedure - used to define a procedure and its parameters |
* procedure - used to define a procedure and its parameters |
||
* invocable - used to control program linking to ensure procedures are included and available if they are called (e.g. through string invocation) |
* invocable - used to control program linking to ensure procedures are included and available if they are called (e.g. through string invocation) |
||
* class - used to define an object class (Unicon) |
* class - used to define an object class (Unicon) |
||
=== Self-Descriptive Safe Types === |
=== Self-Descriptive Safe Types === |