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

Haskell is cancer.

Name: Anonymous 2015-09-29 4:32

The Haskell culture has long ago started to influence development of programming languages.

Today mainstream languages are becoming more shit due to Haskell.

I fear for the future.

Name: Anonymous 2015-09-30 0:28

>>11
Yup, I drank the kool-aid as a late teen. Hindsight is 20/20. I had no real reason to persist Haskell after about a year because I've internalized the important concepts. Perhaps, it something to do with being my first functional language because I kept doing it for a couple more years. I had hope the ecosystem would drastically improve, functional purity wouldn't shoot itself in the foot, and lazy-eval would stop driving me crazy. The current FRP libraries are the only thing which retained my interests. It's certainly not going to save the rest of the ecosystem though, and my interest will eventually fade.
It's ironic what's touted as Haskell's unique strengths (type-system, functional-purity, and lazy-eval) restrains its ecosystem.

At least for the type-system and functional-purity, I believe it's worth learning up until typeclassopedia and transformers are internalized. The language acted like training wheels for me. It kept me from falling over so I can learn how to ride a bike. Yet, it was neither enough to keep me from crashing into things nor practical enough to race with. The wheels began to hold me back.

Yeah, the names are confusing and 'math-based.' However design-patterns or not, abstractions are a central part of programming. I posted something along these lines before. Typeclasses are basically adjectives pretending to be nouns. They aren't necessary because you can replace them with the intended noun. They're pretty simple actually, so I wouldn't go as far to say functors, applicatives, and monads are design-patterns. There's not enough weight for them to be at that level. Once you head into lens territory or other do-it-all libraries like yesod, the bull-shit comes out. It's surprising for a purely functional language how rare simple libraries exist on hackage. There's another monad transformer in almost every package.

Name: Anonymous 2015-09-30 3:02

>>13
Do you have a recommendation?

Name: Anonymous 2015-09-30 6:10

>>14

First, I want to say knowing a Lisp is a must. You won't ever use a language with as much expressiveness per pound. Macros really captures the bare essence of Computer Science.

Second, most algorithms tend to be optimizations of searching and/or sorting. Don't forget basic data structures either. This shit never changes.

Learn the main programming paradigms (functional, procedural, logic, oop, static/dynamic typing, weak/strong typing).

While Scheme is the most elegant lisp, Common Lisp will satisfactorily cover all of those paradigms except for weak and static typing. Fortunately, those can be covered by C which you should learn anyways.
If you have more time, I'd suggest learning languages which specialize in particular paradigms to certain extremes. Haskell = (functional, static, strong), Prolog = (logic), and the bonus Erlang = (oop, distributive). And to be completely honest, there really isn't a righteous path. Just-fucking-do-it should be the philosophy. There will be a lot of overlap anyways, so it hurts more to deliberate than to act.
If you have even more time, learn many different languages until you can nitpick them all.

There's really two 'practical' foundational things I can say for certain:

1) Learn the Linux's and POSIX's APIs (man7.org/tlpi). Of course that implies knowing C and assuming you mostly interact with Linux (because it's been eating the world). Now, C. C gets so many things right that it's portable enough, low-level enough, and flexible enough for the future hardware. I honestly can't see Linux nor C going away anytime soon. Neither C++ nor Rust can replace it. I believe the biggest break away will be through with chemical computers. The benefit of knowing these APIs exposes that virtually every language essentially piggy-backs off the same API. Some languages like python and lisp will even give you a way to pipe data through. They almost appear like pseudo-code for C.

2) Learn JavaScript for the browser. And don't learn your favorite transpiled language quite yet. I know people like to shit on JavaScript because it's not a lisp or not statically typed. Some will even go as far to pretend the browser isn't a legit platform to be taken seriously. Even with its quirks, JavaScript isn't close to a horrible monster. It's also here to stay. Aside from the lisp dialects, it's one of the best dynamic languages I can suggest. From that alone, I suggest know it. It's such a wacky, hacky language that I've grown to love it.
Learning jQuery or whatever-framework-of-the-month isn't so important. You can ignore all that shit. You'll want to check out HTML5 canvas and WebGL though.

With a proficiency of the paradigms and latter these things, it would be nearly impossible to trap youself in a corner.

