mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
prepare for 2.7
remove mdx
This commit is contained in:
parent
2241a25d9e
commit
7cefde490b
24 changed files with 74 additions and 56 deletions
21
CHANGELOG.md
21
CHANGELOG.md
|
|
@ -1,5 +1,26 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2.7
|
||||||
|
|
||||||
|
- deprecate CCKList in favor of the standard Seq
|
||||||
|
- CCIO: add `_gen` suffixes to some functions
|
||||||
|
- ccsexp: provide ability to annotate parsed S-exprs with their position
|
||||||
|
- ccsexp: functorize the parser/printer
|
||||||
|
- ccsexp: support `#;` for commenting a sexp
|
||||||
|
- fix: remove dep from vec to list
|
||||||
|
- add `to_string` to many modules (#270)
|
||||||
|
- add `CCDeque.{remove_*;update_*}`,` CCDeque.{*_opt}`
|
||||||
|
- add `CCDeque.{filter,filter_map}`
|
||||||
|
- add `CCDeque.filter_in_place`
|
||||||
|
- add `CCBool.{to,of}_int`
|
||||||
|
- add `Result.flatten_l` to turn a list of results into a result of list
|
||||||
|
- refactor: remove stdlib's code, simple reimplementation of `Stdlib.Fun`
|
||||||
|
- add `CCArray.Infix`
|
||||||
|
- Document behaviour of `Fun.finally` when finaliser raises
|
||||||
|
|
||||||
|
- travis: test on OCaml 4.09, too.
|
||||||
|
- more docs for IO
|
||||||
|
|
||||||
## 2.6.1
|
## 2.6.1
|
||||||
|
|
||||||
bugfix release:
|
bugfix release:
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# OCaml-containers 📦
|
# OCaml-containers 📦 [](https://travis-ci.org/c-cube/ocaml-containers)
|
||||||
|
|
||||||
A modular, clean and powerful extension of the OCaml standard library.
|
A modular, clean and powerful extension of the OCaml standard library.
|
||||||
|
|
||||||
|
|
@ -12,8 +12,6 @@ map/fold_right/append, and additional functions on lists).
|
||||||
Alternatively, `open Containers` will bring enhanced versions of the standard
|
Alternatively, `open Containers` will bring enhanced versions of the standard
|
||||||
modules into scope.
|
modules into scope.
|
||||||
|
|
||||||
[](https://travis-ci.org/c-cube/ocaml-containers)
|
|
||||||
|
|
||||||
## Quick Summary
|
## Quick Summary
|
||||||
|
|
||||||
Containers is:
|
Containers is:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
opam-version: "2.0"
|
opam-version: "2.0"
|
||||||
name: "containers"
|
name: "containers"
|
||||||
version: "2.6.1"
|
version: "2.7"
|
||||||
author: "Simon Cruanes"
|
author: "Simon Cruanes"
|
||||||
maintainer: "simon.cruanes.2007@m4x.org"
|
maintainer: "simon.cruanes.2007@m4x.org"
|
||||||
synopsis: "A modular, clean and powerful extension of the OCaml standard library"
|
synopsis: "A modular, clean and powerful extension of the OCaml standard library"
|
||||||
|
|
@ -19,7 +19,6 @@ depends: [
|
||||||
"iter" { with-test }
|
"iter" { with-test }
|
||||||
"gen" { with-test }
|
"gen" { with-test }
|
||||||
"uutf" { with-test }
|
"uutf" { with-test }
|
||||||
"mdx" { with-test }
|
|
||||||
"odoc" { with-doc }
|
"odoc" { with-doc }
|
||||||
"ocaml" { >= "4.02.0" }
|
"ocaml" { >= "4.02.0" }
|
||||||
]
|
]
|
||||||
|
|
|
||||||
14
doc/dune
14
doc/dune
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
(alias
|
;(alias
|
||||||
(name runtest)
|
; (name runtest)
|
||||||
(deps containers.md)
|
; (deps containers.md)
|
||||||
(action (progn
|
; (action (progn
|
||||||
(run mdx test %{deps})
|
; (run mdx test %{deps})
|
||||||
(diff? %{deps} %{deps}.corrected))))
|
; (diff? %{deps} %{deps}.corrected))))
|
||||||
|
;
|
||||||
|
|
|
||||||
12
dune
12
dune
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
(alias
|
;(alias
|
||||||
(name runtest)
|
; (name runtest)
|
||||||
(deps README.md)
|
; (deps README.md)
|
||||||
(action (progn
|
; (action (progn
|
||||||
(run mdx test %{deps})
|
; (run mdx test %{deps})
|
||||||
(diff? %{deps} %{deps}.corrected))))
|
; (diff? %{deps} %{deps}.corrected))))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
(modes native)
|
(modes native)
|
||||||
(modules run_qtest)
|
(modules run_qtest)
|
||||||
; disable some warnings in qtests
|
; disable some warnings in qtests
|
||||||
(flags :standard -warn-error -a -w -33-35-27-39 -nolabels)
|
(flags :standard -warn-error -a -w -3-33-35-27-39 -nolabels)
|
||||||
(libraries iter gen qcheck containers containers.unix
|
(libraries iter gen qcheck containers containers.unix
|
||||||
containers.data containers.thread containers.iter
|
containers.data containers.thread containers.iter
|
||||||
containers.sexp uutf)
|
containers.sexp uutf)
|
||||||
|
|
|
||||||
|
|
@ -247,7 +247,7 @@ val random_choose : 'a t -> 'a random_gen
|
||||||
val to_string : ?sep:string -> ('a -> string) -> 'a array -> string
|
val to_string : ?sep:string -> ('a -> string) -> 'a array -> string
|
||||||
(** [to_string ~sep item_to_string a] print [a] to a string using [sep] as a separator
|
(** [to_string ~sep item_to_string a] print [a] to a string using [sep] as a separator
|
||||||
between elements of [a].
|
between elements of [a].
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val to_seq : 'a t -> 'a sequence
|
val to_seq : 'a t -> 'a sequence
|
||||||
(** [to_seq a] returns a [sequence] of the elements of an array [a].
|
(** [to_seq a] returns a [sequence] of the elements of an array [a].
|
||||||
|
|
|
||||||
|
|
@ -248,7 +248,7 @@ val random_choose : 'a t -> 'a random_gen
|
||||||
val to_string : ?sep:string -> ('a -> string) -> 'a array -> string
|
val to_string : ?sep:string -> ('a -> string) -> 'a array -> string
|
||||||
(** [to_string ~sep item_to_string a] print [a] to a string using [sep] as a separator
|
(** [to_string ~sep item_to_string a] print [a] to a string using [sep] as a separator
|
||||||
between elements of [a].
|
between elements of [a].
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val to_seq : 'a t -> 'a sequence
|
val to_seq : 'a t -> 'a sequence
|
||||||
(** [to_seq a] returns a [sequence] of the elements of an array [a].
|
(** [to_seq a] returns a [sequence] of the elements of an array [a].
|
||||||
|
|
|
||||||
|
|
@ -11,11 +11,11 @@ val equal : t -> t -> bool
|
||||||
|
|
||||||
val to_int : t -> int
|
val to_int : t -> int
|
||||||
(** [to_int true = 1], [to_int false = 0].
|
(** [to_int true = 1], [to_int false = 0].
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val of_int : int -> t
|
val of_int : int -> t
|
||||||
(** [of_int i] is the same as [i <> 0]
|
(** [of_int i] is the same as [i <> 0]
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val negate : t -> t
|
val negate : t -> t
|
||||||
(** Negation on booleans (functional version of [not]).
|
(** Negation on booleans (functional version of [not]).
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ val to_int : t -> int
|
||||||
|
|
||||||
val to_string : t -> string
|
val to_string : t -> string
|
||||||
(** [to_string c] return a string containing [c]
|
(** [to_string c] return a string containing [c]
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val pp_buf : Buffer.t -> t -> unit
|
val pp_buf : Buffer.t -> t -> unit
|
||||||
(** Renamed from [pp] since 2.0. *)
|
(** Renamed from [pp] since 2.0. *)
|
||||||
|
|
|
||||||
|
|
@ -204,7 +204,7 @@ module type S = sig
|
||||||
|
|
||||||
val to_string : ?sep:string -> (elt -> string) -> t -> string
|
val to_string : ?sep:string -> (elt -> string) -> t -> string
|
||||||
(** Print the heap in a string
|
(** Print the heap in a string
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val pp : ?sep:string -> elt printer -> t printer
|
val pp : ?sep:string -> elt printer -> t printer
|
||||||
(** @since 0.16
|
(** @since 0.16
|
||||||
|
|
|
||||||
|
|
@ -144,7 +144,7 @@ module type S = sig
|
||||||
|
|
||||||
val to_string : ?sep:string -> (elt -> string) -> t -> string
|
val to_string : ?sep:string -> (elt -> string) -> t -> string
|
||||||
(** Print the heap in a string
|
(** Print the heap in a string
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val pp : ?sep:string -> elt printer -> t printer
|
val pp : ?sep:string -> elt printer -> t printer
|
||||||
(** Printer.
|
(** Printer.
|
||||||
|
|
|
||||||
|
|
@ -689,7 +689,7 @@ val to_string : ?start:string -> ?stop:string -> ?sep:string ->
|
||||||
('a -> string) -> 'a t -> string
|
('a -> string) -> 'a t -> string
|
||||||
(** [to_string ~start ~stop ~sep item_to_string l] print [l] to a string using
|
(** [to_string ~start ~stop ~sep item_to_string l] print [l] to a string using
|
||||||
[sep] as a separator between elements of [l].
|
[sep] as a separator between elements of [l].
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val to_seq : 'a t -> 'a sequence
|
val to_seq : 'a t -> 'a sequence
|
||||||
(** Return a [sequence] of the elements of the list. *)
|
(** Return a [sequence] of the elements of the list. *)
|
||||||
|
|
|
||||||
|
|
@ -687,7 +687,7 @@ val to_string : ?start:string -> ?stop:string -> ?sep:string ->
|
||||||
('a -> string) -> 'a t -> string
|
('a -> string) -> 'a t -> string
|
||||||
(** [to_string ~start ~stop ~sep item_to_string l] print [l] to a string using
|
(** [to_string ~start ~stop ~sep item_to_string l] print [l] to a string using
|
||||||
[sep] as a separator between elements of [l].
|
[sep] as a separator between elements of [l].
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val to_seq : 'a t -> 'a sequence
|
val to_seq : 'a t -> 'a sequence
|
||||||
(** Return a [sequence] of the elements of the list. *)
|
(** Return a [sequence] of the elements of the list. *)
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ val compare : ('a -> 'a -> int) -> ('b -> 'b -> int) -> ('a * 'b) -> ('a * 'b) -
|
||||||
|
|
||||||
val to_string : ?sep:string -> ('a -> string) -> ('b -> string) -> ('a * 'b) -> string
|
val to_string : ?sep:string -> ('a -> string) -> ('b -> string) -> ('a * 'b) -> string
|
||||||
(** Print tuple in a string
|
(** Print tuple in a string
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
type 'a printer = Format.formatter -> 'a -> unit
|
type 'a printer = Format.formatter -> 'a -> unit
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -189,7 +189,7 @@ end
|
||||||
val flatten_l : ('a, 'err) t list -> ('a list, 'err) t
|
val flatten_l : ('a, 'err) t list -> ('a list, 'err) t
|
||||||
(** Same as [map_l id]: returns [Ok [x1;…;xn]] if [l=[Ok x1; …; Ok xn]],
|
(** Same as [map_l id]: returns [Ok [x1;…;xn]] if [l=[Ok x1; …; Ok xn]],
|
||||||
or the first error otherwise.
|
or the first error otherwise.
|
||||||
@since NEXT_RELEASE
|
@since 2.7
|
||||||
*)
|
*)
|
||||||
|
|
||||||
val map_l : ('a -> ('b, 'err) t) -> 'a list -> ('b list, 'err) t
|
val map_l : ('a -> ('b, 'err) t) -> 'a list -> ('b list, 'err) t
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ module type S = sig
|
||||||
?start:string -> ?stop:string -> ?sep:string ->
|
?start:string -> ?stop:string -> ?sep:string ->
|
||||||
(elt -> string) -> t -> string
|
(elt -> string) -> t -> string
|
||||||
(** Print the set in a string
|
(** Print the set in a string
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val pp :
|
val pp :
|
||||||
?start:string -> ?stop:string -> ?sep:string ->
|
?start:string -> ?stop:string -> ?sep:string ->
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ module type S = sig
|
||||||
?start:string -> ?stop:string -> ?sep:string ->
|
?start:string -> ?stop:string -> ?sep:string ->
|
||||||
(elt -> string) -> t -> string
|
(elt -> string) -> t -> string
|
||||||
(** Print the set in a string
|
(** Print the set in a string
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val pp :
|
val pp :
|
||||||
?start:string -> ?stop:string -> ?sep:string ->
|
?start:string -> ?stop:string -> ?sep:string ->
|
||||||
|
|
|
||||||
|
|
@ -291,7 +291,7 @@ val to_string :
|
||||||
?start:string -> ?stop:string -> ?sep:string ->
|
?start:string -> ?stop:string -> ?sep:string ->
|
||||||
('a -> string) -> ('a,_) t -> string
|
('a -> string) -> ('a,_) t -> string
|
||||||
(** Print the vector in a string
|
(** Print the vector in a string
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val pp : ?start:string -> ?stop:string -> ?sep:string ->
|
val pp : ?start:string -> ?stop:string -> ?sep:string ->
|
||||||
'a printer -> ('a,_) t printer
|
'a printer -> ('a,_) t printer
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ val peek_front : 'a t -> 'a
|
||||||
|
|
||||||
val peek_front_opt : 'a t -> 'a option
|
val peek_front_opt : 'a t -> 'a option
|
||||||
(** First value.
|
(** First value.
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val peek_back : 'a t -> 'a
|
val peek_back : 'a t -> 'a
|
||||||
(** Last value.
|
(** Last value.
|
||||||
|
|
@ -55,15 +55,15 @@ val peek_back : 'a t -> 'a
|
||||||
|
|
||||||
val peek_back_opt : 'a t -> 'a option
|
val peek_back_opt : 'a t -> 'a option
|
||||||
(** Last value.
|
(** Last value.
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val remove_back : 'a t -> unit
|
val remove_back : 'a t -> unit
|
||||||
(** Remove last value. If the deque is empty do nothing
|
(** Remove last value. If the deque is empty do nothing
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val remove_front : 'a t -> unit
|
val remove_front : 'a t -> unit
|
||||||
(** Remove first value. If the deque is empty do nothing
|
(** Remove first value. If the deque is empty do nothing
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val take_back : 'a t -> 'a
|
val take_back : 'a t -> 'a
|
||||||
(** Take last value.
|
(** Take last value.
|
||||||
|
|
@ -71,7 +71,7 @@ val take_back : 'a t -> 'a
|
||||||
|
|
||||||
val take_back_opt : 'a t -> 'a option
|
val take_back_opt : 'a t -> 'a option
|
||||||
(** Take last value.
|
(** Take last value.
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val take_front : 'a t -> 'a
|
val take_front : 'a t -> 'a
|
||||||
(** Take first value.
|
(** Take first value.
|
||||||
|
|
@ -79,18 +79,18 @@ val take_front : 'a t -> 'a
|
||||||
|
|
||||||
val take_front_opt : 'a t -> 'a option
|
val take_front_opt : 'a t -> 'a option
|
||||||
(** Take first value.
|
(** Take first value.
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val update_back : 'a t -> ('a -> 'a option) -> unit
|
val update_back : 'a t -> ('a -> 'a option) -> unit
|
||||||
(** Update last value. If the deque is empty do nothing.
|
(** Update last value. If the deque is empty do nothing.
|
||||||
If the function returns [None], remove last element;
|
If the function returns [None], remove last element;
|
||||||
if it returns [Some x], replace last element with [x].
|
if it returns [Some x], replace last element with [x].
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val update_front : 'a t -> ('a -> 'a option) -> unit
|
val update_front : 'a t -> ('a -> 'a option) -> unit
|
||||||
(** Update first value. If the deque is empty do nothing.
|
(** Update first value. If the deque is empty do nothing.
|
||||||
Similar to {!update_back} but for the first value.
|
Similar to {!update_back} but for the first value.
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val append_front : into:'a t -> 'a t -> unit
|
val append_front : into:'a t -> 'a t -> unit
|
||||||
(** [append_front ~into q] adds all elements of [q] at the front
|
(** [append_front ~into q] adds all elements of [q] at the front
|
||||||
|
|
@ -160,15 +160,15 @@ val to_rev_list : 'a t -> 'a list
|
||||||
|
|
||||||
val filter : ('a -> bool) -> 'a t -> 'a t
|
val filter : ('a -> bool) -> 'a t -> 'a t
|
||||||
(** Filter into a new copy.
|
(** Filter into a new copy.
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val filter_map : ('a -> 'b option) -> 'a t -> 'b t
|
val filter_map : ('a -> 'b option) -> 'a t -> 'b t
|
||||||
(** Filter map into a new copy
|
(** Filter map into a new copy
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
val filter_in_place : 'a t -> ('a -> bool) -> unit
|
val filter_in_place : 'a t -> ('a -> bool) -> unit
|
||||||
(** Keep only elements that satisfy the predicate.
|
(** Keep only elements that satisfy the predicate.
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
|
|
||||||
(** {2 print} *)
|
(** {2 print} *)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
(** {1 Continuation List}
|
(** {1 Continuation List}
|
||||||
|
|
||||||
|
|
||||||
@deprecated since NEXT_RELEASE, you should use the standard {b Seq} instead.
|
@deprecated since 2.7, you should use the standard {b Seq} instead.
|
||||||
See {{: https://github.com/c-cube/oseq/} oseq} for similar combinators.
|
See {{: https://github.com/c-cube/oseq/} oseq} for similar combinators.
|
||||||
|
|
||||||
*)
|
*)
|
||||||
|
|
|
||||||
|
|
@ -320,12 +320,12 @@ include (Make(struct
|
||||||
CCResult.to_opt (parse_string "\"\123\bcoucou\"") <> None
|
CCResult.to_opt (parse_string "\"\123\bcoucou\"") <> None
|
||||||
*)
|
*)
|
||||||
|
|
||||||
(*$= & ~printer:(function Ok x -> to_string x | Error e -> "error " ^ e)
|
(*$= & ~printer:(function Result.Ok x -> to_string x | Result.Error e -> "error " ^ e)
|
||||||
(parse_string "(a b)") (Ok (`List [`Atom "a"; `Atom "b"]))
|
(parse_string "(a b)") (Result.Ok (`List [`Atom "a"; `Atom "b"]))
|
||||||
(parse_string "(a\n ;coucou\n b)") (Ok (`List [`Atom "a"; `Atom "b"]))
|
(parse_string "(a\n ;coucou\n b)") (Result.Ok (`List [`Atom "a"; `Atom "b"]))
|
||||||
(parse_string "(a #; (foo bar\n (1 2 3)) b)") (Ok (`List [`Atom "a"; `Atom "b"]))
|
(parse_string "(a #; (foo bar\n (1 2 3)) b)") (Result.Ok (`List [`Atom "a"; `Atom "b"]))
|
||||||
(parse_string "#; (a b) (c d)") (Ok (`List [`Atom "c"; `Atom "d"]))
|
(parse_string "#; (a b) (c d)") (Result.Ok (`List [`Atom "c"; `Atom "d"]))
|
||||||
(parse_string "#; (a b) 1") (Ok (`Atom "1"))
|
(parse_string "#; (a b) 1") (Result.Ok (`Atom "1"))
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,12 +9,12 @@ type 'a gen = unit -> 'a option
|
||||||
|
|
||||||
(** {2 Abstract representation of S-expressions}
|
(** {2 Abstract representation of S-expressions}
|
||||||
|
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
module type SEXP = CCSexp_intf.SEXP
|
module type SEXP = CCSexp_intf.SEXP
|
||||||
|
|
||||||
(** {2 Operations over S-expressions}
|
(** {2 Operations over S-expressions}
|
||||||
|
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
module type S = CCSexp_intf.S
|
module type S = CCSexp_intf.S
|
||||||
|
|
||||||
(** {2 Functorized operations}
|
(** {2 Functorized operations}
|
||||||
|
|
@ -22,7 +22,7 @@ module type S = CCSexp_intf.S
|
||||||
This builds a parser and printer for S-expressions represented as
|
This builds a parser and printer for S-expressions represented as
|
||||||
in the [Sexp] argument.
|
in the [Sexp] argument.
|
||||||
|
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
module Make(Sexp : SEXP) : S with type t = Sexp.t
|
module Make(Sexp : SEXP) : S with type t = Sexp.t
|
||||||
|
|
||||||
(** {2 Basics} *)
|
(** {2 Basics} *)
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ type 'a gen = unit -> 'a option
|
||||||
|
|
||||||
(** {2 Abstract representation of S-expressions}
|
(** {2 Abstract representation of S-expressions}
|
||||||
|
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
module type SEXP = sig
|
module type SEXP = sig
|
||||||
type t
|
type t
|
||||||
type loc
|
type loc
|
||||||
|
|
@ -25,7 +25,7 @@ end
|
||||||
|
|
||||||
(** {2 Operations over S-expressions}
|
(** {2 Operations over S-expressions}
|
||||||
|
|
||||||
@since NEXT_RELEASE *)
|
@since 2.7 *)
|
||||||
module type S = sig
|
module type S = sig
|
||||||
type t
|
type t
|
||||||
type sexp = t
|
type sexp = t
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue