2 Reference
Roulette augments Racket with first-class measurable values. A variable can be bound to a measurable value of a given type and then be used in computations, just as any ordinary concrete value of that type. An engine is then used to perform inference on derived values. The examples in this section use the RSDD backend.
2.1 Measures
syntax
(define-measurable id ...+ measure)
measure : (measure/c dom cod)
> (require roulette/engine/rsdd) > (define-measurable x (bernoulli-measure 0.4 0.6))
syntax
(define-measurable* id ...+ measure)
measure : (measure/c dom cod)
procedure
(infer v [#:engine engine #:lazy? lazy?]) → (measure/c dom cod)
v : (measurable-space-point dom) engine : (engine/c dom cod) = (rsdd-engine) lazy? : boolean? = #f
> (support (bernoulli-measure 0 1)) (set #t #f)
> (support m) (set 'banana 'apple)
procedure
(density m) → (-> (measurable-space-point dom) cod)
m : (measure/c dom cod)
procedure
(measure/c dom cod) → chaperone-contract?
dom : measurable-space? cod : flat-contract?
procedure
(engine/c dom cod) → chaperone-contract?
dom : measurable-space? cod : flat-contract?
2.2 Measurable Spaces
procedure
(immutable-set/c elem/c) → measurable-space?
elem/c : chaperone-contract?
procedure
c : measurable-space?
> (measurable-space-point (immutable-set/c boolean?)) boolean?
procedure
(measurable-space? c) → boolean?
c : any/c