Tôi mới bắt đầu với SML và tôi đang cố sửa đổi một số mã để tôi hiểu nó đang làm gì (tôi không thể tìm được trình gỡ rối SML/NJ tốt, nhưng đó là một câu hỏi riêng).Làm thế nào để bạn in bên trong một tuyên bố trường hợp trong SML?
fun type_check e theta env non_gens =
case e of
constant_int _ => (integer,theta)
|
constant_bool _ => (boolean,theta)
| ...
Giả sử đây là mã hợp lệ trong constant_int là một phần của một kiểu dữ liệu đã kê khai, vv Làm thế nào để tôi thêm một tuyên bố in để nói 'Returning 'integer'' đối với trường hợp? Tôi cố gắng:
...
constant_int _ => (print "returning integer") (integer,theta)
...
Nhưng tôi nhận được:
stdIn:167.22-167.65 Error: operator is not a function [tycon mismatch] operator: unit in expression: (print "returning integer") (integer,theta)
Tôi nghĩ rằng tôi chỉ không hiểu làm thế nào để thực hiện một chuỗi các câu lệnh, chỉ có người cuối cùng trong số đó phải được coi là giá trị trả về. Lời khuyên nào?
Ngoài ra, làm cách nào tôi có thể in giá trị datatype của riêng mình? SML không thích khi tôi cố gắng chuyển một giá trị datatype vào print() vì vậy tôi có thể phải tạo một hàm in mới cho mỗi kiểu dữ liệu, đúng không?
Bạn không có ý định cao hơn? – Shuzheng
@nlykkei: Không, ý tôi là ưu tiên thấp hơn. Biểu thức trường hợp được nhóm lại đầu tiên bởi vì nó có ưu tiên cao hơn, để lại dấu chấm phẩy, có ưu tiên thấp hơn, là cấu trúc ngoài cùng. – newacct