在开发函数式编程语言时,是否可以使指定的匿名函数表达式等价于命名函数声明/定义?分配的匿名函数与命名函数声明
例如,在这个伪语言:
add = \ x y -> x + y -- assigned anonymous function expression
add x y = x + y -- named function declaration
我知道,在非功能性的语言中,2有几分不同的属性,但我问他们为什么不能是一样的吗?这是一个编译器问题吗?
例如,是否有语言使递归方面的上述2等价物?那么我可以使用他们的名字和他们分配的标签递归?
factorial = \ n -> if n = 0 then 1 else n * factorial (n-1)
factorial n = if n = 0 then 1 else n * factorial (n-1)
也看到这一点:http://www.haskell.org/haskellwiki/Declaration_vs._expression_style
其中“非功能”语言是那些不同的,以及如何?用什么语言不能使用你的'factorial'定义? – molbdnilo 2014-09-30 06:28:37
JavaScript,PHP,Python,Ruby,Haskell ......当然它们有像'function','def'等语法差异。等等。 – CMCDragonkai 2014-09-30 07:03:53
@CMCDragonkai:在JavaScript,Python,Haskell中,2没有区别。在Ruby中,'def'定义了方法,所以实际上没有定义“命名函数”的语法。 – newacct 2014-09-30 18:43:55