Evaluating expressions
Unicon expressions are goal-directed. When they can, they compute a result, and this is called success. Expressions that have no result are said to fail. Failure will generally prevent a surrounding expression from being performed. Generators are a special category of Unicon expressions that are capable of computing more than one result; they are described in a section later in this chapter.
Goal-directed evaluation semantics with generators eliminates the need for a Boolean data type, which is usually found in other languages. It also dramatically increases the expressive power of the language, avoiding the need for a lot of tedious checking for sentinel values or writing explicit loops to search for things that can be found by goal-directed evaluation and backtracking. It takes time to get used to this feature, but once mastered, code is shorter and quicker to write.
Forming expressions using operators
Many of Unicon’s operators will be...