Red.io Mac OS
Io uses coroutines (user level cooperative threads), instead of preemptive OS level threads to implement concurrency. This avoids the substantial costs (memory, system calls, locking, caching issues, etc) associated with native threads and allows Io to support a very high level of concurrency with thousands of active threads. Lists all the built-in attenuation equations that can be used by the light source. Parameters that are mentioned must be supplied to through RED::ILightShape::SetAttenuation or through a built-in construction helper such as RED::ILightShape::SetPointLight.See the section Decay equations to learn about the various attenuation modes and settings.
Syntax
Expressions
Io has no keywords or statements. Everything is an expression composed entirely of messages, each of which is a runtime accessible object. The informal BNF description: For performance reasons, String and Number literal messages have their results cached in their message objects.Red.io Mac Os X
Messages
Message arguments are passed as expressions and evaluated by the receiver. Selective evaluation of arguments can be used to implement control flow. Examples: In the above code, 'for' and 'if' are just normal messages, not special forms or keywords.Likewise, dynamic evaluation can be used with enumeration without the need to wrap the expression in a block. Examples: Methods like map and select will typically apply the expression directly to the values if only the expression is provided: There is also some syntax sugar for operators (including assignment), which are handled by an Io macro executed on the expression after it is compiled into a message tree. Some sample source code: Like Self[2], Io's syntax does not distinguish between accessing a slot containing a method from one containing a variable.
Operators
An operator is just a message whose name contains no alphanumeric characters (other than ';', '_', '' or '.') or is one of the following words: or, and, return. Example: This just gets compiled into the normal message: Which is the form you can use if you need to do grouping: Standard operators follow C's precedence order, so: Is parsed as: User defined operators (that don't have a standard operator name) are performed left to right.OperatorTable
Operators can also be added or removed, or have their precedence changed by using the global OperatorTable object. For example:adds the !! operator with a precedence of 3. Note that this change will not effect the source file in which the OperatorTable is modified as the full file is parsed before it is evaluated.Assignment
Io has three assignment operators:operator | action |
---|---|
::= | Creates slot, creates setter, assigns value |
:= | Creates slot, assigns value |
= | Assigns value to slot if it exists, otherwise raises exception |
These operators are compiled to normal messages whose methods can be overridden. For example:
Red.io Mac Os Download
source | compiles to |
---|---|
a ::= 1 | newSlot('a', 1) |
a := 1 | setSlot('a', 1) |
a = 1 | updateSlot('a', 1) |
On Locals objects, updateSlot is overridden so it will update the slot in the object in which the method was activated if the slot is not found the locals. This is done so update assignments in methods don't require self to be an explicit target.
Numbers
The following are examples of valid number formats: Hex numbers are also supported (in any casing):Strings
Red.io Mac Os 11
Redo Mac Os
Strings can be defined surrounded by a single set of double quotes with escaped quotes (and other escape characters) within. Or for strings with non-escaped characters and/or spanning many lines, triple quotes can be used.Comments
Comments of the //, /**/ and # style are supported. Examples: The '#' style is useful for unix scripts: That's it! You now know everything there is to know about Io's syntax. Control flow, objects, methods, exceptions are expressed with the syntax and semantics described above.Red.io Mac OS