Once you've narrowed yourself down to your domain(s), do as the Romans do. At worst, you can always pretend you're using some wonky looking lisp macro.

Name: Anonymous 2015-09-30 6:13

It's also here to stay. From that alone, I suggest knowing it***

Name: Anonymous 2015-09-30 7:16

>>15
Who the fuck are you and what did you do with >>13-san?

Name: Anonymous 2015-09-30 8:02

what do i need to learn to hack the gibson

Name: Anonymous 2015-09-30 13:42

>>17
I am >>7, >>13, and >>15.

Name: Anonymous 2015-09-30 14:35

>>15
C
JavaScript
I don't know whether to vomit or applaud you for your trolling skills.

Name: Anonymous 2015-09-30 15:52

>>19
IHBT then.

Name: Anonymous 2015-09-30 16:02

>>20
the real trolling here is C = good example of static typing and erlang = oop

Name: Anonymous 2015-09-30 16:12

>>22
C = good example of static typing
As well as everything else >>15 wrote about C.

Name: Anonymous 2015-09-30 16:47

>>20-23
Yeah, C and JavaScript aren't the choice language for enlightenment. I didn't attempt to imply that. However, reality persists the world ultimately runs on them. Honestly, this is no different than saying to learn assembly decades ago. And with given time constraints, Common-Lisp and C will cover most paradigms. Otherwise, learn the specialized languages. "Heresy!"

* Learn the paradigms.
* Learn the platforms.
* Go do whatever you what.

Is that really trolling?

Name: Anonymous 2015-09-30 17:24

>>23
In fairness C does have weak-ass typing. Not that you should want that. When I was learning C I was frustrated by how weak the types were, and I didn't even have the vocabulary to say as much.

>>24
The question was about where to go from Haskell, so your answer was off base. It's understandable, the question was terse.

But your answer was full of shit. Yes, C and ES are essential in a working programmer, jack-of-all-trades, practical use scenario. Lisp isn't though, and it won't teach you all the paradigms. Having them all right there means you can avoid learning any of them deeply, which would be great in practical terms if CL was half as popular as Perl.

Besides that, you speak nonsense about many of the languages you mention, as though you've heard of them and paid just enough attention to them to file them into neat little boxes, like people who say "use Go for concurrency" followed by a long list of programming languages they haven't used, designated to tasks they have no experience in.

Name: Anonymous 2015-09-30 17:59

>>25
fuckin loser mad that cl completely destroys ur perl and lua and all you need is c and cl nigger

Name: Anonymous 2015-09-30 18:06

>>26
Why so triggered?

Name: Anonymous 2015-09-30 18:28

>>25
Lisp is entirely what you make of it which makes it a double-edge sword. If you believe you can't use it adequately to learn paradigms because the lack of rigidness, I won't argue with that. That just might be a personality thing. To stretch my point a bit, it's a trope that people won't even try lisp because the parens scare them. I never had that problem, but it was still confusing at first. Not liking a syntax is one thing, but refusing to try it... If you can't overcome something trivial as syntax, I think you have bigger problems. That's the kind of stuff that washes over time. Good luck expanding to other concepts.

My answer wasn't BS. I really know all of those languages I mentioned (C, C++, Common-Lisp, Erlang, Haskell, Prolog, Python, Rust, Scheme) and then some. I guess that's the answer to your intended question. Where did I go from Haskell? I learned dozens of languages because I didn't _want_ to be constrained by an ecosystem ever again. Throughout this experience, I keep itching to use the equivalent of lisp macros. It's the most versatile language feature. That's the only reason I hold Lisp to a higher regard.

Name: Anonymous 2015-09-30 21:13

>>28
On the subject of accepting off-putting syntax and making good use of everything a language has to offer, why recommend Lisp at all when JS lets you express the same paradigms and has better industry penetration? Sure, the language is a pile of dung and I wouldn't recommend it, but your arguments seem to support it. Obviously something is missing.

My point was CL won't teach you much of anything in particular. Scheme will at least force you to learn some things better because there are fewer ways out.

My answer wasn't BS. I really know all of those languages I mentioned

You said Erlang was an OOP language which is not a thing said by anyone who can tell their head from their ass. I don't think you know more than one or two of those languages very well, if any.

Name: Anonymous 2015-09-30 21:16

