You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.2 KiB

(*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*)
(** Global namespace intended to be opened in each source file *)
include NS0
(** Map-and-construct operations that preserve physical equality *)
let map1 f e cons x =
let x' = f x in
if x == x' then e else cons x'
let map2 f e cons x y =
let x' = f x in
let y' = f y in
if x == x' && y == y' then e else cons x' y'
let map3 f e cons x y z =
let x' = f x in
let y' = f y in
let z' = f z in
if x == x' && y == y' && z == z' then e else cons x' y' z'
let mapN f e cons xs =
let xs' = Array.map_endo ~f xs in
if xs' == xs then e else cons xs'
module Array = Array
module Float = Float
module HashSet = HashSet
module HashTable = HashTable
module IArray = IArray
include IArray.Import
module Int = Int
module List = List
module Map = Map
module Monad = Monad
module Multiset = Multiset
module Option = Option
include Option.Import
module Q = Q_ext
module Set = Set
module Sign = Sign
module String = String
module Sys = Sys
module Timer = Timer
module Z = Z_ext
module Filename = struct
include Filename
let realpath = Core.Filename.realpath
end