Класичною вправою програмування є написання перекладача Lisp / Scheme у Lisp / Scheme. Потужність повної мови може бути використана для створення перекладача для підмножини мови.
Чи існує подібна вправа для Хаскелла? Я хотів би реалізувати підмножину Haskell, використовуючи Haskell як движок. Звичайно, це можна зробити, але чи є в мережі доступні будь-які ресурси?
Ось попередня історія.
Я досліджую ідею використання Haskell як мови для вивчення деяких концепцій курсу дискретних структур, який я викладаю. У цьому семестрі я зупинився на Міранді , меншій мові, яка надихнула Хаскелла. Міранда робить близько 90% того, що я хотів би, але Хаскелл - близько 2000%. :)
Тож моя ідея полягає у створенні мови, яка має саме ті особливості Haskell, які я хотів би, і забороняє все інше. У міру того, як студенти прогресують, я можу вибірково «вмикати» різні функції, як тільки вони засвоїть основи.
Педагогічні "мовні рівні" успішно використовуються для навчання Java та Scheme . Обмежуючи те, що вони можуть зробити, ви можете перешкодити їм стріляти собі в ногу, поки вони все ще опановують синтаксис та поняття, яким ви намагаєтесь навчити. І ви можете запропонувати кращі повідомлення про помилки.