ML

Keywords: ML, AWK, Algol, Años 1970, BASIC, BCPL, COBOL, C Más Más

ML es un lenguaje de programación de propósito general de la familia de los lenguajes de programación funcional desarrollado por Robin Milner y otros a finales de los años 1970 en la Universidad de Edimburgo. ML es un acrónimo de Meta Lenguaje dado que fue concebido como el lenguaje para desarrollar tácticas de demostración en el sistema LCF (El lenguaje para el cual ML era meta lenguaje es pplambda, una combinación del cálculo de predicados de primer orden y el lambda-cálculo polimórfico sencillamente tipificado).

Frecuentemente se clasifica a ML como un lenguaje funcional impuro dado que permite programar imperativamente con efectos de borde, a diferencia de otros lenguajes de programación funcional, tales como Haskell.

Entre las características de ML se incluyen evaluación por valor, álgebra de funciones, manejo automatizado de memoria por medio de recolección de basura, polimorfismo parametrizado, análisis de estático de tipos, inferencia de tipos, tipos de datos algebraicos, llamada por patrones y manejo de excepciones. Esta combinación particular de conceptos hace que sea posible producir una de los mejores compiladores actualmente disponibles[1].

En la actualidad varios lenguajes de la familia ML están disponibles, principalmente Standard ML (SML) y Ocaml (Ocaml contiene la sintaxis de ML como un subconjunto). Varias ideas aparecidas en ML han influenciado el diseño de otros lenguajes, tales como Cyclone y Nemerle.

Los lenguajes de la familia ML se aplica principalmente en diseño y manipulación de lenguajes de programación (compiladores, analizadores, demostradores de teoremas), así como en bioinformática, sistemas financieros, protocolos de sincronización, etc.

Ejemplo de programa en ML

  let elefantes n =
    letrec companeros m = 
       if m<=n then (
          print_int m;
          print_line " Elefantes, se balanceaban, sobre la tela de una araña.";
          print_line "Como veían, que resistía, fueron a buscar a un camarada.";
          compañeros (m+1)
       ) in
       print_line "1 Elefante, se balanceaba, sobre la tela de una araña.";
       print_line "Como veía, que resistía, se fue a buscar a un camarada.";
       companeros 2
   in
   elefantes 99 ;;
 

Otros ejemplos:

1. Escriba un programa que identifique un número par y uno impar.

 fun resto (n:int):int=n mod 2;
 

- Como salida devuelva un valor true si es par y un false si es impar. (int : bool)

 fun par_impar (n:int):bool=
 	if (resto(n)=0) then
 		true
 	else
 		false;
 

- Como salida muestre un mensaje en pantalla que indique el tipo de número. (int : string)

 fun par_impar2 (n:int):string=
 	if (resto(n)=0) then
 		"el numero es par"
 	else
 		"el numero es impar";
 


2. Extraer los elementos centrales de una palabra. (Si la palabra es par, extraer los 2 elementos centrales, sino extraer el único elemento central). Enviar un mensaje amigable con los elementos extraídos.

 fun extraer_centrales (palabra:string):string=
 	if (size(palabra)=0)then
 		"palabra vacia"
 	else
 		if (resto(size(palabra))=0) then
 			substring(palabra,(size(palabra) div 2)-1,2)
 		else
 			substring(palabra,size(palabra) div 2,1);
 

Enlaces externos

  1. pruebas comparativas entre varios lenguajes (en inglés)
Lenguajes de programación
Ada | Algol | Awk | Basic| BCPL | C | C++ | C# | Cobol | Delphi | Eiffel | Forth | Fortran | Haskell | Java | Lisp | Logo | MAGIC | Miranda | Modula-2 | Oberon | Ocaml | Pascal | PHP | Perl | Prolog | Python | Ruby | Smalltalk | Otros lenguajes...

Keywords: ML, AWK, Algol, Años 1970, BASIC, BCPL, COBOL, C Más Más