程序是数据库是接口

这是一段 Clojure 代码,主要实现了一个简单的账目管理系统及相关工具:

  • 账目数据处理:通过txs定义了交易数据,包含交易日期、金额和文本描述等信息。date->tagtext->tag用于为交易添加标签,tx->tag函数根据交易日期或文本描述确定交易的标签。txs-with-tags为每个交易添加了标签,total-per-tag计算每个标签的总金额,untagged存储未标记的交易。
  • 工作流程问题:当前的脚本工作流程存在一些不足,如手动修改标签代码繁琐,漂亮打印数据难以控制打印细节,与非技术人员共享工作流程困难等。
  • 替代方案考虑:考虑编写一个 Web 应用并将交易数据存储在数据库中,这样可以方便地在交易中添加标签控制,添加可扩展的总览部分,便于共享。但这需要引入不同的数据模型、语言和 API,需要在数据库和程序之间来回处理数据,版本控制也更复杂。
  • 创建的工具:创建了一个类似笔记本的工具,其中的单元格可以编写代码并显示结果,函数的输出也可以修改其他单元格的值。还可以为值附加元数据来控制其渲染方式。preimp仓库中的服务器可以将笔记本的历史记录保存到磁盘,并在不同客户端之间同步更改,以实现协作编辑。还提供了将preimp笔记本导出为有效的 ClojureScript 程序的功能,可以在repl中运行。
  • 工具的扩展需求:需要丰富的数据模型,能够通过文本进行往返转换,能够附加元数据来控制渲染而不影响repl中的执行,需要解决声明顺序、可变环境、副作用等问题,还需要扩展更多的用户界面选项,如选择、下拉列表、理解类型/解构、将值渲染为可复制的文本、撤销/版本控制等功能。

总的来说,这段代码展示了如何使用 Clojure 实现一个简单的账目管理系统,并探讨了不同方案的优缺点和扩展需求。

阅读 9
0 条评论