> For the complete documentation index, see [llms.txt](https://devon-miller.gitbook.io/test_private_book/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://devon-miller.gitbook.io/test_private_book/intro_basics/refs.md).

# Refs

Refs provide concurrency support for effect types. In fs2, the effect type is often a Task. However, effect types are also Options, Futures and even Lists (the effect of multiple choice/options). Really, an effect is usually a container of a value that may have other characteristics e.g. asynchronous creation of that value. Refs are more of an implementation detail compared to the streams api.

Refs use a "messaging" model to set or get the value in a Ref. Underneath the hood, you can think of it is as actor model for one value. Actors were designed, among other things, to protect state behind a wall of "messages." If you try to get or set the value inside a Ref, a message is sent internally to perform the get or set. Messages can be processed in order so that the stream of get/set messages are processed in a sensible fashion.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://devon-miller.gitbook.io/test_private_book/intro_basics/refs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
