(* Cẫteva exemple simple cu funcții *)

(* definim o funcție *)
let f x = x + 1

(* aceeași definiție, folosind o valoare de tip funcție *)
let f = fun x -> x + 1

(* apelăm funcția *)
let test1 = f 2

(* compunerea a două funcții *)
let comp f g x = f (g x)

(* la fel, folosind o funcție în partea dreaptă *)
let comp f g = fun x -> f (g x)

(* instanțiem compunerea *)
let fc1 = comp (fun x -> 2*x) (fun x -> x + 1)
(* rezultatul e funcția matematică f(x) = 2*(x+1) *)        
        
(* calculăm o valoare *)
let test2 = fc1 3

(* puteam calcula și direct *)
let test3 = comp (fun x -> 2*x) (fun x -> x + 1) 3

(* o funcție cu două argumente *)
let g x y = 2*x + y

(* același lucru, cu notația explicită de funcție *)
let g = fun x -> fun y -> 2*x + y

(* instanțiind primul argument, obținem o functie de la întregi la întregi *)
let g2 = g 2
(* e funcția f(y) = 4 + y *)
       
(* apelăm g2(3) = 4 + 3 = 7 *)
let test4 = g2 3

(* funcția care scade două numere: diff x y = x - y *)
let diff = (-)          

(* dăm primul argument, din stânga lui minus: d3 x = 3 - x *)
let d3 = diff 3

(* apelăm funcția: 3 - 5 = -2 *)
let test5 = d3 5

(* putem scrie și direct *)
let test6 = diff 3 5
let test7 = (-) 3 5          

This document was generated using caml2html