小编Chr*_*ris的帖子

Reduce函数不处理空列表

我之前创建了一个递归函数来查找列表的产品.现在我已经创建了相同的功能,但使用了reduce函数和lamdba.

当我运行此代码时,我得到了正确的答案.

items = [1, 2, 3, 4, 10]
print(reduce(lambda x, y: x*y, items))
Run Code Online (Sandbox Code Playgroud)

但是,当我给出一个空列表时,会发生错误 - reduce() of empty sequence with no initial value.为什么是这样?

当我创建递归函数时,我创建了处理空列表的代码,reduce函数的问题只是它不是为了处理和清空列表而设计的吗?或者还有其他原因吗?

我似乎无法在网上找到问题或任何解释原因的问题,我只能找到解决该特定人员问题的问题,无需解释.

python reduce lambda list

4
推荐指数
2
解决办法
2851
查看次数

解释SML函数及其类型

所以我有这个功能:

fn (f,g,x) => g(f(x));

这个函数的类型是:

('a -> 'b) * ('b -> 'c) * 'a -> 'c

函数是否表示f表示'a,g表示'b,x表示'c?在那种情况下,怎么会('a -> 'b)出现?因为这不代表f - > g?

如果这是一个模糊而写得不好的问题,请道歉.

有人可以向我解释如何计算该函数的类型吗?

谢谢.

types function sml

2
推荐指数
1
解决办法
103
查看次数

多态,参数多态,临时多态

我试图找出这些类型的多态性之间的差异。我找不到有关Ad-Hoc多态性的资料。

我想说多态性是参数多态性,但通常仅称为多态性?我是否正确地假设了这一点?

我知道可以在继承中使用多态,但是我不确定它可以提供哪些其他属性。

如果有人可以帮助定义这些类型的多态性并尝试给出明显的差异,那将是很好的。

谢谢!

注意:Python中的每个示例都很棒。

polymorphism adhoc

1
推荐指数
1
解决办法
808
查看次数

是否已经使用按名称传递参数实现了 while 循环?: 斯卡拉

Scala Tour Of Scala 文档以 whileLoop 函数为例解释了按名称传递的参数。

def whileLoop(condition: => Boolean)(body: => Unit): Unit =
  if (condition) {
    body
    whileLoop(condition)(body)
  }

var i = 2

whileLoop (i > 0) {
  println(i)
  i -= 1
}  // prints 2 1
Run Code Online (Sandbox Code Playgroud)

该部分解释了如果不满足条件,则不会评估主体,从而通过不评估未使用的代码主体来提高性能。

Scala 的实现是否while已经使用了按名称传递的参数?

如果有原因或特定情况导致实现无法使用按名称传递参数,请向我解释,到目前为止我还没有找到任何相关信息。

编辑:根据 Valy Dia(/sf/users/407844461/)的回答,我想添加另一个问题......

如果在某些情况下可能根本不评估主体,while 语句的方法实现是否会比语句本身性能更好?如果是这样,为什么要使用 while 语句呢?

我将尝试对此进行测试,但我是 Scala 的新手,因此可能需要一些时间。如果有人愿意解释,那就太好了。

干杯!

functional-programming scala while-loop pass-by-name

0
推荐指数
1
解决办法
131
查看次数