Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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 haskell全函数_List_Haskell_Boolean - Fatal编程技术网

List haskell全函数

List haskell全函数,list,haskell,boolean,List,Haskell,Boolean,我需要一个程序来检查所有元素对之间的差异是否在-2到2的区间内(>=-2&&=-2&&(x>=-2)和&(x嗯,问题说明不是很清楚 你说: 所有元素之间的差值在-2到2之间(>=-2&&(x>=-2)和&(x为什么不简单地 allfunc xs = (maximum xs - minimum xs) <= 2 allfunc xs=(最大xs-最小xs)为什么不干脆 allfunc xs = (maximum xs - minimum xs) <= 2 allfunc xs=(最

我需要一个程序来检查所有元素对之间的差异是否在-2到2的区间内(>=-2&&<2)。如果是,则返回
True
,否则返回
False
。例如,
[1,2,3]
,但
[1,3,4]
。 我正在使用
all
功能。我的
if
子句有什么问题

allfunc (x : xs)
   = if all (...) xs
      then allfunc xs
      else [x] ++ allfunc xs
allfunc _
   = []

或者我做了一些完全错误的事情?

对于这一点,使用列表理解或使用符号可能更容易

pairsOf lst = do 
  x <- lst
  y <- lst
  return (x, y)
现在您只需确保
差异lst
中的每个元素都在
-2
2
之间


当然,这只是一种可能的方法。还有许多其他方法。

对于这一点,使用列表理解或使用符号可能更容易

pairsOf lst = do 
  x <- lst
  y <- lst
  return (x, y)
现在您只需确保
差异lst
中的每个元素都在
-2
2
之间


当然,这只是一种可能的方法。还有很多其他的方法。

基本上,是的,你做错了什么
all
意味着接受一个谓词和一个要测试的值列表。因此,它将返回
True
当且仅当所有值在应用于给定谓词函数时均为True时。即:

allValuesEven = all even
allValuesOdd  = all odd

基本上,是的,你做错了什么
all
意味着接受一个谓词和一个要测试的值列表。因此,它将返回
True
当且仅当所有值在应用于给定谓词函数时均为True时。即:

allValuesEven = all even
allValuesOdd  = all odd

嗯,问题说明不是很清楚

你说:

所有元素之间的差值在-2到2之间(>=-2&&<2)

而且:

例如,[1,2,3]为真,但[1,3,4]为假

[1,2,3]的情况如何

假设你的意思是
-2 Bool

allfunc theList=all(\x->(x>=-2)和&(x嗯,问题说明不是很清楚

你说:

所有元素之间的差值在-2到2之间(>=-2&&<2)

而且:

例如,[1,2,3]为真,但[1,3,4]为假

[1,2,3]的情况如何

假设你的意思是
-2 Bool
allfunc theList=all(\x->(x>=-2)和&(x为什么不简单地

allfunc xs = (maximum xs - minimum xs) <= 2
allfunc xs=(最大xs-最小xs)为什么不干脆

allfunc xs = (maximum xs - minimum xs) <= 2

allfunc xs=(最大xs-最小xs)完成您描述的任务的简单方法是:

allfunc xs = all (<=2) [abs(a-b) | a <- xs, b <- xs ]

allfunc xs=all(完成您描述的任务的简单方法是:

allfunc xs = all (<=2) [abs(a-b) | a <- xs, b <- xs ]

allfunc xs=all(您应该注意,这结合使用了一个延续,并使用了一些您可能编写得更好的折叠。顺序相关吗?[-2,0]的输出是什么?你应该注意,这结合了使用一个延续,以及使用一些你可能会写得更好的折叠。顺序相关吗?[-2,0]的输出是什么?人们可能会简化并做一些类似的事情:
diffs lst=[(x-y)| xOne可能会简化并做一些类似的事情:
diffs lst=[(x-y)| XY您的第一句不正确:
[]
与模式
x:xs
不匹配。您的第一句不正确:
[]
与模式
x:xs
不匹配。