我正在编写一个程序,为给定的类型签名重构Haskell表达式,例如:对于a -> b -> a,它将返回\x -> \_ -> x。我已经阅读了这个问题背后的理论,并且我知道有这个Howard-Curry同构。我想象我的程序会解析输入并将其表示为术语。然后我会触发SLD-resolution,它会告诉我是否可以构造给定类型的术语(对于Pierce的情况是不可能的)。我还不知道如何在这个解析过程中实际创建Haskell表达式。我看过djinn的代码,但它有点复杂,我想掌握一些关于如何工作的一般性思路。