Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Shill for Haskell thread

Name: Anonymous 2015-06-05 13:39

Frederick's experiences echo that of many others who've taken the leap. All of these points echo our experience at fynder. Another couple of point to add (I'll add some more as I think of them):

You can get away with bad code at the periphery of your systems for longer. At fynder we had a pretty nasty data scraping and import utility that grew over time and became pretty unwieldy. However it still worked and was easy to change without breaking. It also fed data into a system that had a very strong guarantee of integrity so there was another line of defence. (I've seen /u/ryantrinkle say similar to this too)

You can go a long way with a small number great programmers laying out the types and the structure, with lesser able programmers "filling in the gaps" as they get up to speed. For example at fynder /u/ocharles came up with a great use of singleton types to make our socket.io communications safer [1]. Even though I could never come up with that from scratch, I was able to add to it and extend it quite happily after a 20 minute explanation (and some follow up questions).

You don't get either of those benefits with, say python, the language I use day to day at the moment. Once your python codebase loses a certain amount of cohesion, it's way harder to refactor your way out, and I think you end up staring down the barrel of a re-write a lot sooner. Equally there's no culture of common fundamental patterns (Functor, Applicative, Monad) that everyone understands so you can't really have a few rock stars implement the core of your system and people of lesser abilities code around the core. You end up having to code to the lowest common denominator whereas in Haskell you can program up to the strongest level more easily.

[1] https://ocharles.org.uk/talk.pdf

Name: Anonymous 2015-06-13 13:07

Introduction

My background is in quant finance, mostly writing C++, Python, and (shudder) Matlab. Over the last few months I've been learning Haskell, so as an excuse to learn some more Haskell, I decided to try to solve a fundamental quantitative finance problem in Haskell. Quant finance tends to love tangled OOP, so I figured a functional programming style might be a new twist on the problem.

I was trying to think of a good problem to start with, and I came up with the idea of a simple (but powerful) Monte Carlo engine for Haskell. With that in mind, I started to think about architecture. I'm going to write this up in a few posts, but my rough plan is:

Today's post: specification of contingent claims
Implementation of the Monte Carlo engine and underlying models
Odds and ends (implementation of simple yield curves, volatility surfaces, etc) and future plans

The target audience for this blog post is folks who know a bit of Haskell and are curious how it might apply to this particular problem.

http://boundedvariation.github.io/

Name: Anonymous 2015-06-13 21:16

>>40
I think the problem of the monads is the same as the main reason they are used: they make the computational context implicit, clouding what really goes on. This is much the same as the problem with Lisp macros having too much power. They make the code terse, not concise: it's short alright, but boy is it a pain to understand and maintain.

Basically, since monads are so plentiful and varied, you cannot tell by looking at a piece of monadic code what it really does. You don't know if there's implicit state, backwards state, nondeterminism, laziness, side effects, GOTOs or a million other things in there. You don't know what flavors of monadic coffee are running through the plumbing hidden from you in that monad. And you might just say "fuck it, you should've just written it out explicitly".

Name: Anonymous 2015-06-17 20:08


_/_/_/ _/ _/ _/_/_/ _/ _/ _/_/_/_/ _/_/ _/_/_/
_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/
_/_/ _/_/_/_/ _/ _/ _/ _/_/_/ _/ _/ _/_/_/
_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/
_/_/_/ _/ _/ _/_/_/ _/_/_/_/ _/_/_/_/ _/ _/_/ _/ _/


_/ _/ _/ _/ _/
_/ _/ _/_/_/ _/_/_/ _/ _/ _/_/ _/ _/
_/_/_/_/ _/ _/ _/_/ _/_/ _/_/_/_/ _/ _/
_/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
_/ _/ _/_/_/ _/_/_/ _/ _/ _/_/_/ _/ _/




Name: Anonymous 2015-06-17 20:24

What's a "shill"? I remember "shill jobs" in the Thieves Guild in Skyrim, they were about planting false evidence in people's houses. So are /prog/ shillers the ones who post illegal stuff to make the government shut it down?

Name: Anonymous 2015-06-17 20:44

>>44
Lolfuck, I was the one that first posted this back on ye olde /progge/. And here we are, months later on a different domain, and you repost it. Brilliant, my memelord friend!

Name: Anonymous 2015-06-17 21:02

>>45
Are you upset that people appreciate your quality posting?

Name: Anonymous 2015-06-17 22:38

Name: Anonymous 2015-06-18 12:18

>>47
Wow, this thread was a year ago.

Name: Anonymous 2015-06-18 16:49

>>47
No I didn't:

18 Name: Anonymous : 2014-05-30 10:39
>>17
Fucking spammer. Better get some kick-ass mods and start Fus-Ro-Dahing, surely it's more fun than spamming a board which no one reads.

Name: Anonymous 2015-06-18 16:52

>>49
So you didn't write ``
What's a "shill"? I remember "shill jobs" in the Thieves Guild in Skyrim, they were about planting false evidence in people's houses. So are /prog/ shillers the ones who post illegal stuff to make the government shut it down?''
after all, huh?
12 Name: Anonymous : 2014-05-30 07:22
>>11
It's good that you remember my posts. Though I'm going for the Dark Brotherhood now. Do me some killing instead of shilling, you know.

Name: Anonymous 2015-06-18 16:55

>>50
Fuck, you caught me.

Name: Anonymous 2015-06-18 16:59

If you killed Cicero you are a scum.

Name: Anonymous 2015-06-19 9:48

>>52
But I didn't. I let him live.

Name: Anonymous 2015-06-19 10:15

>>53
cos im just a tenage ditbag babi

ur mums name's noel

she inserts things into herself

Name: Anonymous 2015-06-19 14:29

check 'em boys

Name: Anonymous 2015-06-20 11:57

Haskell performance is hard. For example, this version of fibs doesn't use memoization:

fib n = fibs !! n
where
fibs = 1 : 1 : zipWith noisyAdd fibs (tail fibs)


while this one does:

fib = \n -> fibs !! n
where
fibs = 1 : 1 : zipWith noisyAdd fibs (tail fibs)


..but not if you turn on the {-# LANGUAGE NoMonomorphismRestriction #-} pragma. So you'll have to rewrite your fibs as

fib :: forall a. Int -> a -> (Integer, a)
fib = pairWithFib
where
pairWithFib :: Int -> a -> (Integer, a)
pairWithFib n x = (fibs !! n, x)

fibs :: [Integer]
fibs = 1 : 1 : zipWith noisyAdd fibs (tail fibs)


to get memoization. Holy fuck, all hail purity and lazy evaluation indeed.

http://gelisam.blogspot.ca/2015/06/will-it-memoize.html

Name: Anonymous 2015-06-20 12:04

Who cares? RAM is cheap nowadays.

Name: Anonymous 2015-06-20 13:40

Who cares? Petrol is cheap nowadays.

Name: Anonymous 2015-06-21 5:10

>>56
The first example got me because of Haskell's grammar. I couldn't tell if the where was inside the -> lambda or not. The others are strange...

Name: Anonymous 2015-06-21 5:23

>>59
let <foo> where <bar> is more or less equivalent to let <bar> in let <foo>, right?

Name: Anonymous 2015-06-21 7:55

>>17
le ad hominem image

Name: Anonymous 2015-06-21 10:40

>>61
No, le ad educationem image.

Name: Anonymous 2015-06-27 13:19

Haskell Haskell save us from the imperative hell!
Haskell Haskell save us from the imperative apes!
Haskell Haskell deliver us to the heaven of purity!

Name: Anonymous 2015-06-27 20:36

Kikebook: Fighting spam with Haskell

One of our weapons in the fight against spam, malware, and other abuse on Facebook is a system called Sigma. Its job is to proactively identify malicious actions on Facebook, such as spam, phishing attacks, posting links to malware, etc. Bad content detected by Sigma is removed automatically so that it doesn't show up in your News Feed.

We recently completed a two-year-long major redesign of Sigma, which involved replacing the in-house FXL language previously used to program Sigma with Haskell. The Haskell-powered Sigma now runs in production, serving more than one million requests per second.

https://code.facebook.com/posts/745068642270222/fighting-spam-with-haskell/?_fb_noscript=1

Name: Anonymous 2015-06-27 20:43

>>64
So Kikebook uncovered a performance bug in aeson, and in order to improve performance, the Haskeller had to use unsafePerformIO. Hooray for purity!

https://github.com/bos/aeson/commit/05c9e0cbbebc861303fc7dd6b3dfd03844490621

http://www.serpentine.com/blog/2015/05/13/sometimes-the-old-ways-are-the-best/

Name: Anonymous 2015-06-27 21:21

>>65
Check 'em

Name: Anonymous 2015-06-28 6:51

Haskell Haskell save us from the capitalist hell!
Haskell Haskell save us from the capitalist apes!
Haskell Haskell deliver us to the heaven of Communism!

Name: Anonymous 2015-06-28 8:56

U MENA HASKAL

Name: Anonymous 2015-06-28 11:41

I wrote an IO monad in Rust; its called Burrito. (https://github.com/withoutboats/burrito)

---

Is it correct to consider burritos a meme in the context of PL...

---

A meme is a self-replicating idea. The analogy of monads to burritos by Crockford at the height of the monadic analogy tutorials is indeed such a self-replicating idea.

An internet meme "is an activity, concept, catchphrase or piece of media which spreads, often as mimicry, from person to person via the Internet". It also fits this definition.

Name: Anonymous 2015-06-28 12:19

>>69
lol linkfail

Name: Anonymous 2015-06-28 12:22

>>70
More like MonadFail.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List