![]() | |
Mẫu hình | lập trình hàm, hướng đối tượng |
---|---|
Nhà phát triển | INRIA |
Xuất hiện lần đầu | 1985 |
Kiểm tra kiểu | mạnh,động |
Hệ điều hành | đa nền |
Giấy phép | QPL,LGPL |
Trang mạng | http://caml.inria.fr |
Ảnh hưởng từ | |
ML | |
Ảnh hưởng tới | |
F# |
OCaml là dòngngôn ngữ lập trình phổ dụng trong ngôn ngữCaml (một dạng của ngôn ngữ lập trìnhML), bắt đầu được Viện Nghiên cứu Khoa học Máy tính Quốc gia ở Pháp (INRIA) phát triển từ năm1985. Caml là ngôn ngữlập trình hàm và đến OCaml thì thêm các tính nănglập trình hướng đối tượng (Object - chữ O trong OCaml).
Trong OCaml, kiểu số nguyên và số thực có cáctoán tử riêng biệt:
Kiểu chuỗi ký tự được bao trong cặp dấu nháy kép:"Viet Nam"
Kiểuboolean có hai giá trịtrue
vàfalse
.
Kiểu danh sách (list
) bao giữa cặp ngoặc vuông với các thành phần phân cách nhau bởi dấu chấm phẩy.
[2; 3; 65; -4]
Câu lệnh của OCaml kết thúc với hai dấu chấm phẩy (;;), khác vớiML chuẩn.
Trong OCaml, cũng như cácngôn ngữ lập trình hàm khác,tên được gán giá trị bằng lệnhlet
:<syntaxhightlight lang="ocaml">let x = 3 + 5 * 2;;</syntaxhightlight>
Đặc điểm lập trình hàm của OCaml cho phép các hàm là dạng dữ liệu cấp I. Hàm số ưu tiên kết hợp với tham số ở mức ưu tiên cao nhất.<syntaxhightlight lang="ocaml">(* Chú thích: giả sử f là một hàm có một tham số *)2 + f 3 (* cách thông dụng *)2 + (f 3) (* rõ ràng hơn *)2 + f(3) (* thường dùng với các ngôn ngữ mệnh lệnh như C, Pascal... Không thông dụng trong OCaml *)</syntaxhightlight>
Với đặc điểm này, một tên cũng có thể khai báo như một hàm bằnglet
:<syntaxhightlight lang="ocaml">let gapDoi x = x *. 2.0;;</syntaxhightlight>
Với các hàmđệ quy, ta cần viếtlet rec
:<syntaxhightlight lang="ocaml">let rec giaiThua n =
if n = 0 then 1 else n * giaiThua (n-1);;
</syntaxhightlight>
![]() Biểu trưng OCaml | |
Phát triển bởi | INRIA |
---|---|
Phiên bản ổn định | 3.11.2 /20 tháng 1 năm2010 |
Hệ điều hành | đa nền |
Thể loại | Ngôn ngữ lập trình |
Giấy phép | Giấy phép công cộng Q,LGPL |
Website | http://caml.inria.fr |
Hệ thống Objective Caml được phát triển gồm có mộtbộ biên dịch (ocamlopt) theo mã gốc (native code) trên nhiều hệvi xử lý (i386,IA64,Power PC, v.v...); cùng với bộ biên dịchbytecode (ocamlc). Ngoài ra, còn có các công cụ hỗ trợ như: môi trường dòng lệnh (ocaml), gỡ lỗi (ocamldebug), v.v...
OCaml được phân phối dưới dạngmã nguồn cùng các bản nhị phân trên các hệ điều thành thông dụng (Windows,Mac OS X,Linux (góideb vàrpm).
ocaml cũng là tên trình thông dịch của ngôn ngữ. Dấu nhắc lệnh OCaml có hình dấu thăng (#). Cần nhớ rằng để kết thúc dòng lệnh cần gõ;;
trước khi gõEnter.<syntaxhightlight lang="ocaml">
-: int = 7</syntaxhightlight>
Kết quả phép tính có giá trị bằng 7, kể cả kiểu dữ liệu: số nguyên (int
) cũng được máy thông báo.
<syntaxhightlight lang="ocaml">
val pi: float = 3.14159265358979312
val binhPhuong: float -> float = <fun></syntaxhightlight>
Kết quả của một khai báo sẽ được máy thông báo làval
tên. Trong trường hợp hàm số thì có cả thông báo về các kiểu dữ liệu (ở đây hàm nhận tham số dạngfloat
(số thực) và trả kết quả cũng dưới dạngfloat
.
OCaml có một số ứng dụng trong kĩ thuật, công nghiệp, thương nghiệp: