# Scope Variables

## There are two types of scope variable bindings in Gauntlet:

{% hint style="info" %}
Both types of variables are mutable
{% endhint %}

{% hint style="info" %}
For syntax of `varPattern` see [#common-placeholders-throughout-documentation](../read-before-proceeding#common-placeholders-throughout-documentation "mention")
{% endhint %}

### 1. let-variables

&#x20;let-variables use the `:=` operator under the hood. It's syntax is:

```fsharp
let <varPattern> [: TypeName] = <expression>
```

### 2. zero-variables

Zero-variables create an instance of a type's "zero" value. In Gauntlet, the syntax is:

```fsharp
zero <varPattern>: <TypeName>
```

## Working Example

{% tabs %}
{% tab title="Gauntlet" %}
```fsharp
package main

import "fmt" as fmt

fun main(): Unit {
  let a, b, c: Int = (1, 2, 3)
  let myName = "Bobby"
  fmt.println(myName)

  zero myZeroVar: Int
  fmt.println("The number below should be 0, since it's Int's 'zero' value:")
  fmt.println(myZeroVar)
}
```
{% endtab %}

{% tab title="Transpiled" %}
```go
package main

import fmt "fmt"

func main() {
	var a, b, c int = 1, 2, 3
	myName := "Bobby"
	fmt.Println(myName)
	var myZeroVar int
	fmt.Println("The number below should be 0, since it's Int's 'zero' value:")
	fmt.Println(myZeroVar)
	// Eliminates any 'unused variable' errors
	_, _, _, _, _ = a, b, c, myName, myZeroVar

}

```
{% endtab %}

{% tab title="Output" %}
```
Bobby
The number below should be 0, since it's Int's 'zero' value:
0
```
{% endtab %}
{% endtabs %}

