【发布时间】:2016-01-05 00:32:23
【问题描述】:
cube (x,y,z) =
filter (pcubes x) cubes
cubes = [(a,b,c) | a <- [1..30],b <- [1..30],c <- [1..30]]
pcubes x (b,n,m) = (floor(sqrt(b*n)) == x)
所以这段代码可以工作,cubes 生成一个元组列表,pcubes 与过滤器一起使用来过滤所有满足floor(sqrt(b*n)) == x 的立方体,但是修改我代码的人在@987654326 中写了pcubes x @,这是如何工作的。pcubes x 制作了一个函数,该函数将初始化 cubes x (b,n,m),它将接收一个元组并输出一个布尔值。该布尔值将用于过滤器函数。这种操纵是如何发生的? pcubes x如何访问(b,n,m)部分函数?
【问题讨论】:
-
我不确定你具体是什么感到困惑。哪个
x在哪里? -
坚持编辑问题
-
我建议重新表述问题,以便更清楚您期望代码做什么。另外我建议您添加类型签名。他们可能会指出奇怪的事情,例如
cube是[(a,b,c)]类型,而cubes也是[(a,b,c)]。虽然这可能是有意为之,但我找不到这段代码背后的任何直觉(我没有说这意味着什么)。
标签: function haskell functional-programming currying