5

ПроблемаСформировать окончательный код из шаблона кода Haskell

Можно ли произвести «чистую» Haskell код из одной функции, включая Template Haskell?

Я хочу получить код, в котором все qutations и сплайсы Haskell Template расширяются? (Чтобы подать его в другой Haskell компилятор (Ускорения), который не поддерживает шаблона Haskell пока.)

Пример

модуль TupleReplicate:

tupleReplicate n = do 
    id <- newName "x" 
    return $ LamE ([VarP id]) (TupE $ replicate n $ VarE id) 

главный:

main :: IO() 
main = do 
    print $(tupleReplicate 3) "x" 
    return() 

можно расширить до:

main :: IO() 
main = do 
    print (\x->(x,x,x)) "x" 
    return() 

ответ

2

Решение с использованием шаблона Haskell довольно принтера можно найти здесь: Preferred method for viewing code generated by Template Haskell

Есть и другие инструменты, а ответил на вопрос здесь: How to create a non-TH package from code generated using Template Haskell?

Результат -ddump-splices не всегда действует Haskell кода, это только для программиста.

0

Самый простой способ - скомпилировать (или интерпретировать в GHCi) с помощью -ddump-splices.

+2

Насколько я знаю, '-ddump-splices' НЕ генерирует рабочий код Haskell. –