package ecaml

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file plist.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
open! Core
open! Import

include Value.Make_subtype (struct
  let name = "plist"
  let here = [%here]

  let rec is_in_subtype value =
    Value.is_nil value
    || (Value.is_cons value
        && Value.is_symbol (Value.car_exn value)
        &&
        let cdr = Value.cdr_exn value in
        Value.is_cons cdr && is_in_subtype (Value.cdr_exn cdr))
  ;;
end)

let get = Funcall.Wrap.("plist-get" <: t @-> Symbol.t @-> return (nil_or value))
let set = Funcall.Wrap.("plist-put" <: t @-> Symbol.t @-> value @-> return nil)
let of_symbol = Funcall.Wrap.("symbol-plist" <: Symbol.t @-> return t)