Есть ли способ получить информацию о номере строки / трассировке в Haskell?
(например, макрос C __LINE__
или Python traceback.extract_stack()
)
Это было бы полезно для меня, чтобы написать программу на Haskell, которая генерирует код C ++, который будет отмечен комментариями, указывающими, какая строка Haskell отвечает за какую строку C ++.
Пример Haskell:
LINE "#include <foo.h>" -- this is line 12
: INDENT "void Foo::bar() {" "}"
[ LINE $ "blah(m_" ++ x ++ ", \"" ++ x ++ "\");"
| x <- ["Potato", "Avocado"]
]
сгенерирует этот код C ++:
#include <foo.h> // gen.hs:12
void Foo::bar() { // gen.hs:13
blah(m_Potato, "Potato"); // gen.hs:14
blah(m_Avocado, "Avocado"); // gen.hs:14
} // gen.hs:13