Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 检查列表中的所有项目_List_Haskell - Fatal编程技术网

List 检查列表中的所有项目

List 检查列表中的所有项目,list,haskell,List,Haskell,此功能的结果: list = [x*x | x <- [0..100]] res = id . filter (\(x,y,sum) -> sum > 9) . takeWhile (\(x,y,sum) -> sum < 100) . nub $ [(x, y, (sqrt (x) + sqrt (y))) | x <- list, y <- list] list=[x*x | x sum>9) .takeWh

此功能的结果:

list = [x*x | x <- [0..100]]    
res = id
    . filter (\(x,y,sum) -> sum > 9)
    . takeWhile (\(x,y,sum) -> sum < 100)
    . nub
    $ [(x, y, (sqrt (x) + sqrt (y))) | x <- list, y <- list]
list=[x*x | x sum>9)
.takeWhile(\(x,y,sum)->sum<100)
.努伯

$[(x,y,(sqrt(x)+sqrt(y))|xtakeWhileA
takeWhile::(A->Bool)->[A]-[A]是罪魁祸首,因为在某一点上,总和>100,然后列表被切断
是一个函数,正如名字所说,它在条件成立时接受元素。从一个这样的元素失败的那一刻起,列表的其余部分就不再发出,不管它是否产生有价值的数据

由于您的
列表
是有限的,并且您对所有配置都感兴趣,因此您不必在此处使用
takeWhile
,您可以使用
过滤器
,因此:

res = id
    . filter (\(x,y,sum) -> sum > 9)
    . filter (\(x,y,sum) -> sum < 100)
    . nub
    $ [(x, y, (sqrt (x) + sqrt (y))) | x <- list, y <- list]
接下来,只要值的平方根小于100,我们将取值:

   where sq100 = takeWhile (\(r,_) -> r < 100) squares
其中sq100=takeWhile(\(r,\)->r<100)正方形
现在,我们可以使用列表理解,计算两个列表的平方根和平方,并计算平方根之和,使之大于9,小于100。我们可以这样写:

res = [ (x,y,sqq) | (sqx,x) <- sq100, (sqy,y) <- sq100, x <= y,
                    let sqq = sqx+sqy, sqq > 9, sqq < 100 ]
     where sq100 = takeWhile (\(r,_) -> r < 100) squares
res=[(x,y,sqq)|(sqx,x)A
takeWhile::(A->Bool)->[A]->[A]
是一个函数,正如名字所说,它在条件成立时接受元素。从一个这样的元素失败的那一刻起,列表的其余部分就不再发出,不管它是否产生有价值的数据

由于您的
列表
是有限的,并且您对所有配置都感兴趣,因此您不必在此处使用
takeWhile
,您可以使用
过滤器
,因此:

res = id
    . filter (\(x,y,sum) -> sum > 9)
    . filter (\(x,y,sum) -> sum < 100)
    . nub
    $ [(x, y, (sqrt (x) + sqrt (y))) | x <- list, y <- list]
接下来,只要值的平方根小于100,我们将取值:

   where sq100 = takeWhile (\(r,_) -> r < 100) squares
其中sq100=takeWhile(\(r,\)->r<100)正方形
现在,我们可以使用列表理解,计算两个列表的平方根和平方,并计算平方根之和,使之大于9,小于100。我们可以这样写:

res = [ (x,y,sqq) | (sqx,x) <- sq100, (sqy,y) <- sq100, x <= y,
                    let sqq = sqx+sqy, sqq > 9, sqq < 100 ]
     where sq100 = takeWhile (\(r,_) -> r < 100) squares

res=[(x,y,sqq)|(sqx,x)现在它使用x=0和y=0..99,我希望它在x=0..99和y=0..99时打印结果,只需要最后一行中最外面的一对圆括号。
id
也不是必需的,因为它是标识函数。另外,我很确定
nub
也不是必需的。在中转换
takeWhile
如果
a==sqrt(b)
,这不是意味着
a*a==b
?如果
n==sqrt(x*x)
,这不是意味着
n==x
?如果
p+q>9
,这不是意味着
q>9-p
?如果
p+q<100
,这不是意味着
q<100-p
?使用过滤器而不是take当修复它时,谢谢你现在它与x=0和y=0..99一起工作,我只想在x=0..99和y=0..99时打印结果最后一行中最外面的一对圆括号是必需的。
id
也不是必需的,因为它是标识函数。另外,我很确定
nub
也不是必需的。将
takeWhile
转换为
过滤器。
a==sqrt(b)
,它不是意味着
a*a==b
?如果
n==sqrt(x*x)
,它不是意味着
n==x
?如果
p+q>9
,它不是意味着
q>9-p
?如果
p+q<100
,它不是意味着
q<100-p
?使用过滤器代替take,同时修复它,谢谢