Я пытаюсь создать функцию, которая принимает член в качестве входных данных:
data Term =
Variable Var
| Lambda Var Term
| Apply Term Term
--deriving Show
И этим функция superCombinator должна заменить все подтермы формы Lambdax1. ..Lambdaxn.N по ее поднятию , а также по аналогии с подтермами в N. (см. lift функция):
lift :: Term -> Term
lift v = applications (abstractions v (free v)) [Variable v | v <- (free v)]
Пока у меня есть следующий код, но я застрял на том, как вернуть N из абстракции Lambdax1 ... Lambdaxn.N. Как мне go сделать это?
someFunction :: Term -> Term
someFunction = undefined
--have a term of the form lambdax1....lambdaxn.N - Need to find and return N...
super :: Term -> Term
super v = lift (someFunction (abstractions v (free v)))
Спасибо за любую помощь.