>>29
What will teach you more, a barbie doll or playdough?

Name: Anonymous 2015-09-30 21:32

>>30
legos

Name: Anonymous 2015-09-30 22:34

Haskell is toy handcuffs tbh.

Name: Anonymous 2015-09-30 22:45

>>29
JavaScript doesn't have macros.

Perhaps, your idea of OO is skewed because Erlang is an excellent example on how to do OOP.

An excerpt:
Is Erlang object oriented?
The 3 things that object oriented programming has it's messaging, which is possibly the most important thing. The next thing is isolation and that's what I talked about earlier, that my program shouldn't crash your program, if the 2 things are isolated, then any mistakes I make in my program will not crash your program. This is certainly not true with Java. You cannot take 2 Java applications, bung them in the JVM and one of them still halts the machine and the other one will halt as well. You can crash somebody else's application, so they are not isolated.
The third thing you want is polymorphism. Polymorphism is especially regarding messaging, that's just there for the programmer's convenience. It's very nice to have for all objects or all processes or whatever you call them, to have a printMe method - "Go print yourself" and then they print themselves. That's because the programmers, if they all got different names, the programmer is never going to remember this, so it's a polymorphism. It just means "OK, all objects have a printMe method. All objects have a what's your size method or introspection method."
Erlang has got all these things. It's got isolation, it's got polymorphism and it's got pure messaging. From that point of view, we might say it's the only object oriented language and perhaps I was a bit premature in saying that object oriented languages are about. You can try it and see it for yourself.
-Joe Armstrong, co-creator of Erlang [1]

I'd say I know about 8 languages comparing well with other power users and the rest (16) at various ranges. I've been programming for about a decade starting with C, so it's not an inconceivable feat. Learning a new language is like learning a library, and learning its ecosystem is like learning a framework.

[1] http://www.infoq.com/interviews/johnson-armstrong-oop

Name: Anonymous 2015-09-30 22:55

It's too bad some people here think >>15 was trolling.

It turns out that the Sapir-Whorf hypothesis is garbage and it doesn't matter what language you use, as long as it lets you communicate and you know how to use it well. C and JS are English. Haskell is Lojban.

There is still (marginal) room for improvement on top of C (e.g. Jai), but because of the math-envy that has infected programming culture, almost every new language is going to be garbage for a long time. Too bad.

Name: Anonymous 2015-10-01 0:36

>>33
Alan Kay, the fucking inventor of the term, also emphasizes that it's about objects sending messages to each other, and that Java is not what he meant by OO. It's called "object oriented" and not "class oriented" for a reason.

Name: Anonymous 2015-10-01 1:04

>>35
And if you actually used Erlang, you'd already know it's all about message passing. I should have pasted all the paragraphs in that link because your mouse is broken. He paraphrases Kay the same way. You're only agreeing Erlang does OO.

Ralph Johnson, Joe Armstrong on the State of OOP
Interview with Ralph Johnson, Joe Armstrong by Werner Schuster on Jul 08, 2010
http://www.infoq.com/interviews/johnson-armstrong-oop

Is Erlang object oriented?

Joe Armstrong: Smalltalk got a lot of the things right. So if your question is about what I think about object oriented programming, I sort of changed my mind over that. I wrote a an article, a blog thing, years ago - Why object oriented programming is silly. I mainly wanted to provoke people with it. They had a quite interesting response to that and I managed to annoy a lot of people, which was part of the intention actually. I started wondering about what object oriented programming was and I thought Erlang wasn't object oriented, it was a functional programming language.

Then, my thesis supervisor said "But you're wrong, Erlang is extremely object oriented". He said object oriented languages aren't object oriented. I might think, though I'm not quite sure if I believe this or not, but Erlang might be the only object oriented language because the 3 tenets of object oriented programming are that it's based on message passing, that you have isolation between objects and have polymorphism.

Alan Kay himself wrote this famous thing and said "The notion of object oriented programming is completely misunderstood. It's not about objects and classes, it's all about messages". He wrote that and he said that the initial reaction to object oriented programming was to overemphasize the classes and methods and under emphasize the messages and if we talk much more about messages then it would be a lot nicer. The original Smalltalk was always talking about objects and you sent messages to them and they responded by sending messages back.

