Alex Casquete


A functional blog

Inferencia de tipos y la generalización automática

Una de las características con la que cualquier programador queda atrapado al entrar en contacto por primera vez con F# es con la inferencia de tipos. Por ejemplo, a partir del siguiente código:


Integrando FAKE y Visual Studio Team Services

FAKE (F# Make) es un DSL escrito en F# con el que podemos definir diferentes tareas para compilar y desplegar cualquier tipo de proyecto. Es un sistema de automatización de builds similar a Make o Rake, es open-source y cuenta con una comunidad, con más de 200 contributors, muy activa.


Utilizando motores de vistas con Suave

En el post anterior vimos cómo haciendo uso de la composición de funciones podíamos definir las rutas de nuestra aplicación web y devolver una respuesta con un código HTTP determinado y una cadena de texto en el cuerpo en cada una de esas respuestas. Esto lo conseguíamos fácilmente con las WebParts OK, CREATED y ACCEPTED que están definidas en el módulo Succesful. Pero además de devolver una cadena de texto, que nos puede ser muy útil e incluso suficiente para desarrollar una Web API, Suave también permite utilizar distintos motores de vistas para generar HTML y enviarlo al cliente.


Primeros pasos en el desarrollo web con Suave

En la entrada anterior vimos cómo implementar Hypermedia en una API REST utilizando Suave, en la que partíamos de una pequeña solución y dábamos por conocidos algunos conceptos. En esta entrada damos a un pequeño paso atrás para introducir el funcionamiento y conceptos básicos de Suave para poder afrontar y crear un proyecto web. A través de varios posts, iremos conociendo las distintas características de Suave con los que cualquier desarrollador, incluso sin conocimientos profundos del lenguaje, podrá crear y desplegar una web realizada íntegramente en F#.


Building an Hypermedia REST API with F# and Suave.IO

Hypermedia, also known by the acronym HATEOAS (Hypermedia as the Engine of Application State), is an architecture feature of REST applications that allows clients to fully interact with a service through resources provided dynamically by the server. This enables that client and server implementations can evolve independently.


Reconnect(); //2015

El pasado 18 de noviembre Microsoft celebró en Nueva York el evento anual para desarrolladores donde pudimos conocer de primera mano la estrategia sobre el futuro de sus herramientas de desarrollo y servicios, Microsoft Azure, desarrollo de aplicaciones web y desarrollo de apps multiplataforma para Android, iOS y Windows.


Programación basada en agentes

F# tiene incorporado un mecanismo de procesamiento de mensajes que consiste básicamente en un sistema de colas que permite enrutar mensajes de forma asíncrona utilizando memoria compartida. Este sistema, muy parecido a los agentes de Erlang, es especialmente útil cuando tenemos múltiples clientes que tienen que realizar una petición a un único servidor.

Para poder procesar las colas de mensajes, vamos a crear distintos agentes que escanearán las colas en busca de mensajes que cumplan con un determinado criterio y que estén relacionados con la funcionalidad que hayamos designado a cada agente.


El principio Open-Closed y F#

En la programación orientada a objetos, el principio Open/Closed (Open/Close Principle, OCP) establece que “las entidades de software deben estar abiertas a extensión, pero cerradas a modificación”. Detrás de este enunciado nos encontramos con el corazón de la OOP, ya que la conformidad con este principio es lo produce los mayores beneficios en cuanto mantenibilidad y reusabilidad del código.

El OCP intenta evitar los “malos” diseños, entendiendo como tales, aquellos en los que al realizar un solo cambio en un programa da como resultado una serie de cambios en los módulos de los que depende. Por lo tanto, para poder crear diseños que son estables a los cambios durante su ciclo de vida, tenemos que extender el comportamiento añadiendo nuevo código y no cambiar el código antiguo que funciona.


Vistazo general a las novedades de Windows 10

Hace un par de semanas Microsoft liberó por fin el SDK para las aplicaciones de Windows 10. Este anuncio implica un importante cambio que nos va a marcar la nueva forma de desarrollar aplicaciones para todos los dispositivos con Windows 10. En este artículo voy a comentar las novedades más destacadas que nos vamos a encontrar. No voy a entrar en el detalle de cada una de ellas. Si queréis más información Josue Yeray y Javier Suárez están escribiendo una serie de posts en los irán profundizando en cada una de las novedades.


Code Quotations en F#

Las expresiones de cálculo que vimos en un post anterior se pueden utilizar para dar un significado distinto al código; sin embargo, tienen ciertas limitaciones. Por poner un ejemplo, no podemos manipular el código y ejecutarlo en un entorno diferente, al igual que hace LINQ to SQL. Si queremos hacer algo parecido en F#, podemos lograrlo utilizando una característica del lenguaje llamada Code Quotations o expresiones de código delimitadas, que permite generar y usar expresiones de código F# de forma programática, de forma que es posible acceder a la información de tipo de un bloque de código y además ver cómo está estructurado, conocido normalmente como árbol de sintaxis abstracto (Abstract-Syntax Tree o AST).