Ngôn ngữ OCaml

phanhao

Member
gemgem
Tham gia
18/03/2025
Bài viết
160
Được Like
0
Coin
0
Points
800
OCaml là dòng ngô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ình ML), 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ăm 1985. Caml là ngôn ngữ lập trình viên và đến OCaml thì thêm các tính năng lập trình hướng đối tượng (Object - chữ O trong OCaml).

Đặc điểm

[sửa]

  • Kiểu mạnh: các biến trong Caml khi khởi tạo chỉ mang một dạng dữ liệu nhất định (khác với các ngôn ngữ kiểu yếu như Lisp).
  • Hệ thống gỡ lỗi.
Kiểu dữ liệu

[sửa mã nguồn]

Trong OCaml, kiểu số nguyên và số thực có các toán tử riêng biệt:

  • Với số nguyên: +, *,...
  • Với số thực: +., *.,...
Kiểu chuỗi ký tự được bao trong cặp dấu nháy kép: "Viet Nam"

Kiểu boolean 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

[sửa]

Câu lệnh của OCaml kết thúc với hai dấu chấm phẩy (;, khác với ML chuẩn.

Trong OCaml, cũng như các ngôn ngữ lạp trình khác, tên được gán giá trị bằng lệnh let: <syntaxhightlight lang="ocaml" style="font-size:1.2em;"> 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" style="font-size:1.2em;"> (* 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ằng let: <syntaxhightlight lang="ocaml" style="font-size:1.2em;"> let gapDoi x = x *. 2.0;; </syntaxhightlight>

Với các hàm đệ quy, ta cần viết let rec: <syntaxhightlight lang="ocaml" style="font-size:1.2em;"> let rec giaiThua n =

if n = 0 then 1 else n * giaiThua (n-1);;
 
Top Bottom