conduit

    3热度

    3回答

    我是一名Haskell初学者,试图围绕导管库包裹我的头。 我已经试过这样的事情,但它不会编译: import Data.Conduit import Data.Conduit.Binary as CB import Data.ByteString.Char8 as BS numberLine :: Monad m => Conduit BS.ByteString m BS.ByteStri

    1热度

    1回答

    我试图从http://www.yesodweb.com/book/conduits了解代码。一些修补程序(如更换Resource与MonadResource)之后,它仍然不会编译: sumSink :: MonadResource m => Sink Int m Int sumSink = CL.fold (+) 0 sum' :: [Int] -> Int sum' input = ru

    4热度

    1回答

    我决定尝试并获得对管道的处理,并且我认为我做得很好,但是当我尝试使用导管4制作这个简单源代码时,我得到一个无限循环,不明白为什么。这是简化的,原始版本将创建一个临时文件名并通过yield返回。这只是返回一个()。 import Control.Monad.IO.Class import Data.Conduit import Data.Conduit.List as CL tempfil

    1热度

    1回答

    我想了解如何使用warp来编写web服务,该warp具有我想从所有请求中访问的长期资源(即,我希望资源存在于服务器的生命周期中,而不是每个请求)。我假设这是ResourceT的用途,但我不确定我是如何做到这一点的。 我特别使用的是我想公开一个文件句柄,我目前已经包含在状态monad中。如果在使用warp和ResourceT时没有意义,我很乐意改变这种方法。这段代码的一个早期版本上可以看到代码审查:

    3热度

    1回答

    我使用network-conduit下面的代码有问题,里面的新来源: import Data.Conduit.List as CL import Data.Conduit.Text as CT import qualified Data.ByteString.Char8 as S8 import qualified Data.Text as TT mySource :: Resource

    4热度

    1回答

    我正在努力通过xml-conduit将http-conduit的响应转换为XML文档。 doPost函数获取XML文档并将其发布到服务器。服务器使用XML文档进行响应。 doPost queryDoc = do runResourceT $ do manager <- liftIO $ newManager def req <- liftIO $ parseUr

    33热度

    2回答

    我想听听有人比我更深入的了解Enumerators,Conduits和Pipes之间的根本区别以及主要优点和缺点。一些discussion's alreadyongoing但它会很高兴有一个高层次的概述。

    3热度

    1回答

    我想写一个真正微不足道的“回声”web应用程序使用wai;我希望它做的就是回复发送给它的数据(我真的不关心这个方法,但是我使用了curl,curl使用了POST,所以这就是我要做的)。我平凡的Web服务器是这样的: import Network.Wai import Network.HTTP.Types (status200) import Network.Wai.Handler.Warp (

    9热度

    1回答

    我有一个简单的任务 - 从文件中读出一堆行,并对其中的每一行执行一些操作。除了第一个 - 这是一些标题被忽略。 所以我想我会尝试导管。 printFile src = runResourceT $ CB.sourceFile src =$= CT.decode CT.utf8 =$= CT.lines =$= CL.mapM_ putStrLn 很酷。 所以现在我只是要删除的第一线关

    4热度

    1回答

    我使用XML-conduit构建了一个GPX分析器,并且存在用于标识元素和跳过不需要的标记的过于冗长和易碎代码的问题。 识别元素(一个小麻烦) 我明确地只比较nameLocalName其实忽略了命名空间。我猜正确的方法是将正确的命名空间硬编码到程序中,并且有一个帮助器构造我的元素名称以便在tag*函数中进行比较?这有点烦人,因为我必须支持至少两个不同的名称空间(GPX 1.1和1.0),这些名称空