3
用于定义命名函数的重复语法是否会成为错误的语言设计决策?
我正在为有趣的编程语言建模,并且语法在很大程度上受Scala的影响-特别是函数定义。 我遇到了一个设计问题,因为我的语言无法区分通过def语法定义的函数(类方法)和分配给值的匿名函数(使用创建的值=>)-它消除了实现和行为上的差异。 结果是以下两个定义含义相同: def square(x: Int) = x*x val square = (x: Int) => x*x 没有任何理由在任何正常情况下都使用后一种形式(立即匿名函数赋值)- 可以使用它代替def形式。 具有用于定义命名函数的重复语法是否会损害语言或其他设计方面的正交性? 我更喜欢这种解决方案,因为它允许对方法和命名函数进行简短直观的定义(通过def),以及对匿名函数进行简短定义(使用=>)。 编辑:Scala 确实区分了两者 -匿名函数与defScala中定义的方法不同。不过,差异相对较细微-请参阅我之前链接的帖子。