使用 haskell Pipes-bytestring 按行迭代文件

2024-04-12

我正在使用管道库,需要将 ByteString 流转换为行流(即String),使用 ASCII 编码。我知道还有其他库(Pipes.Text 和 Pipes.Prelude)也许可以让我更轻松地从文本文件中生成行,但是由于其他一些代码,我需要能够将行获取为String来自制作人ByteString.

更正式地说,我需要转换Producer ByteString IO () to a Producer String IO (),产生线条。

我确信这对于经验丰富的管道程序员来说一定是一句简单的话,但到目前为止我还没有成功破解所有的FreeT and Lens- Pipes-ByteString 中的诡计。

任何帮助深表感谢!

Stephan


如果您需要该类型签名,那么我建议这样做:

import Control.Foldl (mconcat, purely)
import Data.ByteString (ByteString)
import Data.Text (unpack)
import Lens.Family (view)
import Pipes (Producer, (>->))
import Pipes.Group (folds)
import qualified Pipes.Prelude as Pipes
import Pipes.Text (lines)
import Pipes.Text.Encoding (utf8)
import Prelude hiding (lines)

getLines
    :: Producer ByteString IO r -> Producer String IO (Producer ByteString IO r)
getLines p = purely folds mconcat (view (utf8 . lines) p) >-> Pipes.map unpack

这是有效的,因为类型purely folds mconcat is:

purely folds mconcat
    :: (Monad m, Monoid t) => FreeT (Producer t m) r -> Producer t m r

... 在哪里t在这种情况下将是Text:

purely folds mconcat
    :: Monad m => FreeT (Producer Text m) r -> Producer Text m r

任何时候你想减少每一个Producera 的子群FreeT-您可能想要使用的分隔流purely folds。然后只需选择正确的即可Fold减少子组。在这种情况下,您只想连接所有Text组内的块,所以你传入mconcat。我通常不建议这样做,因为它会在极长的行上中断,但您指定需要这种行为。

这是冗长的原因是因为pipes生态系统促进Text over String并试图鼓励处理任意长的队伍。如果您不受其他代码的限制,那么更惯用的方法就是:

view (utf8 . lines)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 haskell Pipes-bytestring 按行迭代文件 的相关文章

  • 如何删除核心数据持久存储

    我需要删除我的持久存储 逐个对象执行此操作并不实际 因为我有超过 100 000 个对象 我试过这个 IBAction resetDatabase id sender NSPersistentStore store persistentSt
  • 如何在C程序执行过程中显示自定义提示符?

    我正在尝试在 Linux 中使用 C 程序模拟终端 并且需要我的程序在程序执行时显示自定义提示 有没有办法使用我的 C 程序显示它 我总是可以尝试手动打印 My prompt 每一行 但我正在寻找更好的方法 另外 除了基本库之外 我无法使用
  • 那么为什么 i = ++i + 1 在 C++11 中定义良好呢?

    我见过other https stackoverflow com q 1860461 150634相似的问题 https stackoverflow com q 4336860 150634并阅读defect http www open s
  • JSON.parse 返回 [Object Object] 而不是值

    我的 API 返回 JSON 值 例如 UserName xxx Rolename yyy I need Username and RoleNamevalue seperatly 我尝试了 JSON parse 但它返回 Object Ob
  • 如何编辑表格数据 (ASP MVC)

    我需要能够在浏览器中编辑数据表 我在 MVCContrib 中看到有一个 HTML 帮助器来渲染表格 有用 但是如果我希望用户能够编辑该表怎么办 据我所知 这并没有帮助 解决这个问题的最佳方法是什么 传统的 FORM 里面有一个 TABLE
  • Azure IoT Hub设备消息结构和路由查询

    我使用了来自的 python 示例https learn microsoft com de de azure iot hub quickstart send telemetry python https learn microsoft co
  • 使用“VisualStudio.DTE.10.0”创建解决方案并添加项目

    我正在尝试创建 VS2010 解决方案并从独立应用程序 而不是加载项 添加项目 我可以创建 VS2010 的实例 但我无法确定如何正确创建项目 我只能找到如何使用 EnvDTE80 对象创建项目的示例 这稍后会导致异常 因为该项目文件的格式
  • Android Room 通用 DAO

    美好的一天 Stack 我正在开发一个使用 Android Room 1 0 0 Alpha 5 的 Android 项目 我面临的主要问题是每次我需要从 Room 调用其中一个 DAO 时 我都需要执行类似的操作这 活动 java App
  • 基本树概念:定义祖先

    祖先的定义是什么 更具体地说 E 会是 H 的祖先吗 或者更简单地说 F C A 是 H 的祖先 也许甚至是G 我只是想澄清这个简单的概念 E 不是 H 的祖先 它是uncle因为它是一个siblingF 的parent of H F C
  • R twitterR 包,尽管有限制但仍能获得关注者

    我一直在玩RtwitteR包 但还没有弄清楚如何实现一个系统来收集超过每小时最大数量的数据 Twitter 用户的关注者数量 我知道计划应该是收集最大数量 等待 X 时间 然后重复直到收集完所有内容 但是我该如何使用twitteR包裹 th
  • 使用 FFmpeg 在特定时间将一个视频叠加在另一个视频上

    我正在尝试将一个视频与另一个视频叠加 我按照OP发布的原始命令进行操作here https stackoverflow com questions 35269387 ffmpeg overlay one video onto another
  • MySQL 语法和“OR”性能

    这个 MySQL 查询工作得很好 SELECT o id FROM descriptions programs d titles programs t programs o WHERE d object id o id AND MATCH

