有人可以解释一下这段代码的作用吗?

时间:2017-12-24 02:25:58

标签: haskell

有人可以解释这段代码的用途吗?

query = 'INSERT INTO audioFiles VALUES (%s,%s)'
cur.execute(query, t)

1 个答案:

答案 0 :(得分:5)

代码的第一行定义了一个名为factors的函数,它接受一个参数n,大概是一个Int,并返回一个元素列表,由一个理解列表定义。 / p>

列表推导是Haskell为你定义列表的语法糖,至少对我来说,更清晰,更优雅。

基本上,他们有这种模式:

[ elements | generators and predicates ]

其中generator是x <- collection形式的表达式,谓词是布尔表达式。 |右侧的每个表达式/谓词由逗号或另一个|分隔,这意味着您可以在同一列表推导中使用多个生成器。生成器用作从特定集合中获取/生成元素的一种方式,其中谓词充当过滤器。

一个简单的例子:

[ x + 1 | x <- [1, 2, 3], x == 2 ]

将导致

[3]

生成器x <- [1, 2, 3]说,从[1, 2, 3]和谓词x == 2状态中取出每个元素:但只有那些完成此x == 2的人,这意味着唯一的值generators and predicates表达式返回2。然后,elementsx+ 1,因此我们会生成3

让我们回顾你的第一行代码:

factors n = [x | x <- [1..n], n `mod` x == 0]

嗯,=的左侧是清晰的,它是一个名为factors的函数,以n为参数,对吧?在右边,我们有什么?是的,列表理解!

让我们分析一下,记住表格:

[ form of the elements | generators and predicates ]

似乎我们有x作为元素的结构,我们在|的右侧有两个表达式。

第一个

x <- [1..n]

是......发电机!它基本上是说,从这个集合x中获取[1..n](这是从1到n的列表,给出的参数)。

第二个

n `mod` x == 0

是...谓词!它声明我们将要放置的元素必须验证这一条件:n的余数除以x0

总而言之,factors n函数的作用是计算从1n精确划分n的数字列表,即n列表{1}}除数(因子)。

现在,我认为您将能够分析并说出primes自己所做的事情。