Haskell - You try to shoot yourself in the foot, but instead, a new foot appears in front of you that is identical to your own except that it has a bullet in it. Oh, and it's wrapped inside a burrito for some reason...
Violence.hs:5:35:
No instance for (Shootable BodyPart) arising from a use of 'shoot'
Possible fix: add an instance declaration for (Shootable BodyPart)
In the expression: shoot $ user ^. foot
In an equation for 'violence': violence user = shoot $ user ^. foot
You should abstract this; you realize bullets are group actions on the set of feet, right?
Edit: Sorry, not group actions, monoid actions. Group actions would mean there was some kind of inverse bullet. Also note that bullets aren't commutative.
Haskell—after spending a great deal of effort setting up various layers of foot-shooting-proof prophylactics you find yourself in a situation where the only reasonable way to start walking is to go ahead and shoot yourself in the foot anyway. You do so and are able to basically walk except somewhat awkwardly thanks to your now bleeding foot.
Then you go online and are helpfully told that what you really needed was a an abstract shoe, that bleeding feet are prone to infection and impurities, and if you had only read this one research paper there's a 2-liner in there showing you how to program Usain Bolt with wings.
You try to shoot yourself in the foot, but you realize the bullets are of the wrong type. After sawing the bullets to the right size, you attempt to lift your gun, but it takes too much space and blows up.
gun `shoot` foot
But there’s a side effect, so it doesn’t work. Try to use the state monad… get confused, so you write your own shooting monad, and then come up with this code:
gun >= id foot
but this puts your gun in your foot. Then you write your data types
data Space = Empty | Gun| Foot deriving (Show, Eq, Ord)
–if you’re right-handed, this code should work
shootFoot = foldr (shoot bullet) Empty $ enumFromTo Gun Foot
* You send a message to your hand process to shoot yourself in the foot.
* Hand process sends a message to the gun process.
* Gun process sends a message to the primer process.
* Primer process sends a message to the foot process, using the bullet to contain state.
* Bullet state is passed to the foot process,
* Foot process creates a copy of your foot that contains a hole, and sends a message to the leg process indicating that it should accept the replacement foot...
> There're so many guns to choose from that when you finally choose one, it's suddenly no longer cool to shoot yourself with it so you look for another one.
Well, first you have to pick a gun framework, then figure out how to $elect your gun in it. Then you update the Gun model and set a callback onFire, and wonder what the hell happened. Later, the callback shoots you in the back of the head.
Some classics there (there have been versions of this knocking around since at least the mid-90s and probably much earlier) but it's great to see some new ones.
Its rickety, it bends and moves when you use it, but no matter what it just keeps working. Although there have been new platforms to come out with superior technology, none can match its simplicity and ease of use, and because of this it has been used in more instances than any other. Hell, even a kid can operate it.