ocaml - Irmin Linked_log 可以与 Git.FS 后端一起使用吗?
问题描述
我想使用Linked_log
来自Irmin_containers
https://mirage.github.io/irmin/irmin-containers/Irmin_containers/Linked_log/index.html
提供了两个仿函数来制作Linked_log
支持Mem
或FS
后端。另外一个Make
函子,用于通过传递所有参数来使一个完全可配置的。
我想做一个有Irmin_unix.Git.FS
商店支持的。
我正在努力导航类型并找到正确的值以传递给各种仿函数。
现有的 Linked_log FS 仿函数如下所示:
module FS (C : Stores.Content_addressable) (V : Irmin.Type.S) () =
Make (Irmin_unix.FS.KV) (C) (Time.Machine) (Irmin.Hash.SHA1) (V) ()
我想我只想制作自己的“GitFS”仿函数,它看起来几乎相同,但Irmin_unix.Git.FS.KV
可以替代Irmin_unix.FS.KV
我的第一个问题是在此文件中找到函子Stores.Content_addressable
的 arg 类型: https ://github.com/mirage/irmin/blob/5fd54838c5e8eb9bfa4c02170df30698f78b0201/src/irmin-containers/stores.ml
...但它没有被导出。C
后面有一系列令人费解的包含,但我想我最终找到了可以在我自己的代码中使用的正确签名。我能够定义:
module GitFSLinkedLog_maker (C : Irmin_containers.Cas_maker) (V : Irmin.Type.S) () =
Irmin_containers.Linked_log.Make (Irmin_unix.Git.FS.KV) (C) (Irmin_containers.Time.Machine) (Irmin.Hash.SHA1) (V) ()
...并且类型检查器可以接受。
我现在的问题是如何使用这个函子。
我相信V
应该是这样的Irmin.Content.String
。不过,我迷路了C
。
我想我可以看看他们的测试。例如,他们这样做:
module CAS = struct
include Irmin.Content_addressable.Make (Irmin_mem.Append_only)
let config = Irmin_mem.config ()
end
module L = Irmin_containers.Linked_log.Mem (CAS) (Irmin.Contents.String) ()
这看起来很有希望。Irmin_containers.Linked_log.Mem
相当于我的GitFSLinkedLog_maker
. 所以我需要将这样的结构作为C
参数传递。
但是,如果我将其复制并粘贴到我自己的代码中,则会出现构建错误:
51 | include Irmin.Content_addressable.Make (Irmin_mem.Append_only)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error: The module Irmin.Content_addressable is a functor, it cannot have any components
当它对我来说似乎是非法代码时,这对他们有什么作用?
解决方案
推荐阅读
- flutter - 如何将 DrawerHeader 的高度精确设置为 AppBar 的高度
- powerbi - 如何统计 Tableau 中的重复客户?
- javascript - 按下按钮时,如何将数组作为表格显示到 HTML 页面?
- android - IONIC App 与 FirebaseX 配合得很好,但是当我打开我的应用程序时,如果我有推送通知,应用程序会删除它们
- angular - Angular - 无法根据使用 getter\setter 的属性过滤接收到的数据
- html - 如何在网格中制作粘性导航
- javascript - handle vueJs events in regular javascript outside the component
- reactjs - 在 React 中,将文本作为道具传递给组件是好还是坏?
- node.js - Express 服务器拒绝连接
- typescript - TS 如何在类实例之外拥有上下文类型?