---
# System prepended metadata

title: Programação funcional

---

# Programação funcional
## Code Snippets
**Se for no VS Code tudo o que se quisere que apareça tem de levar com um print_(tipo de variavel)**
### Conditional Statemente
```ocaml=
if (valor>valor2) then retorno else retorno2;;
```
```ocaml=
if (valor>valor2) then retorno 
    else if(valor<valor2) then retorno2 else retorno 3
```
### Atribuição de Variáeis
```ocaml=
let nome_variavel=valor;;
```
O resto funciona como o C(linguagem decente), ou seja, podemos criar variaveis compostas de multipliucação, soma, divisão etc de outras variaveis

### Funções
```ocaml=
let funcao (input1: int) (input2: int) :int=
    input1*input2;;
```
Para usar a função
```ocaml=
funcao valor_1 valor_2
```
__Outra forma de fazer__
```ocaml=
let teste (input1: int) (intput2: int) : int=
    let produto=input1*input2 in
    produto;;
```
### Patern Matching
```ocaml=
let nome_função (x: int) :string =
    match x with
        | 0 -> "true"
        | _(simboliza qualquer valor) -> "false"
    ;;
```
### Listas
```ocaml=
 [a;b;c](qualquer uma das letras representa 
 um valor no qual todos têm de ser do mesmo tipo)
 
 val x : int list = [a;b;c]
 
```
Para adicionar membros a uma lista é fazer ```d::[a;b;c]```
### Loops
```ocaml=
for variable = start_value to end_value do
  expression
done
  
for variable = start_value downto end_value do
  expression
done

while boolean-condition do
  expression
done
```
