haskell - 为什么 MVector 不可折叠?
问题描述
我可以理解为什么MVector
类型(来自vector
包)不实例化Foldable
类型类吗?我想人们经常需要迭代向量。我可以freeze
它Data.Vector
然后迭代。String
但我讨厌改变这些东西,好像我们对, Text
, Bytestring
s 等做得不够。
就我而言,我想打印每个元素。
解决方案
从可变向量中读取需要在关联的 monad 中执行效果 -IO
或ST s
. 但Foldable
要求你能够给出一个纯粹的答案;如果有实例,我们至少必须能够实现
foldr :: (a -> b -> b) -> b -> MVector s a -> b
即使来电者选择了一个b
没有提及IO
或ST
的。哎呀!
推荐阅读
- javascript - 这种循环行为在 Swiper 中是否可行?
- node.js - 查找文档及其引用的文档
- azure - 如何在 Azure 应用服务上安装二进制文件?
- c - SO_RCVTIMEO 超时值在 recv_from API 中不生效
- reactjs - 400 Bad Request 错误与烧瓶服务器反应客户端的 socketio
- php - 签名表现形式 - 使用签名图像添加日期和时间
- c# - DoWork(BackgroundWorker)中如何将结果发送到主线程
- json - 有什么方法可以将变形的 json 加载到 python 对象中?
- git - 管道时 Git diff stat 更改
- magento2 - Magneto 2 中的 sequence_product 表中的列 sequence_value 指代