есть дата тип:
data Term = S | K | I | App Term Term
нужно проверить соответствует ли Term определенной форме
правила довольно простые:
S x y z -> x z (y z)
K x y -> x
I x -> x
например:
(App(App(App S K)I)I)
возвращает True, т.к. S KII -> KI (II) -> K II -> I
или например:
(App (App I K) (App (App K I) K))
возвращает False, т.к. (I K) ((K I )K) -> K ((K I) K), т.е. К имеет только один аргумент и не сокращается.
не могу понять как в Haskell посмотреть за скобки в рекурсии, если возвращается тип (I K или S).
помогите нубу )