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.