Cosas que debo comentar:



Los operadores serán cosiderados en si mismo funciones propias del lenguaje.

El dato, es una representación simbólica (numérica, alfabética, algorítmica etc.), atributo o característica de una entidad. El dato no tiene valor semántico en sí mismo, pero convenientemente tratado (procesado) se puede utilizar en la realización de cálculos o toma de decisiones. Es de empleo muy común en el ámbito informático y 
un valor es una secuencia de bits que se interpreta de acuerdo a algún tipo de datos. Una misma secuencia de bits puede tener distintos valores, dependiendo del tipo usado para interpretar su significado. Por ejemplo un valor podría ser un tipo de dato entero, de punto flotante o una cadena.

Paso de parámetros a script

Interpretar cadena de texto. (Es posible indicar un fichero que se interpretará después)

Extensión del lenguaje

gettext

Operador sizeOf


 funciones de orden superior
//======================================================================
Cosas que debo implementar:

-- Error ternario asigna la expresión completa y no el valor de la expresión
-- Error example factorial con listas, count-- en vez de count = count - 1.
-- Error size (args) en expresión condicional.
-- Error en example functions.lsh decorador por defininición paso de variable funcion
-- Conversion a tipo string
-- Cambiar asig por assig
-- Renombrar funciones
-- Textos y niveles de error
-- Pruebas
-- Limpieza de codigo
-- Optimización de memoria
-- Métodos mágicos
-- Herencia sin constructor en hoja (llama al padre)
-- Prioridad asignacion
-- Caso if sin { fallo (ver sdl.omi)
-- Rangos [1..n]
-- map de arrays a funciones
-- Funcion inexistente
-- Reflexión
-- Conjunto intensivo [ x | x <- [50..100], x `mod` 7 == 3]
aserciones

Sistema de errores
Limpieza de nodos

Sistema de pruebas


UNICO NULL
ASIG REFERENCIAS A SYMBOLOS DE OBJETOS /ARRAYS
Asignación de objetos y arrays por referencia
Variable global se copia en objeto cuando instancia clase
Si a->id => ID siempre como STR nunca como VAR //OK
Si global in function error;

Hilos
Ficheros binarios???
Conversion de tipos mediante métodos de clase??
currificación de una función
Funciones sobre arrays (PHP, JS, PYTHON...)
Random



Clases:
   static + private
	datos como objetos (aplicar metodos, mejorar almacenaje de metodos como un map statico de todo objeto)
	delete
   asignacion en bloque (array) es atributo de objeto
	extender datos del lenguaje
   Constantes
Aspectos	
Borrado memoria eficiente
Errores de línea
Grafos
Pruebas
Excepciones
constantes
manejadores de errores
Sistema de errores
obj with_var { #<<<<<<<<<<<<<<< Implementar (obj puede ser id de clase)
   ~method() {
      << "JAJAJA";
   }
};
x == OR[1,2,3] 
x != OR[1,2,3] 
x == AND[1,2,3]
x != AND[1,2,3]
//======================================================================
Cosas que arreglar:
acceso a ultima posición de una cadena (a = "A"; a[] = "J";) => Violación de segmento
definir atributo en constructor de clase.

a and {1,2,3,4}

({1,2,3},{3,4,1,2}) |> (~x,y:x == y)   
[0] => {
	[0] => false,
	[1] => false,
	[2] => true,
	[3] => false,
}
[1] => {
	[0] => false,
	[1] => false,
	[2] => false,
	[3] => true,
}
[2] => {
	[0] => true,
	[1] => false,
	[2] => false,
	[3] => false,
}

(a == OR {1,2,4} )

{
	[n1] => { 
		[n1'] => {
			[n1''] => val1, 
			... 
			[nn''] => valn, 
		},
		...
		[nn'] => {
			[n1''] => val1,
			...
			[nn''] => valn
		}
	}
	...
	[nn] => { 
		[n1'] => {
			[n1''] => val1, 
			... 
			[nn''] => valn, 
		},
		...
		[nn'] => {
			[n1''] => val1,
			...
			[nn''] => valn
		}
	}
}




if(x > 1 OR x > 2 OR x > 3)


array :
$(array as k1:v1) {
	<< "Hola soy el indice ".k." del primer nivel";
	$(v as k2:v2) {
		<< 
	}
   

~ sum (a, b) {
   return a + b;
}

<< [b = 1, a = 2] sum; # return 3
   #=> 
      exec {
         b = 1;
         a = 2;
         return ~ () {
            return a + b;
         }
      }; # Si no params autoexec?

<< [b = 1] sum; 
   # =>
      exec {
         b = 1;
         return ~(a) {
            return a + b;
         }      
      }
}

~ sum (a, b, c) {
   return a + b + c;
}

<< P[b = 1, c = 10, a = 2] sum; # return 3
   #=> 
      exec {
         b = 1;
         c = 10;
         a = 2;
         return ~ () {
            return a + b + c;
         }
      }; # Si no params autoexec?

<< [b = 1] sum; 
   # =>
      exec {
         b = 1;
         return ~(a, c) {
            return a + b + c;
         }      
      }
}

//------------
Ajuste de patrones
~ func a b {
   return a + b;
}

~ func 2 b {
   : b;
}
//------------
~peso (weight, height) 
    | bmi <= 18.5 : "Tienes infrapeso ¿Eres emo?";
    | bmi <= 25.0 : "Supuestamente eres normal... Espero que seas feo.";
    | bmi <= 30.0 : "¡Estás gordo! Pierde algo de peso gordito."
    | otherwise   : "¡Enhorabuena, eres una ballena!";
<< bmi = weight / height ^ 2

4 + (if (x < 10) 10 else 20) + 7
5 + ( x {"A" : 20, "B" : 30, 40}) + 6;
