Skip to content

Instantly share code, notes, and snippets.

@defunkydrummer
Created June 28, 2019 16:52
Show Gist options
  • Save defunkydrummer/12f22cec20bb7a94ab7f7cb80d06e7b6 to your computer and use it in GitHub Desktop.
Save defunkydrummer/12f22cec20bb7a94ab7f7cb80d06e7b6 to your computer and use it in GitHub Desktop.
Go Shitposting
;; (c) 2019 Defunkydrummer
;; MIT License
(defun indent (str &key with-indent)
"Indent a string"
(format t
(format nil "~~~dT ~~a" (1+ with-indent))
str))
(defun |brutally practical line| (l &optional (indent 0))
"Rob Pike is love, Rob Pike is life."
(indent
(format nil "~a,err = \"~a\"; if err!=nil return nil, err; else~%" l l)
:with-indent indent)) ;lol at lisp-2 haters
(defun shitposting-cube (m)
"Defunkydrummer's new Go shitposting cube."
(let ((message (string-upcase
(substitute #\_ #\Space m))))
(loop
with length = (length message)
for indent from 0 to length
for letter across message
do (|brutally practical line| letter indent)
finally
;; name the 'concatenate' function properly
(indent
(format nil "return concatenate_~r_utf8_values(~{~a~^,~})"
length
(coerce message 'list))
:with-indent (1+ length)))))
@defunkydrummer
Copy link
Author

defunkydrummer commented Aug 11, 2020

Go "shitposting" in Common Lisp

Just having some fun; the fun value of this will be obvious to any Golang developer.

and BTW it uses some nice features in CL like

  • Symbol names that include whitespace
  • The ~R operator on FORMAT, which translates numbers to english

Usage:

(shitposting-cube "I love Rob Pike.")

Sample output:

  I,err = "I"; if err!=nil return nil, err; else
   _,err = "_"; if err!=nil return nil, err; else
    L,err = "L"; if err!=nil return nil, err; else
     O,err = "O"; if err!=nil return nil, err; else
      V,err = "V"; if err!=nil return nil, err; else
       E,err = "E"; if err!=nil return nil, err; else
        _,err = "_"; if err!=nil return nil, err; else
         R,err = "R"; if err!=nil return nil, err; else
          O,err = "O"; if err!=nil return nil, err; else
           B,err = "B"; if err!=nil return nil, err; else
            _,err = "_"; if err!=nil return nil, err; else
             P,err = "P"; if err!=nil return nil, err; else
              I,err = "I"; if err!=nil return nil, err; else
               K,err = "K"; if err!=nil return nil, err; else
                E,err = "E"; if err!=nil return nil, err; else
                 .,err = "."; if err!=nil return nil, err; else
                   return concatenate_sixteen_utf8_values(I,_,L,O,V,E,_,R,O,B,_,P,I,K,E,.)

Or...

(shitposting-cube "NO GENERICS, NO METAPROGRAMMING, NO HINDLER-MILNER")

Out:

   N,err = "N"; if err!=nil return nil, err; else
   O,err = "O"; if err!=nil return nil, err; else
    _,err = "_"; if err!=nil return nil, err; else
     G,err = "G"; if err!=nil return nil, err; else
      E,err = "E"; if err!=nil return nil, err; else
       N,err = "N"; if err!=nil return nil, err; else
        E,err = "E"; if err!=nil return nil, err; else
         R,err = "R"; if err!=nil return nil, err; else
          I,err = "I"; if err!=nil return nil, err; else
           C,err = "C"; if err!=nil return nil, err; else
            S,err = "S"; if err!=nil return nil, err; else
             ,,err = ","; if err!=nil return nil, err; else
              _,err = "_"; if err!=nil return nil, err; else
               N,err = "N"; if err!=nil return nil, err; else
                O,err = "O"; if err!=nil return nil, err; else
                 _,err = "_"; if err!=nil return nil, err; else
                  M,err = "M"; if err!=nil return nil, err; else
                   E,err = "E"; if err!=nil return nil, err; else
                    T,err = "T"; if err!=nil return nil, err; else
                     A,err = "A"; if err!=nil return nil, err; else
                      P,err = "P"; if err!=nil return nil, err; else
                       R,err = "R"; if err!=nil return nil, err; else
                        O,err = "O"; if err!=nil return nil, err; else
                         G,err = "G"; if err!=nil return nil, err; else
                          R,err = "R"; if err!=nil return nil, err; else
                           A,err = "A"; if err!=nil return nil, err; else
                            M,err = "M"; if err!=nil return nil, err; else
                             M,err = "M"; if err!=nil return nil, err; else
                              I,err = "I"; if err!=nil return nil, err; else
                               N,err = "N"; if err!=nil return nil, err; else
                                G,err = "G"; if err!=nil return nil, err; else
                                 ,,err = ","; if err!=nil return nil, err; else
                                  _,err = "_"; if err!=nil return nil, err; else
                                   N,err = "N"; if err!=nil return nil, err; else
                                    O,err = "O"; if err!=nil return nil, err; else
                                     _,err = "_"; if err!=nil return nil, err; else
                                      H,err = "H"; if err!=nil return nil, err; else
                                       I,err = "I"; if err!=nil return nil, err; else
                                        N,err = "N"; if err!=nil return nil, err; else
                                         D,err = "D"; if err!=nil return nil, err; else
                                          L,err = "L"; if err!=nil return nil, err; else
                                           E,err = "E"; if err!=nil return nil, err; else
                                            R,err = "R"; if err!=nil return nil, err; else
                                             -,err = "-"; if err!=nil return nil, err; else
                                              M,err = "M"; if err!=nil return nil, err; else
                                               I,err = "I"; if err!=nil return nil, err; else
                                                L,err = "L"; if err!=nil return nil, err; else
                                                 N,err = "N"; if err!=nil return nil, err; else
                                                  E,err = "E"; if err!=nil return nil, err; else
                                                   R,err = "R"; if err!=nil return nil, err; else
                                                     return concatenate_fifty_utf8_values(N,O,_,G,E,N,E,R,I,C,S,,,_,N,O,_,M,E,T,A,P,R,O,G,R,A,M,M,I,N,G,,,_,N,O,_,H,I,N,D,L,E,R,-,M,I,L,N,E,R)
  • Ok, it's "HINDLEY-MILNER", but well, we are all humans, and -like Rob Pike- we do make little mistakes from time to time...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment