安装具有限制性界限的 opam 包

installing an opam package with a restrictive bound

现在 ocaml-lsp-server 仅限于 ocaml>=4.13 & <4.14

有没有一种简单的方法可以将它强制安装在具有更高版本的“opam switch”上?

它能起作用是不可思议的吗?

> opam list
# Packages matching: installed
# Name              # Installed  # Synopsis
...
ocaml               4.14.0       The OCaml compiler (virtual package)
ocaml-compiler-libs v0.12.4      OCaml compiler libraries repackaged
ocaml-config        2            OCaml Switch Configuration
ocaml-variants      4.14.0+trunk Latest 4.14.0 development
...
> opam switch invariant
["ocaml-variants" {= "4.14.0+trunk"}]

在提出这个问题的时候,OCaml 4.14 还没有发布。

ocaml-lsp 服务器基于 merlin,由于使用内部类型检查器 API,它本身与编译器紧密耦合。此外,merlin 将在 4.14 中不断变化,直到 OCaml 4.14.0 的第一个 beta 版本发布(由于 Merlin 代码库的某些部分上游到编译器)。

最简单(一点也不简单)的方法就是自己将ocaml-lsp-server移植到4.14,在等待正式版的同时维护