问题标签 [eta-expansion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Partial function application prematurely runs codeblock when used with underscore
Given:
I can call it with:
Here's the curious behaviour with partial application:
The codeblock is evaluated immediately without being passed in as a function. What is the difference between the above 2 statements?
scala - Scala 中的 eta 扩展是什么?
我是 Scala 的新手。刚刚听说过“eta扩展”这个词,大致知道就是将一个方法扩展为一个函数对象。但我在 SO 中发现很少有系统地介绍它的资源。
我很好奇 eta 扩展如何在 Scala 中工作。需要eta扩容的场景有哪些?以及如何在 Scala 中实现eta 扩展?
我大致知道在这种情况下:
someMethod _
将大致翻译成一个新的函数对象,如下所示:
这就是 Scala 所做的一切吗?
scala - 在 Scala 中,使用下划线创建闭包的规则是什么?
起初我认为使用下划线来制作闭包(例如println _
)只是使用箭头(例如x => println x
)的简写,但我最近才知道您还可以执行以下操作:
鉴于我过去的假设,f _
看起来像一个闭包,它只接受一个参数并将一个参数传递给f
. 我以为它会告诉我它无法编译,因为f
需要两个参数,并且reduce
应该需要一个带有两个参数的函数。但它就像我写的那样工作:
这里发生了什么?用下划线创建闭包的规则是什么?
scala - 指定方法的方法签名以应用 eta 扩展
有没有办法指定我想应用eta 扩展的方法的签名?
例如:
抛出编译错误:
顺便说一句:eta 扩展是使用_的正确术语吗?
scala - 在 map 方法中调用匿名函数
当我意识到我的 IDE 指出了类型差异时,我正在创建一个具有多个可能参数的构造函数:
所以我尝试只传递col函数。
它有效,然后,试图理解为什么,我最终得到:
所以我发现将匿名函数传递给像map这样的方法不会返回结果,而是返回整个函数(因为我想它被视为对象)。
那么,如何在不单独声明的情况下使这项工作成为 Column 而不是函数类型呢?
scala - foreach(println) 和 foreach(println()) 有什么区别?
我有一个字符串数组:
为什么str.foreach(println)
工作没有问题,但str.foreach(println())
没有?
不println
等于println()
which 返回一个Unit
值吗?
scala - 当函数值本身不是函数值时,为什么可以在预期函数值的地方使用 scala 函数名称?
为什么可以f
在期望函数值的地方使用,即使它本身不是函数值?
haskell - Haskell - Eta 减少和 Eta 扩展
我一直在研究功能程序优化,并且一直在挖掘 GHC 源码。我(大部分)了解什么是 eta 缩减和 eta 扩展。Eta 减少只删除多余的 lambda:
Eta 扩展与 eta 减少相反,它会做这样的事情(如果我不正确,请纠正我):
我没有得到的是他们如何不妨碍彼此并将编译器送入无限循环。例如,首先对一个值进行 eta 扩展,然后对它进行 eta 缩减,以此类推。那么,这两种优化如何不相互影响呢?
scala - 为什么多态方法的eta扩展不会产生多态函数值?
Scala 2 没有多态函数值,因此 eta 扩展多态方法只给出
然而 Scala 3 确实具有多态函数值,所以为什么 eta 扩展多态方法不提供更多