But you don't really do that and you don't really have isolation which is one of the problems. Dan Ingalls said yesterday (I thought it was very nice) about messaging that once you got messaging, you don't have to care where the message came from. You don't really have to care, the runtime system has to organize the delivery of the message, we don't have to care about how it's processed. It sort of decouples the sender and the receiver in this kind of mutual way. That's why I love messaging.

The 3 things that object oriented programming has it's messaging, which is possibly the most important thing. The next thing is isolation and that's what I talked about earlier, that my program shouldn't crash your program, if the 2 things are isolated, then any mistakes I make in my program will not crash your program. This is certainly not true with Java. You cannot take 2 Java applications, bung them in the JVM and one of them still halts the machine and the other one will halt as well. You can crash somebody else's application, so they are not isolated.

The third thing you want is polymorphism. Polymorphism is especially regarding messaging, that's just there for the programmer's convenience. It's very nice to have for all objects or all processes or whatever you call them, to have a printMe method - "Go print yourself" and then they print themselves. That's because the programmers, if they all got different names, the programmer is never going to remember this, so it's a polymorphism. It just means "OK, all objects have a printMe method. All objects have a what's your size method or introspection method."

Erlang has got all these things. It's got isolation, it's got polymorphism and it's got pure messaging. From that point of view, we might say it's the only object oriented language and perhaps I was a bit premature in saying that object oriented languages are about. You can try it and see it for yourself.

Ralph Johnson: The thing about Erlang is that it's in some sense 2 languages, at least you program it 2 levels because one is the functional language that you use to write a single process and then there is what you think about all these processes and how do they interact, one process is sending messages to the other. At a higher level, that Erlang is object oriented, at the lowest level it's a pure functional language and that's how it got advertised for a long time.

At a higher level, when you are looking at it more from an architectural and high level design it is quite object oriented. I think you are redefining isolationism. It's all running on one computer and if one process goes wild, it hogs the processor. I think they look more like the importance of garbage collection so that you don't have to make sure that you agree on how you're releasing things. The only way in Smalltalk to interact with an object is send it a message, but the issue is what message do you have. It's the same thing in Erlang.

If you allow a huge number of messages that allow, return all the values of your local variables and that everybody's send you messages and you'll set the values of your local messages, if you did something like that, you'd basically lose a lot of the value of the isolationism. That's why you have to design things properly. The language offers some mechanism.

Joe Armstrong: It's useful when we've got million core computers.

Name: Anonymous 2015-10-01 1:40

Erlang does facilitate object oriented programming in the large but it lacks a meta object protocol i.e. a vocabulary and set of conventions for objects to communicate *about* themselves - what am I? where did I come from? what does it mean to be an object? etc.

Also, by it's own definition, not everything in Erlang is an object - only processes are.

It is very cool how Erlang doesn't impose a synchronous execution order and with it message delivery guarantees like other object systems.

Asynchronous Smalltalk would be super object oriented. I heard Smalltalk 70 was like this, but have never used it.

Name: Anonymous 2015-10-01 1:42

But you can't write an Erlang program in terms of only messages.

Name: Anonymous 2015-10-01 2:10

>>38
Why are Haskell programmers like you so stupid?

Name: Anonymous 2015-10-01 2:41

>>39
You're zero for two on that one.

Name: Anonymous 2015-10-01 9:19

>>38
bitemyapp please leave

Name: Anonymous 2015-10-03 16:42

Haskell is more than just a programming language; it is a Lens through which we can see the future.

Name: Anonymous 2015-10-03 16:54

Haskell is the JavaScript to Miranda's Self.

Name: Anonymous 2015-10-03 18:05

dubs

Name: Anonymous 2015-10-03 19:11

>>43
wwwww

Name: Anonymous 2015-10-03 19:17

>>45
88888888888888888888888888888

Name: Anonymous 2015-10-03 19:17

orz

Name: Anonymous 2015-10-03 20:25

88

Name: Anonymous 2015-10-04 5:20

