我在一个项目中使用酸状态,我非常喜欢它.我喜欢在没有太多样板的情况下为简单的Haskell数据类型添加持久性是多么容易.
根据我的理解,酸状态记录事件的日志,而不是在每次更新时写出整个新状态.我正在寻找的是一种让我从应用程序中查看状态最近更改日志的方法,作为(只读)列表.(有点像git log,虽然我不需要分支或能够回到较旧的提交.)
当然,我可以写入我自己的单独日志文件,其中包含所有状态更改的详细信息,甚至可以将我的数据建模为差异列表,但我更喜欢自动的东西,并允许我尽可能使用纯数据类型.
是否存在类似于酸状态的库,或者可能用于酸性状态的某些内部功能?
我的消息存档很好,消息很容易在数据库中保存但由于某种原因我想获取xep-0136的首选项集.
正如在xep-0136扩展中所述,我们需要发送这个IQ
<iq type="get" id="pref1">
<pref xmlns="urn:xmpp:archive">
</pref>
</iq>
Run Code Online (Sandbox Code Playgroud)
但在发送这个时,我收到错误,因为服务不可用,但我不知道这怎么可能?因为邮件存档工作正常.我需要实现一些其他模块.
错误iq
<iq
xmlns="jabber:client"
from="ramu_gmail.com@##.##.##.##"
to="ramu_gmail.com@##.##.##.##/42117879931439208568472324"
type="error"
id="pref1">
<pref xmlns="urn:xmpp:archive"></pref>
<error code="503" type="cancel">
<service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"></service-unavailable>
</error>
</iq>
Run Code Online (Sandbox Code Playgroud)
伙计们请建议.谢谢.
List是Haskell的默认数据类型,为什么我们仍然需要Data.Sequence?Data.Seq是否意味着可以随机访问的C样式数组?
如果是,我认为这意味着Data.Sequence存储有固定的内存缓冲区,因此,急切的评估类型.只是一个猜测,你会帮忙纠正吗?谢谢.
haskell ×2
acid-state ×1
eager ×1
ejabberd ×1
evaluation ×1
list ×1
persistence ×1
sequence ×1
xmpp ×1