package lsp

  1. Overview
  2. Docs
LSP protocol implementation in OCaml

Install

Dune Dependency

Authors

Maintainers

Sources

jsonrpc-1.6.0.tbz
sha256=35e8c7341f8eb1fa39fb0f0e0701a7ed90b9a0bb89ccf84b7ed997cd258cbec3
sha512=c96a7a3ca845ec193e9edc4a74804a22d6e37efc852b54575011879bd2105e0df021408632219f542ca3ad85b36b5c8b72f2b417204d154d5f0dd0839535afa5

doc/src/lsp.stdune/type_eq.ml.html

Source file type_eq.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
type ('a, 'b) t = T : ('a, 'a) t

let cast (type a b) (T : (a, b) t) (x : a) : b = x

type ('a, 'b) eq = ('a, 'b) t

module Id = struct
  type _ w = ..

  module type T = sig
    type a

    type _ w += W : a w
  end

  type 'a t = (module T with type a = 'a)

  let hash (type a) ((module T) : a t) = Poly.hash T.W

  let equal (type a b) ((module M1) : a t) ((module M2) : b t) =
    match M1.W with
    | M2.W -> true
    | _ -> false

  let create (type a) () : a t =
    (module struct
      type nonrec a = a

      type _ w += W : a w
    end)

  let same (type a b) ((module M1) : a t) ((module M2) : b t) =
    match M1.W with
    | M2.W -> Some (T : (a, b) eq)
    | _ -> None
end
OCaml

Innovation. Community. Security.