我有一组Lambda表达式,我正在将它们传递给其他Lambda表达式。所有Lambda表达式只依赖于它们的参数,它们不调用任何外部函数。当然,有时候会变得相当混乱,我会将一个带有不正确数量参数的函数传递给另一个函数,从而创建一个GHCi异常。
我想制作一个调试函数,它将接受任意Lambda表达式(具有未知数量的参数),并根据Lambda表达式的结构和函数返回一个字符串。
例如,假设我有以下Lambda表达式:
我想制作一个调试函数,它将接受任意Lambda表达式(具有未知数量的参数),并根据Lambda表达式的结构和函数返回一个字符串。
例如,假设我有以下Lambda表达式:
i = \x -> x
k = \x y -> x
s = \x y z -> x z (y z)
debug (s k)
应该返回 "\a b -> b"
debug (s s k)
应该返回 "\a b -> a b a"
(如果我简化得正确的话)
debug s
应该返回 "\a b c -> a c (b c)"
有什么好的方法可以做到这一点吗?