Output all of printable ASCII using all of printable ASCII
Husk, 95 95 bytes
Edit: adjusted to fix bug pointed-out by Neil.  Same bytes
mcW=2`R\.5+46L&quot; !#$%&amp;'()*,-/013789:;&lt;=?@ABCDEFGHIJKMNOPQSTUVXYZ[]^_abdefghijklnopqrstuvwxyz{|}~

Try it online!
Well, 96 bytes in Husk is trivial as a literal string, but 95 bytes was much more tricky.
The strategy that I've used is to (1) output all 95 printable ASCII characters using a program written using only non-repeating ASCII characters (this isn't completely straightforward, since many of the useful commands in Husk are encoded by non-ASCII characters), and then (2) to adjust it so that output is dependent on the length of a literal string containing all the unused characters: this second bit will ensure that all the characters are used, and also that the program is irreducible.
Here's how it works:
mcW=2`R\.5+46L&quot;...
m                   # map this function:
 c                  # ASCII character
                    # across all the elements in this list:
  W                 # indexes of all elements that satisfy:
   =2               # are equal to 2
                    # among all the elements in this list:
     `R             # repeat this value:
       \            # reciprocal of
        .5          # .5
                    # this number of times:
          +46       # add 46 to
             L      # the length of
              &quot;...  # this string
                    # the string consists of all the printable ASCII characters,
                    # with the characters of the program removed.  There are 15
                    # characters in the program, so the remaining 95-15=80 characters
                    # are all present in the string.
                    # So, to output all the ASCII characters up to 
                    # 126, we need to add 126-80 = 46.