Percursos
/
F#
F#
/
Programa
/
Noções Básicas
No

Noções Básicas em F#

1 exercício

Sobre Noções Básicas

Em F#, tudo o que tem um tipo e pode ser definido é conhecido como um valor. Isso inclui Boolean, inteiros e listas, mas também funções. Os valores inteiros definem-se como um ou mais algarismos (consecutivos) e suportam os operadores matemáticos predefinidos.

Atribuir um valor a um nome designa-se por associação. As associações são imutáveis, o que as torna semelhantes a constantes de outras linguagens. As associações definem-se com a palavra-chave let.

Como o F# é uma linguagem de tipos estáticos, cada associação tem um tipo. Indicar o tipo de uma associação é opcional para a maioria delas, pois a inferência de tipos do F# consegue normalmente inferir o tipo a partir do valor.

// Automatically inferred type
let fingers = 10

As funções também são associações normais, mas com um ou mais parâmetros. Uma função devolve automaticamente a sua última expressão. A inferência de tipos também funciona para a maioria das funções, analisando com que valores a função é chamada e que valor devolve.

// Automatically inferred types for parameters and return type
let add x y = x + y

Invoca-se uma função indicando o seu nome e passando argumentos para cada um dos parâmetros da função.

let five = add 2 3

Se não for possível inferir o tipo de uma associação, o compilador reporta um erro. Para resolver isso, torna o tipo da associação explícito.

// Explicit type annotation
let fingers: int = 10

// Explicit type annotation (also for parameters)
let add (x: int) (y: int): int = x + y

Em F#, as associações só podem ser usadas depois de serem definidas. Usar uma associação antes de ela ser definida dá origem a um erro de compilação.

// Compile error as the add binding has not yet been defined
// let seven = add 3 + 4

let add x y = x + y

Os espaços em branco são significativos: servem para definir o âmbito, indentando o código com espaços relativamente à linha que declara a associação. A convenção predefinida é usar quatro espaços para a indentação.

let toes =
    let left = 5
    let right = 5
    left + right

let multiplyPlusTwo x y =
    let product = x * y
    product + 2

// Trying to access the left, right or product bindings
// here would result in a compile error

As associações em F# (que incluem as funções) organizam-se habitualmente em módulos. Um módulo agrupa funcionalidade relacionada e define-se com a palavra-chave module. A definição do módulo tem de preceder as suas associações:

module Calculator

let pi = 3.14

let add x y = x + y

O F# suporta dois tipos de comentários. Os comentários de uma linha são precedidos de // e os comentários de várias linhas são inseridos entre (* e *).

Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Noções Básicas