我正在写一个CL库来读取名为"xlmanip"的MS Excel(tm)电子表格(尚未准备好黄金时间 - 只读"xlsx"电子表格,适用于"我想在单元格上操作"的80%用例内容"......但我离题了.)
阅读"xlsx"(XML格式的ZIP存档)时,让我担心的一件事是,当前的ZIP处理库Common Lisp ZIP将压缩内容解压缩为(vector (unsigned-byte 8)).对于大型电子表格,这会给最终用户带来问题.
我想到的一个替代方案是延迟加载 - let-over-lambda一个闭包,可以在需要时有效地要求加载工作表.然而,这只是推迟了不可避免的事情.
是否有任何ZIP文件CL库将灰色流返回到ZIP组件的内容而不是(可能很大)(vector (unsigned-byte 8))?
编辑:澄清
我正在寻找一个ZIP组件函数,它返回一个流,而不是一个流.采用流的函数将ZIP组件的内容直接写入与流关联的文件.我宁愿xlmanip直接从流中读取,就像ZIP组件(隐式地,虚拟地)是一个文件一样.
是否有generics-sop模仿SYB everywhere/ mkT行为的例子?
我试图做的,但没有看到如何成功地做,是用等效的结构替换everywhere (mkT fixupSymbol)in ,即用于递归到产品并替换它.mainGenerics.SOPGenerics.SOP(I (AbsAddr value))(I (SymAddr label))
我可以传递符号表gformatOperands,污染formatOperands签名.这似乎不是最理想的.
没有fixupSymbol,输出看起来像:
LD B, 0x0000
LD C, 0x1234
CALL 0x4567
Run Code Online (Sandbox Code Playgroud)
解析符号标签的地址:
gensop % stack ghci
Using main module: 1. Package `gensop' component exe:gensop with main-is file: <...>/Main.hs
gensop-0.1: configure (exe)
Configuring gensop-0.1...
gensop-0.1: initial-build-steps (exe)
Configuring GHCi with the following packages: gensop
GHCi, version 8.6.3: http://www.haskell.org/ghc/ :? for help
[1 of 1] …Run Code Online (Sandbox Code Playgroud) 我意识到这是一个广泛的问题,但鉴于"我们现在所知道的"与"我们当时所知道的"以及格林斯普的第十条规则,是否有努力"现代化"(进化)Common Lisp或者是否考虑过这一点?是否有工作组考虑这个问题?是否仍然对Common Lisp的ANSI标准(渐进式改进)感兴趣?