JuliaMath / JuliaMath/MeasureBase.jl

Monadic iteration for measures?

Open
#55 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Julia
Stars
32
Forks
4
PR merge metrics
No merged PRs in 30d

Description

By defining

```julia
Base.iterate(m::AbstractMeasure) = rand(m), nothing
Base.iterate(m::AbstractMeasure, ::Nothing) = rand(m), nothing
Base.Iterators.IteratorSize(::Type{<:AbstractMeasure}) = Base.IsInfinite()
```

we could make measures monadic in respect to Julia's iteration interface:

```julia
julia> using Base.Iterators, MeasureTheory
julia> take((x^2 for x in Normal()), 10) |> collect
10-element Vector{Float64}:
[...]
```

This would play well semantically with a syntax `f.(μ)` for pushforward measures (#54).

`x^2 for x in Normal` would become semantically equivalent to `x ~ Normal(); return x^2` in a model.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.