"El lenguaje de programación Standard ML o SML es un lenguaje descendiente del lenguaje ML que nació como el Meta Lenguaje del sistema LCF. A diferencia de muchos otros lenguajes de programación, SML tiene una especificación formal, como semántica operacional publicada en el libro The Definition of Standard ML."
Yo ya hable de SML en otro post pero mi inconstancia, no dejo que profundice. Seguramente estas pensando que me puede aportar este lenguaje? Que lo hace especial?
Como primer punto es un lenguaje funcional y es de tipado estático, con genéricos. A la vez el compilador infiere los tipos por lo que tiene el sistema de tipos más simple y mejor diseñado que he usado, y si no mira:
- val i = 2
val i = 2 : int
- val miLista = [1,1,3,4,5]
val miLista = [1,1,3,4,5] : int list
- val otraLista = [miLista, [1,2,8]]
val otraLista = [[1,1,3,4,5],[1,2,8]] : int list list
- val unString="unString"
val unString = "unString" : string
Si ven otraLista es de tipo list y es genérica. Y este genérico es de tipo lista de enteros, en java sería así:
List<List<Integer>>
Al ser un lenguaje funcional las funciones son lo más importante, y se definen de la siguiente manera:
- fun sumar (a:int, b:int):int = a + b
val sumar = fn : int * int -> int
- sumar (4, 5)
val it = 9 : int
Como ven la función sumar es de tipo int * int -> int , lo que significa que tiene dos parámetros enteros y devuelve un entero.
Otro tipo interesante son las tuplas, son colecciones de elementos de un mismo tipo que se pueden acceder por un indice, similar a los arreglos:
- fun sumarTupla(tupla: int * int) : int = #1 tupla + #2 tupla
val sumarTupla = fn : int * int -> int
- sumarTupla((1,2))
val it = 3 : int
SML es un lenguaje que tiene un sistema de tipos muy simple, voy a seguir postiando cosas interesantes sobre el lenguaje.