Herramientas de usuario

Herramientas del sitio


functional:fsharp

¡Esta es una revisión vieja del documento!


F#

Básicos

Primeras pinceladas

Puedes poner la clausula #light al principio de cada archivo de código. Esto hace que lo escrito en ese archivo permita una sintaxis más olgada, ya que por defecto F# es compatible con OCaml y este tiene una sintaxis muy restrictiva.
Para F# es importante el espaciado, es decir, los espacios tendrán relevancia en el código ya que código verticalmente alineado está considerado semánticamente relacionado.
Los comentarios serán…

// This is a single-comment. Everything from the start is treated as a comment.
(* This is a
multiline comment *)
/// This is a doc comment that can be converted to useful documentation.

En F# cada “comando” de código es una expresión, esto significa que todo comando genera un valor de un tipo de datos concreto.

El comando open sería el equivalente a using de C#, open importa un namespace de una librería .NET (y, como en C#, necesitas hacer referencia a la DLL correspondiente).

Por defecto se agregan los siguientes namespaces: Microsoft.FSharp.Core (tipado de datos), Microsoft.FSharp.Core.Operators (operadores), Microsoft.FSharp.Collections (colecciones), Microsoft.FSharp.Control (construcciones de lazy evaluation y flujos asíncronos), Microsoft.FSharp.Text (funciones de IO).

Herramientas

La consola interactiva

Te permite evaluar expresiones de F#, es el ejecutable fsi.exe (con mono es fsharpi). Sobre esta podemos lanzar comandos como…

printfn "Hello world!";;
#r "System.Web.dll";;

La consola evaluará el código una vez se introduzcan dos puntos y coma: ;;.

El compilador

Es el “fsc.exe”.

Enlaces de instalación

Tipos de datos y operaciones

Los datos en F# no se asignan sino que se enlazan. Esto significa que al hacer:

let x = 3

Se enlaza x con el símbolo o, en este caso, valor numérico 3, si luego se volviese a enlazar con otro valor el 3 quedaría abandonado y a la espera del garbage colector.
let soporta la asignación múltiple:

let a, b = 100, 200     // a=100, b=200
let x, y, z = 5, 4, 3   // x=5, y=4, z=3

F# soporta el tipo void para interoperar con otros lenguajes .NET y el tipo unit expresado como: (). El tipo unit significa “ningún valor” (sí, como el void).
Aunque F# puede indicar automáticamente el valor de una variable, es posible que queramos especificar el tipo de resultado mediante el nombre de este:

let a = float32 100;;
let a = float32(100);; // El uso de paréntesis es opcional.

Otra forma de indicar el tipo que puede coger una variable es la siguiente (si no lo indicásemos asignaría un float):

let a : double = 100.;

Generalmente al cambiar el dato al que apunta lo que ocurre es que se crea uno nuevo y se enlaza este, pero para indicar que una variable es alterable usamos la palabra mutable; luego, para actualizar el valor utilizaremos <-:

let mutable x = 123
x <- 456

Numéricos

Un número, como por ejemplo 100, es interpretado como un integer de 32 bits, si queremos que sea un short escribiríamos 100s. Los tipos de datos que existen son: La forma de expresar números es:

  1. Hexadecimal: mediante el prefijo 0x: 0x7F.
  2. Octal: un cero seguido de una 'o' minúscula: 0o103.
  3. Binario: un cero seguido de una 'b': 0b1001.
functional/fsharp.1296145637.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)