【问题标题】:Scope of variables in lambda calculus / haskelllambda演算/haskell中的变量范围
【发布时间】:2017-12-14 22:12:40
【问题描述】:

给定一个像 s := (λx, y, z.x y z) λx, y.x λy, z.z 这样的表达式,就是绑定变量的范围

s := (λx, y, z.x y z) (λx, y.x) (λy, z.z)

s := (λx, y, z.x y z) (λx, y.x (λy, z.z))

我猜这是第二个选项。

【问题讨论】:

    标签: haskell lambda functional-programming lambda-calculus


    【解决方案1】:

    这个问题基本上是无解的。使用任何一种提议的抽象语法树来定义一个具体的语法都很容易,而且我真的不认为有这样一个强大的约定,你会想在没有看到语法定义中的明确文本的情况下假设您正在阅读的文档。

    由于这已被明确标记为 Haskell:在这种特定情况下,它只是一个解析错误,您需要添加括号来消除歧义。但是,如果没有第一个\x y z -> x y z 函数,默认情况下将解析为\x y -> (x (\y z -> z)),您需要添加括号才能获得(\x y -> x) (\y z -> z) 的另一个选项。 (\y z -> z 周围的括号不是可选的。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      • 2019-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多