在试图使用Haskell定义从连接通道读取的无限循环时,我遇到了一个想法,即使用单子的Kleisli组合折叠一个无限的部分应用函数列表。这个想法似乎很合理,也很简单,但我遇到了一个奇怪的场景,显然无限列表正在被评估,而不是等待输入。
loop :: Int -> IO Int
loop s = (foldr (<=<) return (repeat process)) s
process :: Int -> IO Int
process i = do
putStrLn $ show i
x <- getLine
return $ i + 1
main = loop 0
你不能从一个无限的列表的末尾开始访问它--没有尽头。
您编写构建
action0 <=< (action1 <=< (action2 ....))
它具有正确的关联性,但是x<=
x
之前运行
y
。
cons x xs = x : xs
snoc x xs = xs ++ [x]
foldr cons [] [1..] = [1..]
foldr snoc [] [1..] = _|_
在一元情况下,事情更复杂,但一般原则的精神是相似的。使用
foldr(<=<)return(repeat action)
类似于
loop x = do
x' <- loop x
action x'
相反,
foldr(>=>)return(repeat action)
类似于
loop x = do
x' <- action x
loop x'
我试图在Haskell中编写一个函数,它可以做以下操作:输入一个整数列表,对于这些整数,使用map,有一个函数应用于它们,返回一个无限的整数列表。然后,我想使用union将foldr应用于列表,这样结果将是列表中这些列表的union。 现在的问题是,当我以10‘函数’[1,2]为例进行计算时,它会首先计算1的无限列表,因为它是一个无限列表,它永远不会对2进行计算。因此,它只返回输入列表中第一个元素
我知道对无限列表进行排序是不可能的,但我正试图为n个数的倍数的无限递增列表写一个定义。 我已经有这个功能了 它返回n的无限倍数列表。但现在我想构建一个函数,给定一个返回列表中所有数字的倍数的无限递增列表。所以函数
在你想隐藏部分内容的显示时,可以使用折叠列表。 实例 <ul data-accordion> <li class="accordion-navigation"> <a href="#demo">Simple Collapsible</a> <div id="demo"> 本站 -- 学的不仅是技术,更是梦想!!! </div> </li> </ul> <
本文向大家介绍js实现列表向上无限滚动,包括了js实现列表向上无限滚动的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js实现列表向上无限滚动的具体代码,供大家参考,具体内容如下 先来一张效果图 html js css(样式自己调) 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍python列表生成式与列表生成器的使用,包括了python列表生成式与列表生成器的使用的使用技巧和注意事项,需要的朋友参考一下 列表生成式:会将所有的结果全部计算出来,把结果存放到内存中,如果列表中数据比较多,就会占用过多的内存空间,可能会导致MemoryError内存错误或者导致程序在运行时出现卡顿的情况 列表生成器:会创建一个列表生成器对象,不会一次性的把所有结果都计算出来,如
我正在学习主干,现在正在考虑如何应用无限卷轴,并在每次卷轴位于页面底部时从我的收藏中提取/加载20个项目。我一直在寻找不同的LIB之类的东西,但没有真正接近。有谁能解释/展示这是如何最好地完成的? 我现在已经添加了infiniscroll.js插件并试图让它工作。但是在滚动中它不会加载新项目。我应该在appendRender上做什么?怎么做?