conduit

    12热度

    1回答

    入门conduit,我注意到,在Data.Conduit.Util:从旧版本的管道 实用功能。这些应该被视为弃用,因为现在有更简单的方法来处理它们的用例。该模块仅用于向后兼容。 我特别关心的是zip :: Monad m => Source m a -> Source m b -> Source m (a, b)。这对我来说似乎非常有用 - 我可以独立工作,生产a和生产b的方式,然后只需要zip将

    19热度

    2回答

    在我看来,有两个想法之间有很强的联系。我的猜测是,如果有一种方法可以用Iteratees表达任意图,那么FRP可以用迭代器来实现。但afaik他们只支持连锁结构。 有人能提供一些线索对此有何看法?

    3热度

    2回答

    要了解conduit库的基础知识,我用network-conduit做一个简单的回显服务器: import Control.Monad.IO.Class import qualified Data.ByteString.Char8 as BS import Data.Conduit import Data.Conduit.Network -- A conduit that print t

    0热度

    1回答

    我正在尝试调试在管道工具栏上运行的JavaScript编写的脚本。现在我使用的简单 window.alert("function x is working"); 但这是许多警报的情况非常令人不安的剧本逐渐变大。我宁愿写日志和调试消息到萤火虫或Chrome浏览器的控制台,使用: console.log("function x is working"); ,因为这是更合理的,但是这个代码有当这

    3热度

    1回答

    我有这样的管道表达它的工作原理: main1 = runResourceT $ CB.sourceHandle stdin $$ CB.lines =$ Cl.concatMap matches =$ Cl.mapMaybe readDouble =$ Cl.map fst =$ Cl.map bucket =$

    8热度

    2回答

    我在Haskell中编写了一个守护进程,每5分钟从网页中抓取信息。 该守护程序原本运行良好约50分钟,但随后意外死亡与out of memory (requested 1048576 bytes)。每次我跑它都会在相同的时间后死亡。将它设置为仅睡30秒,而不是在8分钟后死亡。 我意识到网页的内存代码效率非常低(从睡眠时的30M到睡眠时的大约30M,而解析9M的html时),所以我重写了它,现在它在

    5热度

    1回答

    我正在试验导管包。其还发现了网络的管道包,我试图让该发送文件的内容到一个套接字简单的TCP客户端: import Data.Conduit import Data.Conduit.Binary import Data.Conduit.Network import Data.ByteString.Char8 (pack) sendFile fileName appData = runRes

    3热度

    2回答

    我在想Haskell中的列表,并且我认为在其他语言中,一个不使用列表的一切。当然,如果你以后需要这些值,你可能想要存储一个列表,但是如果它只是一次性的,比如从[1..n]开始迭代,为什么使用一个列表,其中真正需要的变量是一个增加的变量? 我还阅读了关于“列表融合”的内容,并指出尽管Haskell编译器试图实现这种优化以消除中间列表,但它们往往不成功,导致垃圾收集器不得不清理仅被使用一次的列表。 另

    10热度

    2回答

    我想了解管道概念的不同实现之间的差异。 导管和管道之间的区别之一是它们如何将管道熔合在一起。 管道有 (>+>) :: Monad m => Pipe l a b r0 m r1 -> Pipe Void b c r1 m r2 -> Pipe l a c r0 m r2 而管有 (>->) :: (Monad m, Proxy p) => (b' -> p a' a

    13热度

    2回答

    我想了解管道和管道之间的差异。不像管,导管有剩饭的概念。什么是剩菜有用?我希望看到一些例子,其中剩菜是必不可少的。 而且由于管道没有剩菜的概念,有没有什么方法可以实现与他们类似的行为?