Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.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_Lazy Evaluation - Fatal编程技术网

List 我如何懒散地评估Haskell中的列表差异?

List 我如何懒散地评估Haskell中的列表差异?,list,haskell,lazy-evaluation,List,Haskell,Lazy Evaluation,有没有办法计算无限列表之间的列表差异?例如,([1..]\[2*n | n如果列表已排序,则可以使用该包 如果列表已排序,则可以使用包 谢谢!虽然我不能保证列表是被排序的。如果没有排序,这会不会根本不起作用?或者解决方法是对列表进行排序,然后使用它?这就引出了一个问题:排序会很慢吗?@BrainFRZ,不会,因为你以后总能在列表中找到一个较小的元素。(直觉是,如果不遍历列表,就无法真正了解列表的任何内容。我认为这种直觉可以用类似赖斯定理的东西形式化)@BrainFRZ是的,如果列表未排序,此库将

有没有办法计算无限列表之间的列表差异?例如,
([1..]\[2*n | n如果列表已排序,则可以使用该包


如果列表已排序,则可以使用包


谢谢!虽然我不能保证列表是被排序的。如果没有排序,这会不会根本不起作用?或者解决方法是对列表进行排序,然后使用它?这就引出了一个问题:排序会很慢吗?@BrainFRZ,不会,因为你以后总能在列表中找到一个较小的元素。(直觉是,如果不遍历列表,就无法真正了解列表的任何内容。我认为这种直觉可以用类似赖斯定理的东西形式化)@BrainFRZ是的,如果列表未排序,此库将根本无法正常工作。排序不能是懒惰的。如果您不知道列表已排序,那么您将必须知道并利用列表中的其他特殊结构才能执行您的要求。请告诉我这是一个单独的问题,还是与主题无关。但是,如果我不知道用函数来寻找它们的顶点,我能用它和单调性来做这件事吗?然后我只需要对顶点进行排序,对吗?@BrainFRZ Hm。我不确定我是否理解。我怀疑你确实应该提出一个新问题,如果只是给自己一些额外的字符来解释你的目标,你心目中的方法,还有你正在使用的术语。谢谢!虽然我不能保证列表是排序的。如果没有排序,这根本不起作用吗?或者解决方法是对列表进行排序,然后使用它吗?这就引出了一个问题:排序可以是懒惰的吗?@BrainFRZ,不,因为你以后总能在列表中找到一个较小的元素。(直觉是,如果不遍历列表,就无法真正了解列表的任何内容。我认为这种直觉可以用类似赖斯定理的东西形式化)@BrainFRZ是的,如果列表未排序,此库将根本无法正常工作。排序不能是懒惰的。如果您不知道列表已排序,那么您将必须知道并利用列表中的其他特殊结构才能执行您的要求。请告诉我这是一个单独的问题,还是与主题无关。但是,如果我不知道用函数来寻找它们的顶点,我能用它和单调性来做这件事吗?然后我只需要对顶点进行排序,对吗?@BrainFRZ Hm。我不确定我是否理解。我怀疑你确实应该提出一个新问题,如果只是给自己一些额外的字符来解释你的目标,你心目中的方法,还有你正在使用的术语。你将如何编写一个算法来手工实现这一点?你需要查看两个列表多远才能得出结论,“好的,这个值出现在第一个列表中,但不会出现在第二个列表中”?哦,当然。如果它是未排序的,就没有办法知道它没有结束。我想有时候我太依赖哈斯克尔的魔法而没有思考:)@BrainFRZ我认为“如果它是未排序的,那么就没有办法知道它没有结束”太强了。当然,
(\\)
的假设(也就是说,没有)不要让它知道某个特定元素以后是否会出现。但我打赌我可以编造其他未排序的特殊列表属性,这将为您选择何时停止查找特定元素提供一种方法。您将如何手工编写算法来完成此操作?您需要在这两个列表中走多远看得出结论,“好吧,这个值出现在第一个列表中,但从来没有出现在第二个列表中”?哦,当然。如果它没有排序,就没有办法知道它没有结束。我想有时候我太依赖Haskell的魔法了,而没有思考:)@BrainFRZ我想“如果它没有排序,就没有办法知道它没有结束”太强了。当然,
(\\)
所做的假设(即,无)并不能让它知道某个特定元素以后是否会出现。但我打赌我可以编造其他未排序的特殊列表属性,这将为您选择何时停止查找某个特定元素提供一种方法。
Data.List.Ordered> take 5 ([1..] `minus` [2,4..])
[1,3,5,7,9]