<commit_before># Squirrel
Squirrel is an interpreted programming language with a minimal syntax inspired by Lisp.

## Table of Contents
- [Comments] (#comments)
- [Integers] (#integers)
- [Symbols] (#symbols)
- [Booleans] (#booleans)
- [Symbolic expressions] (#symbolic-expressions)
- [Quoted expressions] (#quoted-expressions)
- [Lambda functions] (#lambda-functions)
- [Defining values] (#defining-values)

## Comments
Comments are enclosed in square brackets and can span multiple lines.

```
[ this is a line comment ]

[
  and this is a
  block comment
]
```

## Integers
Integers are the only numeric type currently supported. Negative integers are preceded by a minus sign. Positive integers can be preceded by an optional plus sign.
```
1 +2 -3
```

## Symbols
A symbol is an object with a name. A symbol name consists of letters and optionally hyphens, although it cannot begin or end with a hyphen. Symbol names are case-sensitive. Symbols can serve as variables, function names, or as a data type on their own. Symbols that name builtin functions cannot be redefined.

```
foo [ a symbol that might name a variable]
add [ a symbol that names a builtin function ]
Add [ not the same as the previous symbol ]
example-with-hyphens
```

## Booleans
The symbols `true` and `false` act as boolean values. Boolean functions should return one of these symbols.

```
(eq (add 1 2) 3) [ -> true ])
(eq 0 (len {a b c})) [ -> false ])
```

## Symbolic expressions
A symbolic expression (*s-expression* for short) is a sequence of expressions enclosed in parentheses where the first expression is a symbol. The symbol is treated as an operator and the remaining expressions are treated as operands.

```<commit_msg>Update README.md with section on strings<commit_after># Squirrel
Squirrel is an interpreted programming language with a minimal syntax inspired by Lisp.

## Table of Contents
- [Comments] (#comments)
- [Integers] (#integers)
- [Symbols] (#symbols)
- [Strings] (#strings)
- [Booleans] (#booleans)
- [Symbolic expressions] (#symbolic-expressions)
- [Quoted expressions] (#quoted-expressions)
- [Lambda functions] (#lambda-functions)
- [Defining values] (#defining-values)

## Comments
Comments are enclosed in square brackets and can span multiple lines.

```
[ this is a line comment ]

[
  and this is a
  block comment
]
```

## Integers
Integers are the only numeric type currently supported. Negative integers are preceded by a minus sign. Positive integers can be preceded by an optional plus sign.
```
1 +2 -3
```

## Symbols
A symbol is an object with a name. A symbol name consists of letters and optionally hyphens, although it cannot begin or end with a hyphen. Symbol names are case-sensitive. Symbols can serve as variables, function names, or as a data type on their own. Symbols that name builtin functions cannot be redefined.

```
foo [ a symbol that might name a variable]
add [ a symbol that names a builtin function ]
Add [ not the same as the previous symbol ]
example-with-hyphens
```

## Strings
Strings are enclosed in double quotes. A double quote within a string must be escaped by a backslash.

```
"hello world"
"\"squirrel\" is a programming language"
```

## Booleans
The symbols `true` and `false` act as boolean values. Boolean functions should return one of these symbols.

```
(eq (add 1 2) 3) [ -> true ])
(eq 0 (len {a b c})) [ -> false ])
```

## Symbolic expressions
A symbolic expression (*s-expression* for short) is a sequence of expressions enclosed in parentheses where the first expression is a symbol. The symbol is treated as an operator and the remaining expressions are treated as operands.

```
{'fraction_non_alphanumeric': 0.09222769567597154, 'fraction_numerical': 0.0038314176245210726, 'mean_word_length': 4.26657060518732, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '436249', 'n_tokens_mistral': 1080, 'n_tokens_neox': 993, 'n_words': 515}