Я пытаюсь работать с основными типами данных GHC. Я могу скомпилировать свой источник Haskell в ядро с типом Bind CoreBndr
. Как мы знаем, экземпляр Show
по умолчанию для этого типа данных отсутствует. Существует способ распечатать это представление, но у него слишком много шумов, связанных с ним. Я хочу рассматривать ядро GHC как любой другой тип алгебраических данных и записывать с ним функции. Было бы намного проще, если бы у нас был экземпляр ядра GHC Show
. Кто-нибудь уже написал экземпляр шоу, который я могу повторно использовать?экземпляр `Show` для ядра GHC
Кроме того, как сообщество пишет и проверяет программы, которые имеют дело с ядром GHC?
Какого шума вы говорите? –
Вывод из 'ghc -c file.hs -ddump-simple' дает основное представление программы pertty, напечатанной с явными типами, проверками аргументов словаря и т. Д., Но в контексте программы представление ядра представляет собой просто значение некоторого типа данных , – ankitrokdeonsns
Основная цель ядра - не печатать; это внутренний, низкоуровневый язык, дизайн которого в значительной степени выгоден компилятору, а не человеческому программисту. Тем не менее, «я хочу рассматривать ядро GHC как любой другой тип алгебраических данных и записывать с ним функции» - это уже точно так. Core буквально просто Haskell ADT - что заставляет вас верить иначе? Обратите внимание, что в GHC api уже есть [красивый принтер для ядра] (https://www.stackage.org/haddock/lts-8.2/ghc-8.0.2/PprCore.html). – user2407038