package kappa-library

  1. Overview
  2. Docs
Public internals of the Kappa tool suite. Use this package to use kappa as a lib

Install

Dune Dependency

Authors

Maintainers

Sources

v4.1.3.tar.gz
md5=1c9a8a0d79f085757817f90834e166f5
sha512=13ac40442940ba6e72d7dc5bf952e67443872f7bff63e9c76a3a699a6904c88696047fe04519b7ec6546371642f6ee7b0983117be302694aca15500b0df40de3

doc/src/kappa-library.generic/fifo.ml.html

Source file fifo.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(******************************************************************************)
(*  _  __ * The Kappa Language                                                *)
(* | |/ / * Copyright 2010-2020 CNRS - Harvard Medical School - INRIA - IRIF  *)
(* | ' /  *********************************************************************)
(* | . \  * This file is distributed under the terms of the                   *)
(* |_|\_\ * GNU Lesser General Public License Version 3                       *)
(******************************************************************************)

type 'a t = { waiting_elts: 'a list; list: 'a list }

let empty = { waiting_elts = []; list = [] }
let is_empty t = t.waiting_elts = [] && t.list = []
let push a t = { t with waiting_elts = a :: t.waiting_elts }

let rec pop t =
  match t.list with
  | head :: tail -> { t with list = tail }, Some head
  | [] ->
    (match t.waiting_elts with
    | [] -> t, None
    | list -> pop { waiting_elts = []; list = List.rev list })
OCaml

Innovation. Community. Security.