Tôi gặp vấn đề nhỏ khi triển khai mảng trong ocaml. Ví dụ, khi vào nhà ga (Konsole) và tôi gõTriển khai Ocaml
let tab = Array.make 5 6;
Tôi có
val tab : int array = [|6; 6; 6; 6; 6|]
như một đầu ra. Vì vậy, nó tạo ra một mảng với chiều dài là 5 và điền vào tất cả các trường hợp với 6. Được rồi, tôi hiểu phần đó. Nhưng khi tôi gõ nó vào một trình soạn thảo văn bản như kate chẳng hạn, lưu nó và biên dịch nó, tôi nhận được lỗi này:
Error: Unbound value Array.make
Tôi không hiểu tại sao nó lại lấy Array. làm giá trị bằng kate và nó lấy Array.make như một hàm trong terminal. Tôi đã lưu tệp có đuôi ".ml" và tôi biên dịch nó bằng cách sử dụng ocamlc -o test name_of_file
. Mọi đề xuất xin vui lòng? Cảm ơn.
Cả hai đều cho tôi phiên bản giống nhau. Phiên bản 3.11.2. Tôi không nghĩ rằng tôi ghi đè lên bất kỳ tập tin thuộc về một phiên bản trước đó. Tôi chỉ cần cài đặt Linux trên máy tính của tôi, vì vậy tôi không có kiến phiên bản trước của ocaml. Tôi xác minh bằng cách chỉ cần gõ ocaml và nó đã viết rằng ocaml chưa được cài đặt, vì vậy tôi chỉ cần cài đặt nó .. phiên bản này 3.11.2. Tôi đã thử Array.create nhưng tôi vẫn nhận được cùng một vấn đề. Bạn có nghĩ rằng đó là vì phiên bản tôi đang sử dụng? – mkab
@mktab Nó chắc chắn sẽ hoạt động với phiên bản 3.11.2. Phiên bản 3.12.0 sẽ cho bạn biết nếu đó là mô-đun 'Array' hoặc chức năng' make' trong đó là unbound, một trong nhiều cải tiến nhỏ mà phiên bản này mang lại, nhưng lỗi bạn đang nhận được vẫn còn là một bí ẩn. –
@mktab Có khả năng tệp .../lib/ocaml/array.cmi không được trình biên dịch tìm thấy. Có lẽ nó bị thiếu, hoặc gói phân phối của bạn đã được chuẩn bị không đúng cách bằng cách sao chép các tập tin trong một đích khác ngoài trình biên dịch đã được cấu hình để cài đặt. Nếu đúng, bạn có thể sửa nó bằng cách sử dụng tùy chọn -I và -L, nhưng tôi 'd khuyên bạn nên biên dịch lại OCaml từ các nguồn. –