REBOL không có cách tích hợp để thực hiện việc hiểu danh sách. Tuy nhiên, REBOL có một cơ sở mạnh mẽ (được gọi là parse
) có thể được sử dụng để tạo các ngôn ngữ cụ thể cho miền (DSL). Tôi đã sử dụng parse
để tạo một DSL nhỏ như vậy để hiểu danh sách. Để diễn giải biểu thức, khối chứa hiểu được chuyển đến hàm, vì thiếu cụm từ tốt hơn tôi gọi là comprehend
.Tôi nên gọi hàm REBOL nào để thực hiện tính năng hiểu danh sách?
Ví dụ:
comprehend [(a * b) for a in 1x100 for b in 4x10 where (all [odd? a odd? b])]
Đối với một số lý do, comprehend
âm thanh không đúng với tôi, nhưng cái gì đó như eval
là quá chung chung.
Tôi chưa tìm thấy bất kỳ ngôn ngữ nào khác yêu cầu từ khóa hoặc chức năng để hiểu danh sách. Chúng là đường cú pháp thuần túy ở bất cứ nơi nào chúng tồn tại. Thật không may tôi không có tùy chọn đó. Vì vậy, thấy rằng tôi phải có một chức năng, một tên tốt, ngắn gọn, hợp lý cho nó là gì?
Dưới đây là các mã nguồn cho hiểu danh sách: http://blog.revolucent.net/2009/04/dirt-simple-dsl-in-rebol.html –