Một cái gì đó rất giống nhau, nhưng sử dụng logic affine nhẹ (LAL) thay vì EAL, đã được Baillot, Gaboardi và Mogbil (bạn có thể tìm thấy bài báo ở đây ). Tôi nghĩ rằng công việc của họ có thể dễ dàng khái quát thành EAL, đó là một hệ thống tự do hơn.
Đối với các tính năng của ngôn ngữ như vậy, bạn có tính đa hình nguyên bản (EAL là một hạn chế của logic tuyến tính bậc hai). Theo như tôi biết, không ai đã xem xét các loại phụ thuộc, nhưng tôi không hiểu tại sao chúng không nên hoạt động. Trong thực tế, EAL chưa được gõ cũng hoạt động giống như gõ EAL, vì các thuộc tính chuẩn hóa của nó không phụ thuộc vào các loại.
Một hậu quả là trong EAL, bạn có thể sử dụng các loại điểm cố định tùy ý (xem ví dụ bài báo này của Baillot) và xác định các loại dữ liệu theo kiểu đệ quy tự nhiên (như ), cùng với định nghĩa F hệ thống ít tự nhiên (từ góc độ lập trình). Tuy nhiên, theo nhận xét trên về việc chuẩn hóa chưa được kiểm tra, một ngôn ngữ lập trình dựa trên EAL sẽ luôn luôn là toàn bộl i s t A : = n i l | Một * l i s t Một, điều đó có nghĩa là bạn sẽ không có bộ kết hợp sửa lỗi và việc sử dụng các kiểu đệ quy không tự nhiên như bạn mong đợi. Ví dụ, lấy số Scott: không có định nghĩa đệ quy (được đưa ra bởi bộ kết hợp điểm cố định), thật khó để diễn tả bất cứ điều gì ngoài các hoạt động thời gian không đổi với biểu diễn số nguyên này. Vì vậy, bạn vẫn sẽ cần phải sử dụng chữ số Giáo Hội cho lặp (ví dụ, vòng), bằng cách sử dụng mà bạn sẽ phải chịu trong việc hạn chế sự phân tầng cơ bản của logic ánh sáng (mà tạo cho họ tính phức tạp của họ): bạn có thể không lặp một chức năng N a t → N a t mà chính nó đã được xác định bởi phép lặp ( N a tf o rN a t → N a tN a t đây là loại số nguyên của Giáo hội).
Một ví dụ: với một số "hack số nguyên Church", có thể định nghĩa trong EAL sao cho d b l n _ = 2 n _ mà không cần sử dụng phép lặp. Sau đó, bạn có thể lặp lại d b l để xác định hàm số mũ e x p , tuy nhiên, không thểd b l : N a t → N a td b l n --= 2 n--- d b le x pchính nó được lặp đi lặp lại. Vì vậy, bất cứ ngôn ngữ lập trình nào dựa trên EAL sẽ cần phải có một số loại cơ chế cấm một số định nghĩa nhất định bằng cách lặp; thật khó để tưởng tượng làm thế nào hạn chế như vậy sẽ không dẫn đến một ngôn ngữ mà người lập trình cảm thấy khó xử. Dù sao, không ai cấm bạn thử và xem những gì bạn có thể nhận được!
Trong mọi trường hợp, nếu bạn quan tâm đến mối quan hệ giữa đánh giá tối ưu, EAL và logic nhẹ nói chung, tôi khuyên bạn nên xem qua các bài báo của Coppola từ đầu đến giữa những năm 2000.