Top Qs
Linha do tempo
Chat
Contexto
OCaml
linguagem de programação Da Wikipédia, a enciclopédia livre
Remove ads
Objective Caml, também conhecida como OCaml (Objective Categorical Abstract Machine Language), é uma linguagem de programação funcional da família ML, desenvolvida pelo INRIA em 1996. Trata-se da linguagem Caml com a adição de suporte de técnicas de orientação a objetos e algumas alterações e extensões de sintaxe.
Este artigo não cita fontes confiáveis. (Fevereiro de 2014) |

OCaml permite dois tipos de compilação, para bytecode que corre numa máquina virtual (zinc) ou para código de máquina nativo para um grande número de plataformas. Ela não é uma linguagem puramente funcional, permitindo a existência de valores mutáveis bem como de efeitos colaterais (side-effects), tipicamente existentes apenas em linguagens imperativas. Esta característica distingue-a de outras linguagens puramente funcionais, como por exemplo Haskell.
A excelência de seu compilador que tem gerado código nativo rapidamente e com excelente desempenho quanto a tempos de execução, bem como uma biblioteca base extensa, têm-lhe conquistado bastante notoriedade.
Remove ads
Características
- Linguagem funcional e imperativa;
- Fortemente e estaticamente tipada;
- Tipos dos valores inferidos automaticamente durante a compilação;
- Estruturação e encapsulamento de código por módulos parametrizáveis ou objectos;
- Tipos pré-definidos como listas, tuplas ou records (sendo os últimos similares aos structs em C);
- Orientação a objetos implementadas com um sistema de troca de mensagens;
- Gerência automática de memória (coletor de lixo).
Remove ads
Exemplos
Comentários
(* Comentário... *)
Olá Mundo
print_endline "Hello world!"
(* Imprime "Hello world!" *)
Funções como valores
let s x y = x + y in
let d x y = x - y in
let sq f x y = (f x y)*(f x y) in
let square_sum = sq s in
let square_dif = sq d in
print_string( string_of_int(square_sum 4 6)^ "\t" ^ string_of_int(square_dif 4 6));;
(* Imprime 100 4 *)
Closures
let gen_next i =
let _add x = i+x in
_add
;;
let f = gen_next 10 in
print_int (f 5);;
(* Imprime 15 *)
Factorial recursivo
let rec fact x =
match x with
|0->1
|_ -> x*(fact (x-1))
;;
print_int (fact 20);;
(* Imprime 45350912 *)
Valores mutáveis (conhecidos como "variáveis", no estilo imperativo)
let a = ref 1;;
print_int !a;;
a:=!a+1;;
print_int !a;;
(* Imprime 1 e 2*)
Remove ads
Ver também
Ligações externas
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads