1---
2title: Introduction
3order: 0
4---
5
6Wonka is a lightweight iterable and observable library loosely based on
7the [callbag spec](https://github.com/callbag/callbag). It exposes a set of helpers to create streams,
8which are sources of multiple values, which allow you to create, transform
9and consume event streams or iterable sets of data.
10
11## What it is
12
13Wonka is a library for streams _and_ iterables that behaves predictably
14and can be used for many problems where you're dealing with streams of
15values, asynchronous or not.
16
17It's similar to [RxJS](https://github.com/ReactiveX/rxjs) in that it enables asynchronous programming with
18observable streams, with an API that looks like functional programming on
19iterables, but it's also similar to [IxJS](https://github.com/ReactiveX/IxJS) since Wonka streams will run
20synchronously if an iterable source runs synchronously.
21
22It also comes with many operators that users from [RxJS](https://github.com/ReactiveX/rxjs) will be used to.
23
24## Reason Support
25
26Wonka used to be written in [Reason](https://reasonml.github.io/),, a dialect of OCaml, and was usable
27for native development and compileable with [BuckleScript](https://bucklescript.github.io).
28Out of the box it supported usage with BuckleScript, `bs-native`, Dune, and Esy.
29
30If you're looking for the legacy version that supported this, you may want to install v4 or v5 rather
31than v6 onwards, which converted the project to TypeScript.
32
33## About the docs
34
35As mentioned in the prior section, Wonka supports not one but a couple of
36environments and languages. To accommodate for this, most of the docs
37are written with examples and sections for TypeScript and Reason.
38
39We don't provide examples in most parts of the docs for Flow and OCaml because
40their respective usage is almost identical to TypeScript and Reason, so for
41the most part the examples mostly deal with the differences between a
42TypeScript and a Reason project.