# Quine

A quine is a program which takes no input and produces a copy of its own source code as its only output.

In APL, a quine is listed in the FinnAPL idiom library as "an expression giving itself":

```      1⌽22⍴11⍴'''1⌽22⍴11⍴'''
```

### Modern update

In 2019, Nick Nikolov proposed to shorten it using the commute operator:[1]

```      1⌽,⍨9⍴'''1⌽,⍨9⍴'''
```

#### Explanation

This shorter version is explain as follows:[2]

• `'''1⌽,⍨9⍴'''` the characters `'1⌽,⍨9⍴'`
• `9⍴` reshape to shape 9, resulting in `'1⌽,⍨9⍴''`
• `,⍨` concatenate with itself, resulting in `'1⌽,⍨9⍴'''1⌽,⍨9⍴''`
• `1⌽` rotate one character to the left, getting the characters: `1⌽,⍨9⍴'''1⌽,⍨9⍴'''`

## Further Entries

### Based on replicating quote

In May 2022, APL Farm user OsKaR31415 shared the following:[3]

```      '{∊⍵⍺⍵⍺,4/⍵}'{∊⍵⍺⍵⍺,4/⍵}''''
```

#### Explanation

In this code, the main function is `{∊⍵⍺⍵⍺,4/⍵}` with the right argument `⍵` being single quote literal (spelled with four quotes, `''''`, because single quotes delimit APL character literals, and quotes inside such must be doubled), and the left argument `⍺` being the character vector representation of the function (`'{∊⍵⍺⍵⍺,4/⍵}'`).

The idea behind this quine is that the only thing you need to have a string containing the original code is to reproduce this structure: [quote] [function] [quote] [function] [quote] [quote] [quote] [quote]. This is precisely what the function does. Given the representation of a function `⍺` (itself in this case), and character `⍵` (here, the quote), it produces the structure `⍵ ⍺ ⍵ ⍺ ⍵ ⍵ ⍵ ⍵`. A more explicit version would be `'{⍵,⍺,⍵,⍺,⍵,⍵,⍵,⍵}'{⍵,⍺,⍵,⍺,⍵,⍵,⍵,⍵}''''` which simply concatenates together the required parts. The original quine is very similar, only using the shorter `4/⍵` to produce the 4 occurrences of `⍵`, and golfs away the spaces, instead opting for Enlist (`∊`) to flatten the intermediary nested array.

### Based on code point of quote

In Jun 2022, Jay Foad shared the following:[4]

```      {,⍨⍵,⎕UCS 39}'{,⍨⍵,⎕UCS 39}'
```

#### Explanation

In this code, the main function is `{,⍨⍵,⎕UCS 39}` with the argument `⍵` being the function itself which avoids duplication of quotes by generating the quote from its Universal Character Set code point (`⎕UCS`).

The idea behind this quine is that the only thing you need to have a string containing the original code is to reproduce this structure: [function] [quote] [function] [quote]. This is precisely what the function does. Given the representation of a function `⍵` (itself in this case), it generates a quote and concatenates it on the right of the function definition, giving [function] [quote]. It then uses self-concatenation (`,⍨`) to repeat the two parts into the required four.