Conceptos básicos de Rebol
Desarrollo de software, Linux/Unix/FreeBSD, Windows April 24th, 2008
Un programa en Rebol es una secuencia ordenada de valores. A continuación se relacionan los tipos nativos de valores del lenguaje.
| Nombre | Descripcion | Ejemplos |
| Números | Incluye a los enteros, los reales y los expresados en notación científica. |
1234 -45 3.1415 1.54E7 |
| Horas | horas:minutos:segundos |
21:47 13:45.15 |
| Fechas | D-M-Y (formato internacional)
Y-M-D (formato USA) Pueden incluir una hora y una zona horaria. En el campo mes es posible utilizar la abreviación de su nombre. |
23-04-2008 23/04/2008 2008-04-23 2008-04-23/21:51 2008-04-23/21:51-5:00 |
| Moneda | Símbolo internacional de tres letras de la moneda y su correspondiente valor. |
$12.45 USD$12.45 CAD$12.45 DEM$12.45 |
| Tuplas | Son secuencias de números separadas por puntos. Son útiles para representar direcciones IP y colores RGB por ejemplo. |
192.168.1.3 128.45.92 |
| Cadenas | Existen cadenas de una sóla línea las cuales se rodean por comillas dobles y cadenas multilínea las cuales se rodean por llaves. Las cadenas multilínea deben utilizarse cuando la cadena contiene comillas, tabulaciones o saltos de línea en su contenido. |
"Cadena de una línea" {Esta es una
cadena multi linea con "comillas"} |
| Etiquetas | Útiles para representar lenguajes como XML y HTML. Estos valores se rodean por mayor y menor que. |
<font size="2" color="blue"> |
| Direcciones de correo | Deben incluír el símbolo de arroba (@) para separar el nombre de usuario de su dominio. |
jimezam@gmail.com |
| URLs | Deben empezar con un protocolo seguido por su correspondiente ruta. |
http://www.jorgeivanmeza.com/ |
| Nombres de archivo | Empiezan por el símbolo de porcentaje. |
%/etc/init.d/apache2 |
| ares | Útiles para representar posiciones (x, y) o dimensiones (ancho, alto). Son valores separados por el carácter x. |
1024x768 50x200 |
| Asuntos | Representan números de identificación como números telefónicos, modelos de serie, números de tarjetas de crédito entre otros. Deben iniciar con el símbolo de número. |
#300-654-5544 #KFC-2145-9878 |
| Binarios | Son cadenas ilimitadas de valores binarios codificadas en hexagecimal o base-64. Se rodean por llaves iniciando con el carácter de número. |
#{42652061205245424F4C}
64#{UkVCT0wgUm9ja3Mh}
|
Las palabras son los símbolos utilizados por lenguaje los cuales pueden ser o no variables según como se utilicen. Algo interesante de Rebol es que tiene palabras reservadas. Cualquier palabra puede utilizarse según el contexto, inclusive pueden utilizarse para redefinir un comportamiento nativo provisto por el lenguaje.
Las palabras no son sensitivas a mayúsculas/minúsculas y pueden incluír carácteres especiales como: +, -, ‘, *, !, ~, &, ., y ?. Los siguientes carácteres no están permitidos: @ # $ % ^ ,.
Los bloques son un conjunto de valores organizados en un órden específico y se utilizan para representar secciones de código, listas, arreglos, tablas, directorios y asociaciones, entre otras secuencias. Los bloques se rodean por corchetes y pueden separarse en varias líneas de código.
loop 10 [print "hello"]
[ "Pepe" 1 0:55:68 "Rosa" 2 0:61:35 "Juan" 3 0:50:12 ]
Las variables son referencias conocidas a valores. La asignación se realiza con el operador dos puntos.
nombre: "Jorge"
edad: 31
Un aspecto importante que se debe tener en cuenta es que el lenguaje no presenta ningún tipo de precedencia para los operadores aritméticos. Esta debe realizarse explícitamente mediante el uso de los paréntesis para agrupar las expresiones matemáticas.
print 2 + 3 * 10
> 50
print 2 + (3 * 10)
> 32
Las funciones son bloques nombrados que pueden o no recibir argumentos (parámetros) que pueden ser modifcados durante su llamado.
sumar: func [a b] [a + b]
print sumar 2 3
> 5
Si la función utiliza además variables locales se deben crear entonces functions.
promedio: function [series] [total] [ total: 0 foreach value series [total: total + value] total / (length? series) ]
print promedio [37 1 42 108] > 47
Es posible incluír la documentación de la función dentro de su misma especificación.
promedio: function [
"Descripción de la función PROMEDIO"
series "Descripción del parámetro SERIES"
] [total] [
total: 0
foreach value series [total: total + value]
total / (length? series)
]
Cuando se ejecuta el siguiente comando: help promedio, se obtiene esta información.
USAGE:
PROMEDIO series
DESCRIPTION:
Descripción de la función PROMEDIO
PROMEDIO is a function value.
ARGUMENTS:
series -- Descripción del parámetro SERIES (Type: any)
Las rutas (paths) son un conjunto de valores que representan pasos o niveles y que proveen un mecanismo para acceder a la información, de igual manera a como se accede a un archivo dentro de carpetas (%proyecto/recursos/logo.jpg) o a un recursos web (http://www.servidor.com/docs/nomina.html).
Las rutas, que son cadenas separadas por barras diagonales (slashes), permiten acceder a la información contenida en cadenas, objetos, bloques y a refinar la ejecución de las funciones.
Departamentos/Caldas/Manizales/poblacion (acceso a un bloque - arreglo)
nombre/10 (acceso a una posición de una cadena)
nomina/reporte (acceso a un método de un objeto)
match/any (opción de una función)
A continuación un ejemplo de uno de sus aplicaciones.
Departamentos: [
Caldas [
poblacion #12345
web http://www.manizales.gov.co
]
Risaralda [
poblacion #54321
web http://www.risaralda.gov.co
email alcalde@risaralda.gov.co
]
]
print Departamentos/Caldas/web
> http://www.manizales.gov.co
Más información: http://www.rebol.com/docs.html.
Tags: Rebol
