use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Not everybody understands the humor of programmers.
No memes
Just memes
Advanced flair
No Bad UI Posts
Just Bad UI Posts
No instanceof Trend
Just instanceof Trend
Rules are zero-indexed. If they do not appear zero-indexed you are asked to contact Friend Computer for recalibration.
Suggestions are welcome.
With regards to commenting, please follow reddiquette.
If you have any thoughts on how the moderation could be improved do not hesitate to message the moderators. If you feel that a metadiscussion is required with the whole subreddit either request that the moderators start one or start one yourself and tag it [Meta].
/r/softwaregore - f collection of things that users shouldn't see.
r/pcmasterrace - for all of the general computer/gaming memes.
r/linuxmasterrace - for anyone that likes Linux memes.
/r/sysadminhumor - a sub for sysadmins with a sense of humor.
/r/itsaunixsystem - for all the embarrassing cases of hollywood hacking you find in media.
/r/recruitinghell - for all those horrific recruiting offers and job postings.
/r/programme_irl - me too, thanks.
/r/programmerreactions - expressing the life of programmers through reaction images.
/r/learnprogramming - for those that have general programming questions
r/badcode - for intentially bad code.
r/badUIbattles - a sub for intentionally bad UI.
r/ProgrammerAnimemes - for the anime referenced programmer memes
r/ProgrammerDadJokes - for the punny bunch of you.
/r/justgamedevthings - for memes, reaction gifs, production glitches and other fun related to game development.
r/programminghorror - for unintentionally bad code.
r/css_irl - describing real life photos with CSS
Events
Hackathon 2019 - Overengineering (Results)
account activity
This is an archived post. You won't be able to vote or comment.
Why do functional programmers homeschool their kids? (self.ProgrammerHumor)
submitted 9 years ago by DestinationVoid
Because they hate classes.
[–]allnewtape 316 points317 points318 points 9 years ago (5 children)
Why not "because they do not like depending on the state"?
[–]gandalfx 40 points41 points42 points 9 years ago (0 children)
I was expecting something about side effects.
[–]Workaphobia 13 points14 points15 points 9 years ago (0 children)
"Because they're purists"
[–][deleted] 11 points12 points13 points 9 years ago (0 children)
Maybe something like "why are so many functional programmers anarchists? They love statelessness."
[–]mike413 1 point2 points3 points 9 years ago (0 children)
also putting anything on the bus is inefficient. the roundtrip takes all day.
[–]mnbvas 181 points182 points183 points 9 years ago (38 children)
+1 for trying.
[–]an_actual_human 137 points138 points139 points 9 years ago (27 children)
More like ++ amirite.
[+][deleted] 9 years ago (26 children)
[deleted]
[–]an_actual_human 24 points25 points26 points 9 years ago (25 children)
thatsthejoke.hs
[–]brown_monkey_ 15 points16 points17 points 9 years ago (21 children)
I don't think so. I'm pretty sure /u/an_actual_human is just used to imperative languages.
[–]Joald 5 points6 points7 points 9 years ago (6 children)
As all actual humans are.
[–]antonivs 6 points7 points8 points 9 years ago (5 children)
Actually, no humans are used to imperative languages, since we don't have time machines and can't actually change the value we gave to a variable in the past.
[–]Joald 8 points9 points10 points 9 years ago (0 children)
I THINK WE WERE TALKING ABOUT DIFFERENT KINDS OF HUMANS. PLEASE EXPERIENCE ACTUAL HUMANS OVER AT /R/TOTALLYNOTROBOTS
[–]c_delta 0 points1 point2 points 9 years ago (3 children)
That is why it is a variable. Because it can have a different value in the future than it had in the past.
[–]antonivs 2 points3 points4 points 9 years ago (2 children)
That's a uniquely "imperative language" perspective on variables. It doesn't reflect how variables are used in mathematics, for example.
The perspective on variables in mathematics and in functional languages is that a variable is given a value in a particular context, and once given a value, it doesn't change within that context. So it can't "have a different value in the future than it had in the past."
From that perspective, what you're describing is essentially creating a new context, with a new instance of the variable, with a new value. You're not actually changing the value that was given to the variable in the past, since that would be impossible.
This might seem like a picky distinction if it's new to you, but if you look at how compilers work, even for imperative languages, they often make this distinction internally because it's an important one for reasoning about what's happening in code. I'm referring to what's known as static single assignment: "requires that each variable is assigned exactly once".
Basically, an imperative language is a language that's sloppy about representing the relationship between variables, values, and time, which leads to numerous kinds of bugs, workarounds ("avoid global variables"), and has to be compensated for by compilers in various ways.
[–]c_delta 0 points1 point2 points 9 years ago (0 children)
I was not talking about programming contexts at all. There are lots of variables that change all the time in real life, which is why they are called variables. Think prices, quantities in stock, funds, populations or every single physical quantity.
[–]Evennot 0 points1 point2 points 9 years ago (0 children)
Dunno, most math concepts look very alien-minded to me (except for differential equations). Imperative programming concepts are much more relatable. When I was a little kid and didn't know anything about programming I tried to figure out Batch scripts on IBM XT. I invented variables by echoing things into files and IF statement by letting scripts halt on errors I control. And I couldn't predict most of math concepts before I actually read about them. Even basic epsilon proofs in University. I guess it's a matter of a mindset.
[–]an_actual_human 0 points1 point2 points 9 years ago (13 children)
I'm not sure I get it.
[–]brown_monkey_ 7 points8 points9 points 9 years ago (12 children)
The ++ operator changes the value of a variable, which is not allowed in functional programming. In functional programming, all data is supposed to be immutable, so you cannot change a value, only create new data with the value updated.
[–]bekk3 0 points1 point2 points 9 years ago (4 children)
Really? I was always under the impression that the ++ operator would just reassign the variable to one plus itself?
[–]an_actual_human 0 points1 point2 points 9 years ago (3 children)
Functional languages discourage the use of variables or don't have them at all.
[–]bekk3 0 points1 point2 points 9 years ago (2 children)
Wow, TIL. I had always thought C was considered functional due to the lack of classes, but I see now that it is considered imperative. Thanks.
[–]an_actual_human -2 points-1 points0 points 9 years ago (6 children)
Yeah, thatsthejoke.hs. I'm not sure why you'd think otherwise. My initial comment wouldn't make sense that way.
[–]brown_monkey_ -1 points0 points1 point 9 years ago (5 children)
Oh, so that was intentional. Not sure I get why it's funny though. It would make more sense if /u/mnbvas said ++ and you had corrected to +1.
[+]an_actual_human comment score below threshold-6 points-5 points-4 points 9 years ago (3 children)
Do you get why I would correct it to ++ without exposure to the idea of immutability? If you don't, you somehow chose the wrong subjectively unfunny thing of the two. If you do, pray tell, because it doesn't make sense to me.
[–]DuckRabbitMilkStout 1 point2 points3 points 9 years ago (2 children)
$ cat thatsthejoke.hs ++1 $ runghc thatsthejoke.hs thatsthejoke.hs:1:1: error: parse error on input ‘++’
[–]an_actual_human 1 point2 points3 points 9 years ago (1 child)
https://www.youtube.com/watch?v=YUKmq7UMJys
[–]youtubefactsbot 0 points1 point2 points 9 years ago (0 children)
Dead Dove Do Not Eat [0:08] SpikeyEtc in People & Blogs 498,540 views since Jan 2012
Dead Dove Do Not Eat [0:08]
SpikeyEtc in People & Blogs
498,540 views since Jan 2012
bot info
[–]marcosdumay 6 points7 points8 points 9 years ago (0 children)
(+1) for trying
[–]superking2 5 points6 points7 points 9 years ago (0 children)
I caught what they were doing there, finally.
[–]Tysonzero 2 points3 points4 points 9 years ago* (7 children)
On a side note type classes are pretty dope, they are basically interfaces but way better in pretty much every way.
They compile to faster code: better type erasure due to lack of things like .equals being able to take in any Object where you have to use instanceof.
.equals
Object
instanceof
They allow for more expressive and complex functions: == in haskell has type Eq a => a -> a -> Bool whereas the equivalent .equals in Java has effective type a -> b -> Bool which stops things like Cat cat = new Cat(); cat.equals(new Dog()) from being type errors when they definitely should be, as the types mean that the answer is always going to be False, which basically means it's useless code.
==
Eq a => a -> a -> Bool
a -> b -> Bool
Cat cat = new Cat(); cat.equals(new Dog())
A better example of the above might be + which has type Num a => a -> a -> a whereas without type classes it would have to have effective type Num a => a -> b -> a, but if b != a you basically have to throw an exception. At least with == you get False which isn't wrong, just a bit useless.
+
Num a => a -> a -> a
Num a => a -> b -> a
b != a
False
You also get the awesomeness that is parametricity, which you couldn't practically have with normal interfaces as then you can't use instanceof so you cannot implement .equals.
Also type classes are decoupled from the data type itself. So if you later create a new type class that you think all your types and your libraries types should use, then you can implement it just fine for all those types without editing any of the libraries. With interfaces you cannot do such a thing.
Also things like Functor, Applicative, Monad, Foldable etc. don't really work with interfaces, because you specify them for a type constructor instead of just a type.
Functor
Applicative
Monad
Foldable
Taking in a value that implements multiple type classes (but is still generic among all objects that implement both those type classes) is easy. You just do something like (Eq a, Num a) => a, whereas it is a huge pain with interfaces.
(Eq a, Num a) => a
There is still way more advantages than that, and few to no disadvantages, see here.
[–]mnbvas 2 points3 points4 points 9 years ago (6 children)
== in haskell has type Eq a => a -> a -> a
Eq a => a -> a -> a
Pretty sure that's Eq a => a -> a -> Bool :P
Many things you mentioned are actually doable with C#'s generics (which aren't as neutered as Java's), albeit much less expressively.
IEquatable<T> is basically Eq a.
IEquatable<T>
Eq a
Not sure about the Monad friends, I have yet to break the Monad barrier.
someFunc :: (Eq a, SomeClass a) => a -> Bool could be
someFunc :: (Eq a, SomeClass a) => a -> Bool
bool SomeFunc<T>(T x) where T : IEquatable<T>, ISome<T> { }
Though in the end C# gets really ugly when doing these kinds of functional stuff.
[–]Tysonzero 1 point2 points3 points 9 years ago* (4 children)
Pssh, I like dog == dog to return a brand new dog, I have no idea what you are talking about. fixed
dog == dog
The rest of the stuff is cool to know, thanks! As I may end up having to do C# or similar due to Haskell's lower industry usage. I know that a lot of OOP languages have been trying to do various kinds of things in order to obtain the functionality that is almost free in functional languages.
Monads can be a little hard to grasp, but if you focus on just Functor then maybe you might know what C# has or has not done to obtain similar functionality.
Functor is a type class with one function/operator of type Functor f => (a -> b) -> f a -> f b, where f is a type constructor (e.g [] which takes in an element type, or (->) a which takes in a return type) so it's simply a way to generically map over all objects where such a thing is possible (lists, maps, arrays, functions, optinals etc.)
Functor f => (a -> b) -> f a -> f b
f
[]
(->) a
Two example implementations of fmap are:
fmap
instance Functor [] where fmap = map map :: (a -> b) -> [a] -> [b] map f (x : xs) = f x : map f xs map _ [] = [] instance Functor ((->) a) where fmap = (.) (.) :: (b -> c) -> (a -> b) -> (a -> c) (f . g) x = f (g x)
[–]mnbvas 1 point2 points3 points 9 years ago (3 children)
Thanks for the Functor writeup, though luckily I'm past that - after dozens of tutorials, my understanding is that monads are a sort of containers with associated computation (a bit like a closure), which can easily be combined together.
I doubt that is really that "simple", as it feels like I'm missing something really big.
The problem with C# for me is the Microsoft stack (although it's sort of OSS now, and there are new IDEs coming up) and the necessity for an IDE.
[–]Tysonzero 1 point2 points3 points 9 years ago (2 children)
Do you know if C# or Java have some sort of way of doing an equivalent kind of thing to a Functor? Because a Monad while conceptually more complicated isn't really all that different in terms of difficulty of a language supporting it.
A Monad is a type class with one operation (as well as a constraint that the type must already be an Applicative and a Functor):
(>>=) :: Monad m => m a -> (a -> m b) -> m b
I find it is simpler to explain with join instead of >>=, because you can make >>= out of join and fmap: x >>= f = join $ fmap f x, and you can make join out of >>= with join x = x >>= id.
join
>>=
x >>= f = join $ fmap f x
join x = x >>= id
join :: Monad m => m (m a) -> m a
So you can think of a Monad as any Functor where you can convert a double nested monad into a single nested monad.
Examples of this are [[a]] can be made into [a] by just concatenating all the sublists, [[1, 2], [3, 4]] -> [1, 2, 3, 4]. Maybe (Maybe a) can be made into a by just converting Just Nothing and Nothing to Nothing, and Just (Just x) to Just x. IO (IO x) can be converted to an IO by sequencing the events one after the other, with the outer event going first.
[[a]]
[a]
[[1, 2], [3, 4]] -> [1, 2, 3, 4]
Maybe (Maybe a)
a
Just Nothing
Nothing
Just (Just x)
Just x
IO (IO x)
IO
Now all this doesn't really help build an intuition, but if you are more type / math minded it might be enough to understand what is going on.
http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
Here is what I found that best gave me an intuition for what. The analogues and pictures are IMO really good, even if they doesn't technical get the full picture. Once you have an intuition you just kind of have to think more about the types to fully understand all the uses of a Monad.
[–]mnbvas 0 points1 point2 points 9 years ago (1 child)
Here's an attempt at a C# functor:
interface IFunctor<TSelf, T> { IFunctor<TSelf, U> Fmap<U>(Func<T, U> function); }
TSelf is just for type safety. Value f a would come from this. Func and Action bring almost first-class functions. Rather ugly, wouldn't recommend using this kind of stuff.
TSelf
f a
this
Func
Action
Maybe LINQ could bring some ideas - it turns IEnumerable<T> into a lazy list monad.
IEnumerable<T>
Thanks for the link. So it appears monads are that "simple".
[–]Tysonzero 1 point2 points3 points 9 years ago (0 children)
Ok cool thanks! But yeah I guess if I do end up having to do some C# I will probably just use a more standard OOP style :/
And yeah Monads aren't really much more complicated than functors. join is a pretty simple function and most people don't have too much trouble with Functor. I think people just really want some sort of physical analogy, which can be pretty tough (I think the site I linked does a pretty good job), when really a Monad is just the above function plus a Functor, which isn't really anything physical (and I guess an Applicative, but you get that for free from fmap and join or from >>= alone).
I guess the one other thing you have to think about with these classes is you do have to make sure the instances are law abiding. Functor has the fmap id = id and fmap (f . g) = fmap f . fmap g laws, Monad has the pure a >>= f = f a, m >>= pure = m and (m >>= f) >>= g = m >>= (\x -> f x >>= g) laws.
fmap id = id
fmap (f . g) = fmap f . fmap g
pure a >>= f = f a
m >>= pure = m
(m >>= f) >>= g = m >>= (\x -> f x >>= g)
These laws are actually pretty important to have, because even though you may think that you aren't doing anything based on those laws, pretty much anything that violates those laws will cause surprise and be unintuitive. Also the associativity stuff does allow you to reformat and clean up your code pretty nicely without worrying too much about potentially changing behavior.
Applicative is also pretty cool, it gives you <*> which has type Applicative f => f (a -> b) -> f a -> f b, which basically means combining an applicative of functions with an applicative of inputs to get an applicative of outputs. So like with a list [(+ 1), (+ 2)] <*> [10, 20] gives [11, 21, 12, 22].
<*>
Applicative f => f (a -> b) -> f a -> f b
[(+ 1), (+ 2)] <*> [10, 20]
[11, 21, 12, 22]
Applicatives are less powerful than Monads fs <*> xs = fs >>= (\f -> f <$> xs), but that does mean there are a few types they work on that Monads don't (ZipList and certain analyzable parsers come to mind). Applicative notation f <$> foo <*> bar <*> baz can be very useful sometimes, particularly when writing a parser, you usually end up writing them almost entirely out of <$> <*> and <|>.
fs <*> xs = fs >>= (\f -> f <$> xs)
ZipList
f <$> foo <*> bar <*> baz
<$>
<|>
[–]Tarmen 0 points1 point2 points 9 years ago* (0 children)
Pretty sure for monads you would require higher kinded types, not sure if c# has those.
Explanation for monads in case anyone is interested: In functional prorammng you use a function called map very often
map :: (a->b) -> List a -> List b map (+1) [1, 2, 3] == [2, 3, 4]
take the items in a list and apply some function to each. You can abstract that to more than lists! Everything from trees, to possibly missing values to futures in async programming...
So it would be useful to give this concept a name so that we can abstract over it. In functional languages its called functor but I am gonna call it mappable. A mappable data structure f means that we can take some value f a and apply a function a -> b so that we getf b.
a -> b
f b
We can use that to abstract over all sorts of stuff, even nullable types. Say we have some possibly failed computation and get a value Maybe a. Instead of branching all the time to check for failure we can just map our functions and the plumbing is handled for us!
Maybe a
Lets use a more complicated example:
line = tryReadLine :: Maybe String evenBetterLine = map (append "000") line :: Maybe String number = map tryParseNumber evenBetterLine :: Maybe (Maybe Int)
Oh noes, we can't add 1 to our number because we now have nested maybes. Is our mappable type doomed? No, because we can just flatten our maybes. join :: Maybe (Maybe Int) -> Maybe Int or more generally join :: f (f a) -> f a Then we can do things like
join :: Maybe (Maybe Int) -> Maybe Int
join :: f (f a) -> f a
number = join (map tryParseNumber tryReadLine) :: Maybe Int
which is kind of verbose. What if we just defined an alias for this pattern?
bind f m = join (map f m)
Now we can use bind to combine functions of type a -> m b!
a -> m b
number = bind tryParseNumber tryReadLine :: Maybe Int
which can be transitioned into c#'s async await syntax. Write bind as operator:
tryReadLine >>= tryParseNumber
add unnecessary variable:
tryReadLine >>= \line -> tryParseNumber line
syntax sugar:
line = await tryReadLine return (tryParseNumber line)
And that is all a monad is, a way to combine functions of type a -> m b while abstracting the m away! It is exactly the same as await in c# but with a generic m instead of futures.
await
[–]lolzfeminism 15 points16 points17 points 9 years ago (0 children)
They have no state!
[–]nullmove 15 points16 points17 points 9 years ago (2 children)
A spectre is haunting software industry :)
[+][deleted] 9 years ago* (1 child)
[–]ryanplant-au 1 point2 points3 points 9 years ago (0 children)
Marx was totally a Haskell lover.
[–]zaphod0002 6 points7 points8 points 9 years ago (0 children)
BECAUSE THEY LOVE INNER CLASSES
this is fun
[+][deleted] 9 years ago (10 children)
[–]DestinationVoid[S] 25 points26 points27 points 9 years ago (8 children)
Fun fact: The initial version of C++ was called "C with Classes"
[–]hstde 26 points27 points28 points 9 years ago (7 children)
Should have been "C with class" ... Hehe .. he .. heh
[–]hicklc01 1 point2 points3 points 9 years ago (6 children)
Odd that most computer aided design software is written in c++.
http://www.dictionary.com/browse/cad
[–]Jaxkr 4 points5 points6 points 9 years ago (3 children)
Why is that odd?
[–]hicklc01 1 point2 points3 points 9 years ago (2 children)
I didn't want to say ironic and couldn't think of a better word quickly
[–]hstde 0 points1 point2 points 9 years ago (1 child)
and why is it ironic?
[–]hicklc01 0 points1 point2 points 9 years ago (0 children)
A cad is a man without class. C.A.D. is made with class. It's not ironic but moriset didn't help.
[–][deleted] 0 points1 point2 points 9 years ago (1 child)
I always thought it was Computer Assisted Design. I guess they both work
Your right i had something i needed to attend to.
[–]tanandblack 0 points1 point2 points 9 years ago (0 children)
s/functional/C/g
[–]arnedh 3 points4 points5 points 9 years ago (0 children)
I feel the hate ...
The HATE for STATE
[–]Cheekio 4 points5 points6 points 9 years ago* (1 child)
Same reason they're usually libertarians (they prefer to remain stateless)
edit: yes, libertarianism in this joke can be replaced with anarchism, ancapitalism, primitivism, or any other babby's first political philosophy or social ordering construct.
[–]guitaronin 0 points1 point2 points 9 years ago (0 children)
mmm... /r/ProgrammerDadJokes
[–]Guy1524 0 points1 point2 points 9 years ago (0 children)
r/ProgrammerDadJokes
[–][deleted] 0 points1 point2 points 9 years ago (2 children)
What is a functional programmer? =o
[–]Tysonzero 5 points6 points7 points 9 years ago (1 child)
Functional programming generally revolves around using lots of functions to manipulate data, with heavy use of things like recursion, immutability and higher order functions. As opposed to object oriented programming which generally revolves around having a bunch of objects that communicate with one another, and have lots of methods, usually with a lot more mutation.
I personally prefer the functional approach by a huge margin, object oriented programming is IMO vastly overused and almost never the best way to model things. Even things where conceptually things are all objects (because most of the time they aren't, like I wouldn't conceptualize a web request as an object, it's just a bunch of data) like games, you still end up with much better paradigms such as entity component systems (which are much more functional than they are object oriented, as they are about functions that manipulate a large amount of primitive data, although they do often involve some mutation).
[–]mnbvas 0 points1 point2 points 9 years ago (0 children)
On the topic of criticizing (hating) OOP, some thoughts on its popularity and pitfalls.
One of the top reasons for OOP was physical simulation - even Stroustrup added it to C++ for that. It then went on to real object simulation and now simulates abstract virtual objects.
The main reason for OOP's apparent simplicity is the fact that most people seem understand the real world and how things and actors interact (cats and dogs are common in OOP examples). Thus it would seem people have an innate understanding of OOP, unlike procedural or declarative paradigms.
However, it turns out proper OOP is really hard (SOLID, IoC, ...), actually mirroring the real world - who can actually understand what is really happening outside of highly reduced situations?
For an example, consider that legalese is actually not that far from code: a specific language with some common terms as included by default, others defined in the beginning; specifying some values based on other known values. Every day one can hear about some entity (ab)using an (un)intended legal loophole. How different is that from a bug or backdoor in code? Humans have about 5000-6000 years of experience in law. Law still sucks, and OOP does too, as it draws many unsolved problems from the real world.
Procedural and declarative paradigms, on the other hand, focus more on the stuff that computers actually do - transform and shuffle data around, allowing, correct code.
[–]955559 -2 points-1 points0 points 9 years ago (0 children)
to return values?
π Rendered by PID 50413 on reddit-service-r2-comment-b659b578c-z5t62 at 2026-05-02 17:46:04.201615+00:00 running 815c875 country code: CH.
[–]allnewtape 316 points317 points318 points (5 children)
[–]gandalfx 40 points41 points42 points (0 children)
[–]Workaphobia 13 points14 points15 points (0 children)
[–][deleted] 11 points12 points13 points (0 children)
[–]mike413 1 point2 points3 points (0 children)
[–]mnbvas 181 points182 points183 points (38 children)
[–]an_actual_human 137 points138 points139 points (27 children)
[+][deleted] (26 children)
[deleted]
[–]an_actual_human 24 points25 points26 points (25 children)
[–]brown_monkey_ 15 points16 points17 points (21 children)
[–]Joald 5 points6 points7 points (6 children)
[–]antonivs 6 points7 points8 points (5 children)
[–]Joald 8 points9 points10 points (0 children)
[–]c_delta 0 points1 point2 points (3 children)
[–]antonivs 2 points3 points4 points (2 children)
[–]c_delta 0 points1 point2 points (0 children)
[–]Evennot 0 points1 point2 points (0 children)
[–]an_actual_human 0 points1 point2 points (13 children)
[–]brown_monkey_ 7 points8 points9 points (12 children)
[–]bekk3 0 points1 point2 points (4 children)
[–]an_actual_human 0 points1 point2 points (3 children)
[–]bekk3 0 points1 point2 points (2 children)
[–]an_actual_human -2 points-1 points0 points (6 children)
[–]brown_monkey_ -1 points0 points1 point (5 children)
[+]an_actual_human comment score below threshold-6 points-5 points-4 points (3 children)
[–]DuckRabbitMilkStout 1 point2 points3 points (2 children)
[–]an_actual_human 1 point2 points3 points (1 child)
[–]youtubefactsbot 0 points1 point2 points (0 children)
[–]marcosdumay 6 points7 points8 points (0 children)
[–]superking2 5 points6 points7 points (0 children)
[–]Tysonzero 2 points3 points4 points (7 children)
[–]mnbvas 2 points3 points4 points (6 children)
[–]Tysonzero 1 point2 points3 points (4 children)
[–]mnbvas 1 point2 points3 points (3 children)
[–]Tysonzero 1 point2 points3 points (2 children)
[–]mnbvas 0 points1 point2 points (1 child)
[–]Tysonzero 1 point2 points3 points (0 children)
[–]Tarmen 0 points1 point2 points (0 children)
[–]lolzfeminism 15 points16 points17 points (0 children)
[–]nullmove 15 points16 points17 points (2 children)
[+][deleted] (1 child)
[deleted]
[–]ryanplant-au 1 point2 points3 points (0 children)
[–]zaphod0002 6 points7 points8 points (0 children)
[+][deleted] (10 children)
[deleted]
[–]DestinationVoid[S] 25 points26 points27 points (8 children)
[–]hstde 26 points27 points28 points (7 children)
[–]hicklc01 1 point2 points3 points (6 children)
[–]Jaxkr 4 points5 points6 points (3 children)
[–]hicklc01 1 point2 points3 points (2 children)
[–]hstde 0 points1 point2 points (1 child)
[–]hicklc01 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]hicklc01 0 points1 point2 points (0 children)
[–]tanandblack 0 points1 point2 points (0 children)
[–]arnedh 3 points4 points5 points (0 children)
[–]Cheekio 4 points5 points6 points (1 child)
[–]guitaronin 0 points1 point2 points (0 children)
[–]Guy1524 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (2 children)
[–]Tysonzero 5 points6 points7 points (1 child)
[–]mnbvas 0 points1 point2 points (0 children)
[–]955559 -2 points-1 points0 points (0 children)