Скажем, у меня есть это:Template Haskell имена деклараций как строки
f x = x + 1
tt2 name o = sequence [valD (varP (mkName name)) (normalB [| f $(varE o) |]) []]
Я хотел бы преобразовать tt2
в tt
:
tt name o = [d| ??? = f $(varE o) |]
Я не могу понять, что ???
должно быть. Вероятно, это потому, что я не понимаю, как работает TH. Может кто-нибудь помочь?
Хорошо. Вы полагаете, что есть более сжатый способ написать то, что я написал? – me2
@ me2: Не совсем. Вы можете определить помощника, например 'simpleDecl name body = sequence [valD (varP (имя mkName)) (normalB body) []]', если вам нужно сделать это в нескольких местах, но это все. – hammar