En Python, las construcciones "básicas" como if/else
, los operadores booleanos en cortocircuito y los bucles son parte del lenguaje en sí. En Smalltalk, todos son solo mensajes. En ese sentido, mientras Python y Smalltalk acuerdan que "todo es un objeto", Smalltalk va más allá en el sentido de que "todo es un mensaje".
[EDITAR] Algunos ejemplos.
comunicado
condicional en Smalltalk:
((x > y) and: [x > z])
ifTrue: [ ... ]
ifFalse: [ ... ]
Nota cómo and:
no es sólo un mensaje en Boolean
(a su vez produce como resultado de paso de mensajes >
-x
), y el segundo argumento de and:
es una expresión normal , pero un bloque, lo que permite la evaluación perezosa (es decir, cortocircuito). Esto produce otro objeto Boolean
, que también admite el mensaje ifTrue:ifFalse:
, tomando dos bloques más (es decir, lambdas) como argumentos y ejecutándose uno u otro dependiendo del valor de Boolean.
Pregunta de Offtopic: ¿Qué usas para ejecutar smalltalk? Lo único que encontré hace años fue un chirrido que no me gustó demasiado. ¿Qué estás usando para aprender? – OscarRyz
Acabo de instalar squeak, pero también hay GNU smalltalk. Lamentablemente necesito el fink para este último, y soy perezoso para instalar Fink en mi vieja computadora portátil. –