【发布时间】:2013-06-26 17:20:40
【问题描述】:
我正在玩 Edward Kmett 的机器模块,我在这里和那里有点困惑。我认为提出问题的最佳方式是提供一个玩具用例。如下所述。
一号机和二号机位于 Wye 的两个尖头上。
机器将一个整数列表作为参数,并将其推送到下游。 机器二将一个字符列表作为参数,并将其推送到下游。
机器 3 保持内部状态,从 mempty 开始,然后是 mappends 在某些条件下它从 Wye 基地的任一机器接收到的元素(所以不是两者)。然后机器 3 获取当前状态并将其推送到下游。
机器四将它接收到的元素打印到控制台。
到目前为止,我得到了这个:
y1 :: PlanT k [Int] m ()
y1 = yield
y2 :: PlanT k [Char] m ()
y2 = yield
但我不确定如何组合 y1 和 y2;或滚动隐藏状态的任意进程,而不是使用 Process.hs 导出的库存组合器之一。
根据建议,机器包的链接: http://hackage.haskell.org/package/machines
还有一个 pdf 对其功能进行了非常高级的描述:https://dl.dropboxusercontent.com/u/4588997/Machines.pdf
【问题讨论】:
-
为什么这个问题被否决了?
-
@jerry @closevoters
machines是新的。 Edward Kmett 值得一看,值得你努力去了解他所做的新事物。如果这对您来说很明显,请回答。如果你不清楚,可能是因为machines的我们现在很多人都不清楚。如果你理解pipes和conduit,那么说这不是很好的措辞是可以的,但是如果你根本不理解它,那可能是因为它是最前沿的,你应该先去理解管道之前你来决定这是否可以更好地表达。 -
@AndrewC 自the version I was commenting on 以来,该问题已被多次编辑。该版本实际上没有包含问题(或关于 chibro2 试图做什么的陈述)。
-
@RyanWH 据我了解,Wye 是“机器”,可以以不确定的方式从两个输入流中读取,因此机器三可以从字符列表或整数列表中读取,并构建一个新的列表。但是新列表只包含整数或字符,而不是两者。问题的关键在于如何组合不同的机器来制造更大的机器,这里发生的事情是偶然的。很抱歉,如果这也表达得不好。
-
@AndrewC 你说得对,我不明白
machine或plan的特殊含义,但我仍然坚持我(最初)没有看到问题的评论.大多数用户不认为“为我编写代码”是 Stack Overflow 上的一个有效问题(不过,就个人而言,如果我觉得这个话题足够有趣,有时我还是会回答)。值得称赞的是 chibro2,他或她已经改进了这个问题,以至于我觉得它适合该网站(尽管我对 Haskell 或machines概念的熟练程度还不够,无法尝试一下)。跨度>
标签: haskell transducer-machines