Roc's 2374-line llms.txt shows what thorough AI preparation looks like

Discover Roc, your go-to platform for seamless application development with powerful tools and intuitive pattern matching. Unlock your coding potential today!

2,374
Lines
+68% vs avg
15
Sections
-37% vs avg
742+
Companies
using llms.txt
1
Files
llms.txt

Key Insights

Comprehensive structure

With 15 distinct sections, this file provides thorough coverage for AI systems.

Comprehensive detail

2374 lines of thorough documentation for AI systems.

llms.txt Preview

First 100 lines of 2,374 total

<input id="tutorial-toc-toggle" name="tutorial-toc-toggle" type= "checkbox">
<nav id="tutorial-toc" aria-label="Table of Contents">
    <label id="close-tutorial-toc" for="tutorial-toc-toggle">close</label>
    <!-- TODO fix search: input [id "toc-search", type "text", placeholder "Search"] [] -->
    <ol>
    <li><a href="#repl">REPL</a></li>
    <li><a href="#building-an-application">Building an Application</a></li>
    <li><a href="#pattern-matching">Pattern Matching</a></li>
    <li><a href="#types">Types</a></li>
    <li><a href="#crashing">Crashing</a></li>
    <li><a href="#testing">Testing</a></li>
    <li><a href="#modules">Modules</a></li>
    <li><a href="#advanced-concepts">Advanced Concepts</a></li>
    </ol>
</nav>
<section id="tutorial-body">
    <section>
        <h1>Tutorial<label id="tutorial-toc-toggle-label" for="tutorial-toc-toggle">contents</label></h1>
        <p>Welcome to Roc!</p>
        <p>This tutorial will teach you how to build Roc applications. Along the way, you'll learn how to write tests, use the REPL, and more!</p>
    </section>
    <section>
        <h2 id="installation"><a href="#installation">Installation</a></h2>
        <p>Roc doesn’t have a numbered release or an installer yet, but you can follow the install instructions for your OS<a href="/install/getting_started.html#installation"> here </a>. If you get stuck, friendly people will be happy to help if you open a topic in<a href="https://roc.zulipchat.com/#narrow/stream/231634-beginners"> #beginners </a>on<a href="https://roc.zulipchat.com/"> Roc Zulip Chat </a>and ask for assistance!</p>
    </section>

## [AI Docs](#ai-docs) {#ai-docs}

We have experimental AI-friendly text files for our [tutorial](/llms.txt) and [standard library](/builtins/llms.txt) that you can use to prompt your favorite large language model to answer your questions about Roc!

## [REPL](#repl) {#repl}

Let's start by getting acquainted with Roc's [_Read-Eval-Print-Loop_](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop), or **REPL** for short.

You can use the online REPL at [roc-lang.org/repl](https://www.roc-lang.org/repl).

Or you can run this in a terminal: <code class="block">roc repl</code>, and if Roc is [installed](/install), you should see this:

<pre>
<samp>
  The rockin’ roc repl
────────────────────────

Enter an expression, or :help, or :q to quit.

</samp></pre>

So far, so good!

### [Hello, World!](#hello-world) {#hello-world}

Try typing this in the REPL and pressing Enter:

<pre><samp class="repl-prompt">"Hello, World!"</samp></pre>

The REPL should cheerfully display the following:

<pre><samp><span class="literal">"Hello, World!" </span><span class="colon">:</span> Str</samp></pre>

Congratulations! You've just written your first Roc code.

### [Naming Things](#naming-things) {#naming-things}

When you entered the _expression_ `"Hello, World!"`, the REPL printed it back out. It also printed `: Str`, because `Str` is that expression's type. We'll talk about types later; for now, let's ignore the `:` and whatever comes after it whenever we see them.

You can assign specific names to expressions. Try entering these lines:

```
greeting = "Hi"
audience = "World"
```

From now until you exit the REPL, you can refer to either `greeting` or `audience` by those names! We'll use these later on in the tutorial.

### [Arithmetic](#arithmetic) {#arithmetic}

Now let's try using an _operator_, specifically the `+` operator. Enter this:

<pre><samp class="repl-prompt">1 <span class="op">+</span> 1</samp></pre>

You should see this output:

<pre><samp>2 <span class="colon">:</span> Num * <span class="comment"></span></samp></pre>

According to the REPL, one plus one equals two. Sounds right!

Roc will respect [order of operations](https://en.wikipedia.org/wiki/Order_of_operations) when using multiple arithmetic operators like `+` and `-`, but you can use parentheses to specify exactly how they should be grouped.

<pre><samp><span class="repl-prompt">1 <span class="op">+</span> 2 <span class="op">*</span> (3 <span class="op">-</span> 4)

-1 <span class="colon">:</span> Num *
</span></samp></pre>

### [Calling Functions](#calling-functions) {#calling-functions}

Let's try calling a function:

<pre><samp><span class="repl-prompt">Str.concat("Hi ", "there.")</span>

<span class="literal">"Hi there."</span> <span class="colon">:</span> Str

Roc is ready for AI search. Are you?

Join 742+ companies preparing their websites for the future of search. Create your llms.txt file in minutes.

Generate Your llms.txt

Don't get left behind

Your competitors are preparing for AI search.

Roc has 15 organized sections ready for AI crawlers. Generate your llms.txt file and join the companies optimizing for the future of search.