Novedades en Visual Studio 2010: Soporte de F#!

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.
image image image
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:

image

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:

image

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:

image

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:

image

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

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s