Quining a Pristine World This challenge is based off of Helka Homba's question Programming a Pristine World. From that question, the definition of a pristine program is:


  Let's define a pristine program as a program that does not have any errors itself but will error if you modify it by removing any contiguous substring of N characters, where 1 &lt;= N &lt; program length.
  
  For example, the three character Python 2 program

`8`

  
  is a pristine program (thanks, Sp) because all the programs resulting from removing substrings of length 1 cause errors (syntax errors in fact, but any type of error will do):

8`
``
`8

  
  and also all the programs resulting from removing substrings of length 2 cause errors:

`
`

  
  If, for example, `8 had been a non-erroring program then `8` would not be pristine because all the results of substring removal must error.
  
  Notes:
  
  
  Compiler warnings do not count as errors.
  The erroring subprograms can take input or give output or do anything else as long as they error no matter what eventually. 
  


Your task is to create a program of non-zero length that prints its own source code exactly, follows the rules for a proper quine, and is pristine.

Shortest answer in bytes for each language wins.
Haskell, 132 bytes



q x=if length x==132then putStr x else fail[];main=q$(++)&lt;*&gt;show$"q x=if length x==132then putStr x else fail[];main=q$(++)&lt;*&gt;show$"


Try it online!

This is an extension of the quine

main=putStr$(++)&lt;*&gt;show$"main=putStr$(++)&lt;*&gt;show$"


which works by concatenating the data string with a quoted version (by using show) of itself and printing the result. However, this is not pristine as any characters in the data string can be removed without failing and also the $(++)&lt;*&gt;show$ or (++)&lt;*&gt; part could be dropped without the program breaking.

To fix this, a custom print function q is defined which checks the length of the given string and calls fail if it's shorter than 132. This catches the removing of any sequence from the data string and also the removals of $(++)&lt;*&gt;show$ or (++)&lt;*&gt;, as in both cases the resulting string passed to q is shorter.

In q the number 132 could be shortened to 1, 13, 32 or 2, but in each case again fail is called.

As far as I can tell, the removal of any other substring causes either an syntax or type error, so the program does not even compile in the first place. (Haskell's strict type system comes in handy here.) 

Edit: Thanks to Ørjan Johansen and Shelvacu for pointing out a flaws!