随机推荐

  • 检测触摸屏(ipad、iphone 等)的最佳方法?

    如果在 ipad 或 iphone 等触摸屏设备上查看页面 我需要向页面加载一些额外的 CSS 最简单的方法是什么 谢谢 对于 iPad 您可以尝试 if window Touch alert touch my ipad iphone ip
  • 错误消息:JSFiddle 中不允许 document.write

    当我尝试在 JSFiddle 上运行我的 JavaScript 文件之一时 收到以下错误消息 document write 在 JSFiddle 环境中是不允许的 并且可能会破坏你的小提琴 我该如何解决这个问题 Note 当我使用外部资源时
  • 尝试部署到 Google Cloud Run 时出现权限错误

    我在尝试将映像部署到云运行时遇到权限错误 gcloud beta run deploy endpoints proxy image gcr io endpoints release endpoints runtime serverless
  • Google Drive HTTP 403“访问未配置”错误

    我正在尝试将 Salesforce 的 DrEdit 示例应用程序安装到 GAE 上 应用程序运行 但保存或打开文件会导致 HTTP 403 访问未配置错误 我还尝试将 API Access gt Client ID 的值用于 Web 应用
  • android 编辑文本背景

    我想设置为我的 EditText背景 http img9 imageshack us f backgroundtext png 嗯 我也不知道该怎么解释 当有大量文本时垂直滚动启用 当用户滚动文本时 我需要 滚动 背景 现在我知道 当用户滚
  • 如何从 Firebase 中的 Android 应用创建空表? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在 Android 平台上开发实时应用程序 我想在 Firebase 数据库中添加一个具有特定名称且没有信息的表 这可能吗 我该怎
  • 无法加载 ResolveComReference 任务

    Win7 VS2017 ASP Net core应用程序 目标框架是4 6 当我尝试使用 CLI 构建项目时 在调用 dotnet 命令之前需要它 会发生错误 C Microsoft Common CurrentVersion target
  • NanoScroller 不触发自身

    下面的代码应该能够触发pane and slider适当地displaycss 属性根据纳米滚动文档 http jamesflorentino github com nanoScrollerJS 但是 滚动条不显示slider直到我在浏览器
  • 连接两个php变量

    我从这样的表单中获取文本和颜色 代码在管理 php
  • Android Content Provider 的实例化顺序

    对于我的应用程序 我需要先启动一个内容提供程序 据我所知 该顺序与 AndroidManifest 中的顺序无关 并且不是按字母顺序排列的 如何控制 Android 调用 Content Provider 的 onCreate 方法的顺序
  • 如何使用 Open XML SDK 将文本插入内容控件

    我正在尝试开发一种解决方案 该解决方案从 ASP Net 网页获取输入并将输入值嵌入到 MS Word 文档中的相应内容控件中 MS Word 文档还具有静态数据 以及一些要嵌入到页眉和页脚字段中的动态数据 这里的想法是解决方案应该基于 W
  • Bamboo 能否将 HTTP 400 Bad 请求解释为失败

    我们正在使用 CURL 向我们的应用程序之一发出外部 API 请求 如果该请求返回的值不是 200 我们希望ebamboo 的 构建 失败 目前 它正在过去 此外 响应中的消息中包含 错误 一词 我希望 Bamboo 能够解析脚本结果并根据
  • 为什么添加文本会改变 div 的边距[重复]

    这个问题在这里已经有答案了 我不明白为什么添加文本 do a div 似乎会改变浏览器解析 div 的方式 看起来边距顶部已更改 但事实并非如此 HTML div div class nav left left div div class
  • Mongo - 更新嵌套数组中的元素[重复]

    这个问题在这里已经有答案了 我有一个看起来像的文档 id 123xyz profile emails address email protected cdn cgi l email protection primary true addre
  • 在 HTML 中呈现字符串并保留空格和换行符

    我有一个带有详细信息页面的 MVC3 应用程序 作为其中的一部分 我有一个包含空格和换行符的描述 从数据库检索 当它被渲染时 新行和空格将被 html 忽略 我想对这些空格和新行进行编码 以便它们不会被忽略 你是怎样做的 我尝试了 HTML
  • NodeJS - 大量请求关闭后“套接字挂起”

    我已经被这个 套接字挂断 错误困扰了几天 我希望有人可以帮助我 我目前设置了两个 Node 程序 Node 中的 HTTP 服务器对每个节点都使用相同的数据进行响应 要求 HTTP 服务器响应来自 HTTP 服务器 1 的数据 对于每个请求
  • 为什么当某些内容已加载时 jQuery 会丢失“事件”(点击)?

    当我在侧边栏上选择页面时 我尝试使用下一个脚本加载内容 该脚本运行没有问题 if Modernizr history var newHash wrapperTag main content contentTag main content i
  • JPA/Hibernate:我可以有一个没有注释的父级和一个带有注释的子级吗?

    我需要创建一个可以独立使用或在更大的应用程序中使用的组件 独立使用时 它不需要数据库 也不需要任何数据库 ORM 相关的依赖项 当用作较大应用程序的一部分时 某些类确实会通过 JPA Hibernate 持久保存到数据库中 我认为组件中的域
  • 是否可以在Windows CE 5.0浏览器中查看部署在IIS 6.0上的silverlight或asp.net 3.5网站?

    我计划在 silverlight 中构建一个网站并将其部署在 IIS 6 0 上 我不知道 是否可以在Windows CE 5 0浏览器中浏览该应用程序 如果不可能的话 查看 silverlight 应用程序比查看 asp net 3 5
  • 使用 haskell Pipes-bytestring 按行迭代文件

    我正在使用管道库 需要将 ByteString 流转换为行流 即String 使用 ASCII 编码 我知道还有其他库 Pipes Text 和 Pipes Prelude 也许可以让我更轻松地从文本文件中生成行 但是由于其他一些代码 我需