我正在尝试找出如何在这个 Finally Tagless EDSL 中表达 Y-Combitor:
class Symantics exp where
lam :: (exp a -> exp b) -> exp (exp a -> exp b)
app :: exp (exp a -> exp b) -> exp a -> exp b
fix :: ...
fix f = .....
我不确定,但我认为 Y-Combinator 的默认实现应该可以使用“lam”和“app”。
有人知道吗?由于“无法构造无限类型”的问题,我的第一次尝试失败了。
干杯, 君特
最佳答案
如果引入let,就可以提供一个默认的实现。但是你不能单独使用 lam 和 app 这样做,出于同样的原因你不能在没有 let 的情况下直接在 Haskell 中编写它。您的目标是简单类型的 lambda 演算的扩展,只是不会输入该术语。
关于haskell - FT EDSL 中的 Y 组合器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3103587/