User Tools

Site Tools


at:tutorial:basic

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
at:tutorial:basic [2007/04/17 17:23] tvcutsemat:tutorial:basic [2007/04/17 17:30] tvcutsem
Line 272: Line 272:
 ==== Numerical data types ==== ==== Numerical data types ====
  
-AmbientTalk supports numbers and fractions which represent what other languages call integers and floating point numbers, respectively.  +AmbientTalk supports numbers and fractions which represent what other languages call integers and double precision floating point numbers, respectively.
  
-Note that since numerical types are objects in AmbientTalk, the traditional operators +,-,*,/, >, <, <=, >=, =, !=  are nothing but syntactic sugar for method invocations. Therefore,  //1+1// is internally translated into //1.+(1)//. Unary operators are just applications, e.g. //-5// is internally translated into //-(5)//. What follows are some basic examples of manipulations with numeric types:+Note that since numerical types are objects in AmbientTalk, the traditional operators %%+,-,*,/, >, <, <=, >=, =, !=%%  are nothing but syntactic sugar for method invocations. Therefore,  ''1+1'' is internally translated into ''1.+(1)''. Unary operators are just applications, e.g. ''-5'' is internally translated into ''-(5)''. What follows are some basic examples of manipulations with numeric types:
 <code> <code>
 >1.inc() >1.inc()
 >>2 >>2
->-1.abs() 
->>1 
 >1.cos() >1.cos()
 >>0.5403023058681398 >>0.5403023058681398
Line 293: Line 291:
 >>2 >>2
 </code> </code>
 +
 +Beware of the precedence rules for function application versus method invocation, which may lead to unexpected results, e.g.:
 +<code>
 +>-1.abs()
 +>>-1
 +</code>
 +This code is interpreted as ''-(1.abs())'', hence the result.
  
 Numbers also support some useful iterator methods such as: Numbers also support some useful iterator methods such as:
Line 379: Line 384:
 ==== Booleans ==== ==== Booleans ====
    
- +As any native type, booleans are objects so, they respond to keyword messages such as:
-AmbientTalk supports infix operators for booleans as &, | and !. As any native type, booleans are objects so, they respond to keyword messages such as:+
 <code> <code>
 <booleanexpr>.ifTrue: { ...}  <booleanexpr>.ifTrue: { ...} 
Line 388: Line 392:
 </code> </code>
  
-**=** and **!=** are the infix operators for equality and inequality. **true** and **false** are the boolean constant objects. What follows is some basic examples of boolean manipulation:+''='' and ''!='' are the infix operators for equality and inequality. The prefix operator ''!'' represents logical negation. ''true'' and ''false'' are the prototypical boolean singleton objects. What follows is some basic examples of boolean manipulation:
 <code> <code>
 >(0 < 1).ifTrue: { 0 }  >(0 < 1).ifTrue: { 0 } 
Line 402: Line 406:
 </code> </code>
  
-Boolean infix operators such as & and | are not shortcut. Thus, both arguments will be evaluated. For lazy evaluation, you should use the natives methods. For example, false.and: { 1/0 } will return false without executing the second argument.+Compound boolean expressions can be created by means of a boolean's ''and:'' and ''or:'' methodswhich both take a zero-argument closure as argument. For example, ''false.and: { 1/0 }'' will return ''false''. The block is not applied because a logical //and// with ''false'' always fails.
  
 ===== Control Flow Structures ===== ===== Control Flow Structures =====
at/tutorial/basic.txt · Last modified: 2020/02/09 22:05 by elisag