Một bài tập lập trình cổ điển là viết trình thông dịch Lisp / Scheme trong Lisp / Scheme. Sức mạnh của ngôn ngữ đầy đủ có thể được tận dụng để tạo ra một trình thông dịch cho một tập hợp con của ngôn ngữ.
Có một bài tập tương tự cho Haskell không? Tôi muốn triển khai một tập hợp con của Haskell bằng cách sử dụng Haskell làm công cụ. Tất nhiên nó có thể được thực hiện, nhưng có bất kỳ nguồn trực tuyến nào có sẵn để xem xét không?
Đây là câu chuyện cơ bản.
Tôi đang khám phá ý tưởng sử dụng Haskell làm ngôn ngữ để khám phá một số khái niệm trong khóa học Cấu trúc rời rạc mà tôi đang dạy. Trong học kỳ này, tôi đã học tiếng Miranda , một ngôn ngữ nhỏ hơn đã truyền cảm hứng cho Haskell. Miranda làm khoảng 90% những gì tôi muốn, nhưng Haskell làm khoảng 2000%. :)
Vì vậy, ý tưởng của tôi là tạo ra một ngôn ngữ có chính xác các tính năng của Haskell mà tôi muốn và không cho phép mọi thứ khác. Khi học sinh tiến bộ, tôi có thể "bật" một cách chọn lọc các tính năng khác nhau khi chúng đã nắm vững kiến thức cơ bản.
Các "cấp độ ngôn ngữ" sư phạm đã được sử dụng thành công để dạy Java và Scheme . Bằng cách hạn chế những gì chúng có thể làm, bạn có thể ngăn chúng tự bắn vào chân mình trong khi chúng vẫn đang nắm vững cú pháp và khái niệm mà bạn đang cố gắng dạy. Và bạn có thể đưa ra các thông báo lỗi tốt hơn.