hack_parallel

Parallel and shared memory library
Legend:
Library
Module
Module type
Parameter
Class
Class type
Library hack_parallel.hh_json
Module Hh_json . Access
type keytrace = string list
type access_failure =
| Not_an_object of keytrace(*

You can't access keys on a non-object JSON thing.

*)
| Missing_key_error of string * keytrace(*

The key is missing.

*)
| Wrong_type_error of keytrace * json_type(*

The key has the wrong type.

*)
type 'a m = ( 'a * keytrace, access_failure ) Hack_result.t

Our type for the result monad. It isn't just the json because it tracks * a history of the keys traversed to arrive at the current point. This helps * produce more informative error states.

val access_failure_to_string : access_failure -> string
val return : 'a -> 'a m
val (>>=) : 'a m -> ( ('a * keytrace) -> 'b m ) -> 'b m
val counit_with : ( access_failure -> 'a ) -> 'a m -> 'a

This is a comonad, but we need a little help to deal with failure

val get_obj : string -> (json * keytrace) -> json m

* The following getters operate on a JSON_Object by accessing keys on it, * and asserting the returned value has the given expected type (types * are asserted by which getter you choose to use). * * Returns Not_an_object if the given JSON object is not a JSON_Object type, * since you can only access keys on those. * * Returns Wrong_type_error if the obtained value is not an object type. * * Returns Missing_key_error if the given key is not found in this object. *

val get_bool : string -> (json * keytrace) -> bool m
val get_string : string -> (json * keytrace) -> string m
val get_number : string -> (json * keytrace) -> string m
val get_number_int : string -> (json * keytrace) -> int m
val get_array : string -> (json * keytrace) -> json list m
val get_val : string -> (json * keytrace) -> json m