Otra de las novedades interesante de Visual Studio 2010 es el soporte de serie del nuevo lenguaje de programación en plataforma .NET: F#. Este nuevo y joven lenguaje se caracteriza fundamentalmente por ser un lenguaje funcional híbrido:
- Es funcional porque:
- Es completamente declarativo.
- Es un lenguaje expresivo y elegante :-).
- Es híbrido porque:
- Es multi-paradigma.
- Soporta orientación a objetos.
- Se deriva del lenguaje funcional ML, y como él, permite programar de forma imperativa.
Antes de empezar a probar F#, os dejo algunos enlaces de interés sobre lenguajes funcionales y F#:
Empezando con F# en VS 2010
Para empezar a jugar con F# en VS 2010, lo tenemos realmente fácil:
-
En primer lugar, creamos un proyecto de tipo F# Tutorial en el que podremos ver las nociones básicas de sintaxis de este lenguaje.
-
Una vez familiarizados con la sintaxis del lenguaje, ya estamos listos para hacer nuestras primeras pruebas. Para ello, creamos un proyecto de tipo F# Application y ya estamos listo.
Para empezar, vamos a ver como trabajar con tipos enteros en F#. Por ejemplo, añadimos el siguiente código al archivo Program.fs:
-
Básicamente, fijaros que la clave para declarar e inicializar tipos enteros pasa por usar la palabra clave let y luego realizar la asignación de forma directa (inferencia de tipos) del valor entero.
-
Lo mismo aplica a la hora de definir operaciones entre enteros.
-
Para sacar por pantalla los valores de los tipos definidos, usaremos la sentencia printfn indicando el tipo de dato de salida (%d indica que se trata de un entero).
-
Como curiosidad, la sentencia Open System nos permite abrir espacios de nombre estándar de .NET Framework y utilizarlos en F#.
#light
//open standard namespaces
open System
let int1 = 1
let int2 = 2
let int3 = int1 + int2
printfn "int1 = %d" int1
printfn "int2 = %d" int2
printfn "int3 = %d" int3
|
Sin más, comprobamos la salida por pantalla:
Otra capacidad interesante de F# es la de que nos permite definir y evaluar funciones matemáticas de forma sencilla medainte let f. Por ejemplo:
//Functions on integers…
let f x = 2*x*x – 5*x + 3
// The result of a simple computation
let result = f (int3 + 4)
printfn "result = %d" result
Console.ReadLine()
|
La correspondiente salida por pantalla es la que a continuación se muestra:
La misma filosofía comentada aplica cuando trabajamos con cadenas. De nuevo os destaco que poemos usar funciones de otras librerías .NET en nuestro código C#. Por ejemplo, en este caso estamos usando la función Join para concatenar dos cadenas:
// Strings…
let stringA = "Hello"
let stringB = "world"
/// "Hello world" computed using string concatentation
let stringC = stringA + " " + stringB
printfn "stringC = %s" stringC
/// "Hello world" computed using a .NET library function
let stringD = String.Join(" ",[| stringA; stringB |])
printfn "stringD = %s" stringD
Console.ReadLine()
|
La correspondiente salida por pantalla es la siguiente:
Finalmente, todo lo visto aplica cuando queramos trabajar con arrays. Por ejemplo, si tenemos un array de números, podemos calcular de forma sencilla el cuadrado de sus elementos de la siguiente forma:
let square x =x * x
let numbers =[1 .. 15]
let squares = List.map square numbers
printfn "Numbers squared = %A" squares
Console.ReadLine()
|
Y la salida por pantalla correspondiente es:

Y hasta aquí llega lo que os quería contar sobre F#. Espero que el post os haya resultado interesante.