File: open.ml

package info (click to toggle)
ocaml 5.4.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 44,372 kB
  • sloc: ml: 370,196; ansic: 52,820; sh: 27,396; asm: 5,462; makefile: 3,679; python: 974; awk: 278; javascript: 273; perl: 59; fortran: 21; cs: 9
file content (37 lines) | stat: -rw-r--r-- 663 bytes parent folder | download | duplicates (3)
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
37
(* TEST
 expect;
*)

module A = struct
  type r = int
  type s = string
  type t = unit
end;;

(* parens *)
type x = A.(r * s * t);;
[%%expect{|
module A : sig type r = int type s = string type t = unit end
type x = A.r * A.s * A.t
|}];;

(* variants *)
type a = A.[ `X of r | `Y of s | `Z of t ];;
[%%expect{|
type a = [ `X of A.r | `Y of A.s | `Z of A.t ]
|}];;

(* first class modules *)
module Comparable = struct
  module type S = sig
    type t
    val compare : t -> t -> int
  end
end

type t = Comparable.(module S)
[%%expect{|
module Comparable :
  sig module type S = sig type t val compare : t -> t -> int end end
type t = (module Comparable.S)
|}];;