File: pair.ml

package info (click to toggle)
ocaml 5.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 44,372 kB
  • sloc: ml: 370,196; ansic: 52,820; sh: 27,419; asm: 5,462; makefile: 3,684; python: 974; awk: 278; javascript: 273; perl: 59; fortran: 21; cs: 9
file content (34 lines) | stat: -rw-r--r-- 1,509 bytes parent folder | download
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
(**************************************************************************)
(*                                                                        *)
(*                                 OCaml                                  *)
(*                                                                        *)
(*                         The OCaml programmers                          *)
(*                                                                        *)
(*   Copyright 2024 Institut National de Recherche en Informatique et     *)
(*     en Automatique.                                                    *)
(*                                                                        *)
(*   All rights reserved.  This file is distributed under the terms of    *)
(*   the GNU Lesser General Public License version 2.1, with the          *)
(*   special exception on linking described in the file LICENSE.          *)
(*                                                                        *)
(**************************************************************************)

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

let make a b = (a, b)
let fst (a, _) = a
let snd (_, b) = b
let swap (a, b) = (b, a)

let fold f (a, b) = f a b
let map f g (a, b) = (f a, g b)
let iter f g (a, b) = f a; g b
let map_fst f (a, b) = (f a, b)
let map_snd g (a, b) = (a, g b)

let equal eqa eqb (a, b) (a', b')  =
  eqa a a' && eqb b b'
let compare cmpa cmpb (a, b) (a', b')  =
   let c = cmpa a a' in
   if c <> 0 then c
   else cmpb b b'