---
sidebar_position: 2
---

import { SquiggleEditor } from '@quri/squiggle-components'

# Squiggle Language

The squiggle language has a very simply syntax. The best way to get to understand
it is by simply looking at examples.


## Basic Language 

As an example:

<SquiggleEditor initialSquiggleString={`value_of_work = 10 to 70
value_of_work`} />

Squiggle can declare variables (`value_of_work = 10 to 70`) and declare exports
(the lone `value_of_work` line). Variables can be used later in a squiggle program
and even in other notebooks! 

An export is rendered to the output view so you can see your result.

the exports can be expressions, such as:

<SquiggleEditor initialSquiggleString="normal(0,1)" />

## Functions

Squiggle supports functions, including the rendering of functions:

<SquiggleEditor initialSquiggleString={`ozzie_estimate(t) = lognormal({mean: 3 + (t+.1)^2.5, stdev: 8})
ozzie_estimate
`} />

## Squiggle units

Squiggle supports using suffixes at the end of numbers to refer to units:

<SquiggleEditor initialSquiggleString={`
us_economy_2018 = (10.5 to 10.9)T
growth_rate = 1.08 to 1.2
us_economy(t) = us_economy_2018 * (growth_rate^t)
us_population_2019 = 320M to 330M
us_population_growth_rate = 1.01 to 1.1
us_population(t) = us_population_2019 * (us_population_growth_rate^t)
gdp_per_person(t) = us_economy(t)/us_population(t)
gdp_per_person`} />

