Оптимизация потока данных с использованием HOOPL
Я программист на Haskell (обычно я использую алгоритмы на Haskell) и пытаюсь понять библиотеку HOOPL, но не могу ее расшифровать. У меня нет опыта работы с компиляторами (в настоящее время я учусь у Coursera и Compilers: Принципы, Методы и Инструменты), и было бы здорово, если бы вы могли предложить мне систематический подход к пониманию библиотеки HOOPL (что является обязательным условием). Допустим, у меня есть небольшой код на Haskell, к которому я хочу применить оптимизацию потока данных с помощью HOOPL
add :: Int -> Int -> Int
add x y = z where
x' = 1
y' = 1 -- this will be dead code elimination
z = x' + 1
Как написать код HOOPL для оптимизации этого. Было бы здорово, если бы вы могли привести немного лучший пример и простить меня, если я звучу глупо.
1 ответ
Хорошее место для начала - это использовать git-репо, в котором есть много дополнительных файлов по сравнению с тем, что есть на Hackage. Загляните в подкаталог / testing, и вы увидите простой код, определяющий базовый императивный язык и некоторые оптимизации для него.