>>44
≡≡彡
彡 ´_)` ) more like duds, sorry mate

Name: Anonymous 2015-10-05 22:37

Haskell reminds me of early Unix. They gave the source code away and taught it in universities and that's how it became popular.

Expect a Haskell Hater's Handbook if it ever reaches the Java level of popularity.

Name: Anonymous 2015-10-05 22:54

>>50
That'll show 'em.

Name: Anonymous 2015-10-08 20:31

I think the proliferation of monads has something to do with this.

Name: Anonymous 2015-10-08 22:16

ovaries

Name: Anonymous 2015-10-08 23:12

*movaries

Name: Anonymous 2015-10-08 23:44

The proliferation of monads will achieve world peace through Monadly Assured Destruction.

The first state to evaluate will be obliterated by the return operation.

Name: Anonymous 2015-10-09 3:13

The first state to evaluate will be obliterated by the return operation.

literally satori

Name: Anonymous 2015-10-09 3:14

>>1
you've never even had cancer you skinny little bitch

the closest you've had to cancer, shlomifish, was getting fucked in the ass by a tranny

Name: Anonymous 2015-10-09 4:14

>>57
Cancer is too harsh.
I think a comparison with dog shit is more accurate.

Name: Anonymous 2015-10-09 7:04

>>58
A dead one?

Name: Anonymous 2015-10-09 22:43

>>59
A smelly one.

Name: Anonymous 2015-10-10 13:52

>>9
Remove yourself, imperative ape.

Name: Anonymous 2015-10-10 18:32

>>61
Still mad that you got BTFO by Java?

Name: Anonymous 2015-10-10 19:51

>>62
No, I'm not mad about things happening in your dreams.

Name: Anonymous 2015-10-15 17:44

Haskell is snake oil.

Name: Anonymous 2015-10-16 10:48

We need to get computers to do more (or even the same), but by telling them less.

Expanding programming languages to force the user to dump more info into it is exactly backwards. Computers are effectively getting dumber as a result.

Name: Anonymous 2015-10-16 22:57

>>65
How do you measure machine intelligence?

Name: Anonymous 2015-10-16 23:05

>>66
by the amount of the combined length of all nigger dicks to ever exist they can comprehend.

Name: Anonymous 2015-10-29 3:12

Haskell is turdware.

Name: Anonymous 2015-10-29 18:06

Haskell is a girl!

Name: Anonymous 2015-10-29 18:25

Haskell is a dead dog!

Name: Anonymous 2015-10-29 20:10

LOL look at those Haskell idiots and laugh. They can't even keep track of what is a list and what is a tuple, so instead of

length ('a', 'b')

they propose

safeLength (Proxy :: Proxy [Char]) ('a', 'b')

all of that to fucking make sure that they don't call length on a tuple. Nice save, Haskell! I feel so safe knowing that I'll never confuse a list with a tuple. I mean, that's the hardest to spot and most devious error every programmer makes, a real codebase-killer that one.

https://github.com/stepcut/safe-length

Name: Anonymous 2015-10-29 20:15

Before, if you accidentally wrote:

main :: IO ()
main = print $ length ('a', 'b')

you would get:

*Main> main
1


haskell niggers retards make length have a different type than [a] -> Int? I feel like Terry Davis right now.

Name: Anonymous 2015-10-29 20:24

The retarded "commercial humour" doesn't help to make this any less retarded either.

Name: Anonymous 2015-10-29 20:27

>>71-73
pretty sure it's satire

Name: Anonymous 2015-10-29 20:33

>>74
It is.
(careful, bytemyapp and dibblego inside: https://twitter.com/headinthebox/status/655722027685400576 )

Name: Anonymous 2015-10-29 20:37

>>75
So funny how they have to split their posts into about 10 tweets and clutter them with the @bullshit @things. Who in their right mind would use a textboard with a 140 symbol limit? With half the screen width wasted, too. Why are reasonable grown men using an obviously inferior web service and not leaving for more appropriate communication venues? Why is Twitter even a thing? It's shit yet everyone makes it a point to squash their own balls into this 140-symbol blender?

Name: Anonymous 2015-10-29 21:04

>>76
We know, guy. Just deal with it.

Name: Anonymous 2015-10-29 21:23

this bitemyapp guy must be a mentally ill narcissist.

do you think he does a lot of cocaine? he probably thought he was actually talking to someone during that 20 tweet soliloquy

http://imgur.com/sibCie6

Name: Anonymous 2015-10-29 22:35

Why do Haskellers use a website made to broadcast text messages as a blogging platform to write essays?

Name: Anonymous 2015-10-30 0:25

>>79
They use a library made for mental masturbation as a platform to write programs, so it isn't too far off.

Name: Anonymous 2015-10-30 1:22

Name: Anonymous 2015-10-30 10:42

>>78
fucking hell, who is the egg man he's ranting to?

Name: Anonymous 2015-10-30 11:41

>>82
That's Erik Meijer, he's awesome and has a great taste in shirts!

Name: Anonymous 2015-10-31 12:39

>>83
No he's not awesome. He was an ivory tower academic who helped make Haskell, then ran away to teach "functional programming" to PHP monkeys.

Name: Anonymous 2015-10-31 12:41

>>81
for each module, we have three variants
Actually, 4 variants. http://stackoverflow.com/questions/4858585/why-is-ghc-so-large-big

1) static
2) dynamic
3) profiled
4) GHCi

Name: Anonymous 2015-10-31 14:03

>>84
Ivory tower academics generally don't make stuff like LINQ.

Name: Anonymous 2015-10-31 14:08

>>86
They make exactly this kind of stuff. LINQ is monads adapted for C#.

Name: Anonymous 2015-10-31 14:09

>>86
Besides, he's directly admitted that he had no idea of how programs are constructed back when he was working on Haskell.

Name: Anonymous 2015-10-31 14:38

>>86
pretty sure wadler does work on LINQ and similar

Name: Anonymous 2015-10-31 15:05

>>89
Pretty sure you should use correct spelling and punctuation.

Name: Anonymous 2015-10-31 16:32

>>90
fuck off back to ##c zhivago you tiny man

Name: Anonymous 2015-10-31 17:21

This new generation of Haskell loudmouths is terrible.

Name: Anonymous 2015-10-31 20:30

Not to worry, cancer will cure itself.

Name: Anonymous 2015-11-04 15:16

That cancer infected Rust. Rust guys think returning an error code is better than exceptions. They never learned that "exception" encompasses more than just the Java/C++/Haskell meaning.

Name: Anonymous 2015-11-04 15:24

>>94
Because it doesn't.

Name: Anonymous 2015-11-04 16:17

>>95
exceptions are a control flow effect m8

Name: Anonymous 2015-11-04 19:29

>>94-96
Exceptions are a specialisation of continuations. Seeing as continuations are neither first- nor second-class constructs in Rust, there is absolutely no reason for them to exist in the specification, nor as an awkward special case in the semantics of a program. Especially considering how it would buttrape any and all nice properties of the linear type system.

Name: Anonymous 2015-11-04 20:55

>>97
That's because rust is shit.

Name: Anonymous 2015-11-04 21:25

>>97
Wait, Rust doesn't have GOTO? Not even in unsafe blocks?

Name: Anonymous 2015-11-04 21:42

>>99
Not that I mentioned that, but why would it need it?

Name: Anonymous 2015-11-04 22:27

>>99
You want goto but you're too pussy to use an asm block?

Name: Anonymous 2015-11-04 23:25

>>100
To not look like Java, where you have to set three hundred flags and check them all the time just to figure out the place you need to unwind from, or draw up in an entire exception hierarchy specification to do it.

Name: Anonymous 2015-11-06 8:38

>>100
You did mention GOTO, though, right here:
continuations

Name: Anonymous 2016-11-01 19:00

same

Name: Anonymous 2016-11-01 20:01

What's with all the anti-Haskell shills lately?

Name: Anonymous 2016-11-01 20:10

>>97
no it wouldn't, one-shot delimited continuations fit into a linear type paradigm just fine.

Name: Anonymous 2016-11-01 23:38

>>78
I cringed pretty hard reading this volley of bite my app tweets

Name: Anonymous 2016-11-04 1:53

WARNING! TRIPS INCOMING !!

Name: Anonymous 2016-11-04 9:09

>>107
He is a real leftist and progressive of the programming industry. I wonder if he uses the Non-White Heterosexual license on his code, and preaches "social justice" and "inclusion".

Name: Anonymous 2016-11-04 9:13

trips incoming

Name: Anonymous 2016-11-04 9:14

check trips

Name: Anonymous 2016-11-04 10:31

>>111
nice trips!!!

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