Skip to content

hyperpolymath/betlang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

84 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

betlang

MPL-2.0 Palimpsest

A ternary probabilistic programming language for modeling uncertainty

betlang is a Domain-Specific Language (DSL) for probabilistic programming built on Racket. Its core primitive is the ternary bet - a choice between three values with associated probabilities. This simple yet powerful concept enables elegant expression of complex probabilistic models.

Features

Core Language

  • Ternary Bets: (bet A B C) - randomly select one of three values

  • Weighted Probabilities: (bet/weighted '(A 5) '(B 3) '(C 2)) - non-uniform distributions

  • Conditional Bets: Make decisions based on predicates

  • Lazy Evaluation: Only compute the selected branch

  • Composition Operators: Chain, compose, and combine bets

  • Statistical Utilities: Probability estimation, entropy, expected values

Rich Standard Library

Statistics (lib/statistics.rkt)

  • Descriptive statistics: mean, median, mode, variance, standard deviation

  • Correlation and covariance analysis

  • Statistical tests: chi-square, Kolmogorov-Smirnov

  • Resampling methods: bootstrap, jackknife

  • Time series: moving averages, exponential smoothing

  • Monte Carlo simulation utilities

Probability Distributions (lib/distributions.rkt)

  • Discrete: uniform, Bernoulli, binomial, geometric, Poisson, categorical, multinomial

  • Continuous: normal, exponential, gamma, beta, chi-square, Student’s t

  • Advanced: Weibull, Pareto, Cauchy, Laplace, Dirichlet

  • Stochastic Processes: random walks, Brownian motion, Lévy flights

Bayesian Inference (lib/bayesian.rkt)

  • Conjugate priors (Beta-Binomial, Normal-Normal)

  • MCMC: Metropolis-Hastings, Gibbs sampling

  • Importance sampling and rejection sampling

  • Approximate Bayesian Computation (ABC)

  • Credible intervals and Bayes factors

  • Posterior predictive distributions

Optimization (lib/optimization.rkt)

  • Simulated annealing

  • Genetic algorithms

  • Particle swarm optimization

  • Evolutionary strategies

  • Cross-entropy method

  • Hill climbing and random search

  • Ternary search

Advanced Sampling (lib/sampling.rkt)

  • Stratified sampling

  • Latin hypercube sampling

  • Quasi-random sequences (Sobol, Halton)

  • Sequential Monte Carlo (particle filters)

  • Hamiltonian Monte Carlo

  • Slice sampling

  • Variance reduction techniques

Markov Chains (lib/markov.rkt)

  • Discrete-time Markov chains

  • Transition matrix learning

  • Stationary distribution estimation

  • Hidden Markov Models (Viterbi)

  • Text generation with Markov chains

Combinators (lib/combinators.rkt)

  • Monadic operations: pure, bind, join

  • Error handling: try, retry, fallback

  • Performance: memoization, caching, throttling

  • Logical operations: and, or, xor

  • Advanced composition patterns

Ternary Logic (lib/ternary.rkt)

  • Kleene’s three-valued logic

  • Ternary operations: AND, OR, NOT, XOR

  • Majority voting and consensus

  • Higher-order functions for ternary values

  • Truth table generation

Tools

Interactive REPL (repl/shell.rkt)

  • Comprehensive help system (:help)

  • Session statistics tracking (:stats)

  • Command history (:history)

  • Built-in examples (:examples)

  • Error handling and pretty-printing

  • Persistent logging

Analysis Tools (tools/analyzer.rkt)

  • Comprehensive bet analysis

  • Strategy comparison

  • Convergence analysis

  • Text-based histograms

  • Probability reports

  • Entropy analysis over time

Benchmarks (benchmarks/performance.rkt)

  • 15 comprehensive performance tests

  • Core operations benchmarking

  • Distribution sampling performance

  • Statistical function benchmarks

Examples

Financial Modeling (examples/finance.rkt)

  • Stock price simulation (GBM)

  • Option pricing (Black-Scholes Monte Carlo)

  • Value at Risk (VaR) calculation

  • Credit risk modeling

  • Interest rate simulation

  • Portfolio optimization

  • Bond pricing

  • Market crash scenarios

  • 10+ complete examples

Monte Carlo Simulations (examples/monte-carlo.rkt)

  • Pi estimation

  • Buffon’s needle

  • Monte Carlo integration

  • European option pricing

  • Random walk analysis

  • Percolation simulation

  • Variance reduction techniques

Game Theory (examples/game-theory.rkt)

  • Rock-paper-scissors tournaments

  • Prisoner’s dilemma

  • Matching pennies

  • Battle of the sexes

  • Hawk-dove evolutionary dynamics

  • All-pay auctions

Probabilistic Data Structures (examples/probabilistic-structures.rkt)

  • Skip lists

  • Bloom filters

  • HyperLogLog cardinality estimation

  • Count-Min sketch

  • Reservoir sampling

  • Cuckoo hashing

  • Treaps

Basic Tutorial (examples/basic-tutorial.rkt)

  • Step-by-step introduction

  • Real-world examples

  • Customer service simulation

Quick Start

Installation

git clone https://github.com/hyperpolymath/betlang.git
cd betlang

Your First Bet

Start the REPL:

racket repl/shell.rkt

Try some bets:

betlang> (bet 1 2 3)
2

betlang> (bet 'heads 'tails 'edge)
heads

betlang> (bet/weighted '(common 7) '(uncommon 2) '(rare 1))
common

betlang> (bet-parallel 10 'win 'draw 'lose)
(win lose win draw win win lose draw win win)

Run Examples

= Financial modeling

racket examples/finance.rkt

= Monte Carlo simulations

racket examples/monte-carlo.rkt

= Game theory

racket examples/game-theory.rkt

= Tutorial

racket examples/basic-tutorial.rkt

Run Tests

racket tests/basics.rkt

Performance Benchmarks

racket benchmarks/performance.rkt

Documentation

  • [Tutorial](docs/tutorial.md) - Comprehensive tutorial from basics to advanced

  • [Semantics](docs/semantics.md) - Formal language semantics

  • [API Reference](docs/api-reference.md) - Complete API documentation

  • [Architecture](docs/architecture.md) - Project structure

  • [CLAUDE.md](CLAUDE.md) - AI assistant context

Language Philosophy

betlang embraces the ternary principle - fundamental operations involve three choices. This design:

  • Models three-way decisions naturally (win/draw/lose, yes/no/maybe)

  • Provides richer expressiveness than binary choices

  • Creates interesting emergent probabilistic properties

  • Inspired by musical ternary form (A-B-A)

Use Cases

  • Quantitative Finance: Option pricing, risk analysis, portfolio optimization

  • Statistical Modeling: Bayesian inference, hypothesis testing

  • Machine Learning: Probabilistic classification, sampling methods

  • Simulation: Monte Carlo methods, agent-based modeling

  • Game Theory: Strategic decision-making, evolutionary dynamics

  • Data Science: Resampling, bootstrapping, statistical analysis

  • Research: Probabilistic programming, stochastic processes

Project Statistics

  • Lines of Code: 6,000+

  • Libraries: 10+

  • Functions: 180+

  • Examples: 8 comprehensive example files

  • Documentation: 2,000+ lines

  • Test Cases: 25+

Requirements

  • Racket 7.0 or later

Contributing

Contributions are welcome! Please ensure: - Code follows Racket conventions - New features align with ternary philosophy - Tests are included - Documentation is updated

License

See LICENSE file for details.

Citation

If you use betlang in research, please cite:

@software{betlang2025,
  title={betlang: A Ternary Probabilistic Programming Language},
  author={betlang Contributors},
  year={2025},
  url={https://github.com/hyperpolymath/betlang}
}

Acknowledgments

Inspired by: - Musical ternary form (A-B-A) - Probabilistic programming languages - Racket’s expressiveness - Three-valued logic systems


Happy betting! 🎲

For questions, issues, or discussions, please open an issue on GitHub.

About

A ternary probabilistic programming language for modeling uncertainty

Topics

Resources

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE
Unknown
LICENSE.txt

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •