Sigo con Factor y sus pilas.
Vamos a hacer un “hola mundo” en Factor. Empezamos indicando el vocabulario “scratchpad”, pero por ahora no vamos a profundizar en eso. Luego vamos a escribir nuestro “hola mundo”
IN: scratchpad "Hello, world" print
Hello, world
Factor introduce a “Hola Mundo” a la pila y la función print toma de la pila el parametro y se ejecuta.
Introduciendo clear, factor limpia la pila y luego si ejecutamos “Hola Mundo”. Factor nos indica que esto se encuentra en la pila:
IN: scratchpad clear
IN: scratchpad "Hello, world"
--- Data stack:
"Hello, world"
Podemos introducir otro string a la pila :
IN: scratchpad "Hello, Factor"
--- Data stack:
"Hello, world"
"Hello, Factor"
Si ahora intentamos imprimir Factor va utilizar el ultimo valor insertado en la pila :
IN: scratchpad print
Hello, Factor
--- Data stack:
"Hello, world"
Si ejecutamos una funcion que retorne un valor, factor pondra ese valor en la pila.
IN: scratchpad length
--- Data stack:
12
La palabra (recuerden que las funciones se denominan "palabras") length tomó "Hello, world" de la pila y retorno la longitud de la cadena de nuevo y la puso en la pila. Cada palabra en Factor toma cero o más valores de la pila y llena cero o más valores en la pila. La siguiente palabra luego funciona con la pila resultante, y así sucesivamente.
Cuando se ejecuta un programa Factor, el efecto neto de todas las palabras reunidas juntas debe ser consistente, con cada palabra que tenga al menos tantos valores en la pila como esperan extraer, y eliminar tantos valores como afirman. Cuando la pila contiene más valores de los que necesita usar una palabra, los valores adicionales simplemente permanecen en la pila.
Un dato más los comentarios comienzan con un ! seguido de un espacio, veamos un ejemplo :
! This is a comment
"Hello, world" print ! This prints "Hello, world"