App Expr Expr
| Lam Name Expr
| Var Name
Далее я написал простой тайпчекер:
check :: Expr -> InferM My.Type
Но, дальше мне теперь нужен Expr, где каждая нода аннотирована типом. Я, конечно, могу завести новый тип, изменить check и т д. Но это же хитрее можно решить. Через Fix на типах или как-то иначе...
Не могли бы Вы сообщить, как это правильнее решить?
Не использовал, но мб подойдет https://hackage.haskell.org/package/hypertypes
Тут есть сравнение с recursion-schemes и прочими
Обсуждают сегодня