Кто-нибудь знает, есть ли в Haskell функция, которая делает что-то вроде этого:
"Int" -> Int
"String" -> String
"Bool" -> Bool
т.е. он принимает строковое представление имени конструктора типа и преобразует его в фактический конструктор типа как в выражении, так и в шаблоне.
edit: Моя общая цель - упростить что-то вроде:
transExp (Add exp1 exp2) vars
= transExp exp1 vars ++ transExp exp2 vars ++ [IAdd]
transExp (Sub exp1 exp2) vars
= transExp exp1 vars ++ transExp exp2 vars ++ [ISub]
В соответствие с одним шаблоном, поэтому просто преобразовать Add или Sub в строку, добавить «I» впереди и преобразовать ее вернуться к типу.