Sei sulla pagina 1di 1

Memorándum de (O)CAML

Estilo funcional Operadores de comparación (polimorfos) Estilo imperativo


Comentarios <, <=, >, >= Inferior (o igual), superior (o igual) Tipos
(* Nota *) Comentario mono-línea =, <> Igual, diferente unit Tipo vacío, único valor ()
(* Principio de parágrafo ==, != Igual, diferente (físicamente) t1 ref Referencia hacia t1
... Comentarios imbricados min x y, max x y Mínimo y máximo t1 array Arreglo de t1
(* Comentario anterior *)
...
Operadores lógicos Referencias
Fin de parágrafo *) && y lógico (perezoso) let r = ref val Declarar e inicializar
|| o lógico (perezoso) 3 + !var Acceso al valor referenciado
Tipos sencillos not no lógico var := val Asignación
bool Booleanos (valores de verdad) incr var, decr var Incrementación, decrementación
int Enteros relativos (generalmente sobre 63 bits) Expresiones condicionales
float Números flotantes (reales) if c then a else b Vale a si c es verdadero y b sino Arreglos
char Caracteres individuales [| 2 ; 3 |] Nuevo arreglo
string Cadenas de caracteres Filtración let a = Array.make tam val Idem, índices de 0 a tam − 1
match expresión with Si expresión vale : var = a.(5); Lectura
Tipos construidos patrón1 -> expr1 patrón1 entonces expr1 a.(0) <- var; Escritura
t1 * t2 Producto cartesiano |patrón2 -> expr2 patrón2 entonces expr2
t1 -> t2 Funciones de t1 en t2 ... ... Registros
t1 list Lista de t1 |patrónn -> exprn patrónn entonces exprn typedef reg = { Definición
typedef entero = int;; Definición cam1 : bool; Campo no mutable
typedef t3 = A0 | Bb | CC;; Tipo suma (enumerado) Patrones mutable cam2 : int; Campo mutable
typedef t4 = Cons1 of int | Cons2... Tipo suma (otro) 1 Patrón constante }
2|3 Patrones agrupados let r = { cam1 = true; cam2 = 3; } Valor
Constantes n when n>0 Patrón universal con guardia
false, true Booleanos (Falso, Verdadero) let r2 = { r with cam1 = false } Variante modificada de r
x::l Lista no vacía r.cam2 <- r.cam2 + 1; Modificación in situ
-4, 3_000, 0b10, 0o77, 0x5f Enteros (base 10, 10, 2, 8, 16)
x::l as l2 Lista con alias
0.2, -3.45e-10 Flotantes Control
x, y, z Tripla
’a’, ’\n’, ’\"’, ’\\’, ’\’’ Caracteres (a, Entrar, especiales) 2 + 2 ;; Toda frase Caml termina con ;;
_ Patrón universal anónimo
"Hola !" Cadena de caracteres instr1 ; instr2 Secuencia
7 : entero Valor de tipo entero Funciones begin instr1 ; instr2 end Secuencia delimitada
4 , true Valor de tipo int * bool let f x = x + 3;; Definición if condición Cuando condición es verdadera,
Cons1 7 Valor de tipo t4 let rec f x = ... Definición recursiva then instrucción1 hacer algo,
Declaraciones let g x y = x + 2*y Función con varios parámetros else instrucción2 sino (opcional) hacer otra cosa
let var = expr ;; Declaración global f 5, f(4), g 1 6 Aplicacíon
fun x y -> x * y Función anónima Ciclo para
let var = expr1 in expr2 Declaración local
let var1 = expr1 and var2 = expr2... Declaración simultánea function 0 -> ... for id = valmin to valmax do ∀ id de valmin a valmax,
|n -> ... Definición por filtros instrucción repetir instrucción
Operadores enteros (+) Versión prefija de un operador done
+, - Suma, resta for id = valmax downto valmin do ∀ id de valmax a valmin,
*, /, mod Producto, cociente y residuo Funciones matemáticas (flotantes) instrucción repetir instrucción
abs x Valor absoluto de x sin, cos, tan Trigonométricas, ángulo en radianes done
Operadores flotantes asin, acos, atan Trigonométricas inversas
exp, log, log10 Base e, base 10
Ciclo mientras
+., -. Suma, resta √ while condición do Mientras condición es verdadera,
sqrt x x
*., /. Producto, cociente instrucción repetir instrucción
floor x, ceil x bxc, dxe
** Potencia done
Operadores de cadenas Listas
Entradas/salidas
[] Lista vacía
cad1 ^ cad2 Concatenación (acento circunflejo) read_float (); Entrada de flotante (teclado)
[ 1 ; 2 ; 3 ] Lista de tipo int list
cad.[n] Enésimo carácter de cad print_int 5; Visualización de entero (terminal)
1 :: [ 2 ; 3 ] Cabeza : : cola
Operadores de conversión l1 @ l2 Concatenación (arroba) print_string "abc"; Cadena
int_of_string Cadena hacia entero print_newline (); Salto de línea
int_of_float Truncamiento
Tratamiento de los errores OCaml v. 4.03, c Alexis Irlande, agosto de 2016
char_of_int Tabla ASCII failwith "mensaje" Fracasa mostrando mensaje http://irlande.hd.free.fr/

Potrebbero piacerti anche