Использование шаблона Haskell для добавления библиотек, с которыми можно связать

В настоящее время я взламываю свой путь, пытаясь сделать квазивоты для написания кода Rust inline в Haskell. Я думаю, что у меня есть работа по генерации кода (включая такие вещи, как марширование типов Haskell с и из Rust). Теперь у меня возникла проблема выяснить, как сделать все компиляцию и привязку из шаблона Haskell. Конвейер выглядит следующим образом:

  • Квазиквада анализируется
  • Исходный код генерируется для
    • соответствующая функция ржавчины
    • Импорт Haskell FFI
    • вызов Haskell для импортированной функции
  • Код Rust скомпилирован в статическую библиотеку (например, rustc --crate-type=staticlib qq_function.rs -o qq_function.a)
  • Код Haskell скомпилирован и связан с qq_function.a (и несколькими другими библиотеками, такими как m, c и т.д.)

Моя проблема заключается в том, что шаги 3 и 4 выполняются полностью внутри TemplateHaskell. Вот насколько я получил:

  • runIO может записывать исходные файлы Rust, которые я создал
  • addDependentFile сообщает GHC, что сгенерированный файл Rust является зависимостью
  • addForeignFile к сожалению не работает для автоматического управления компиляцией, поскольку Rust не поддерживается языком (это подход inline-c принимает так как C - поддерживаемый язык)
  • runIO можно использовать для создания статической библиотеки Rust (и впоследствии удалить исходный файл Rust), вызывая rustc.

Что мне все еще не ясно, это

  • как я могу использовать Template Haskell для добавления библиотек, с которыми можно связать и
  • как я могу использовать Template Haskell для очистки этих сгенерированных библиотек впоследствии?

ИЗМЕНИТЬ

Я подал запрос функции GHC, связанный с этим.