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

Rich Hickey is mad!

Name: Anonymous 2013-06-20 20:39

Name: Anonymous 2013-06-20 20:51

Rich Kike

Name: Anonymous 2013-06-20 20:54

I always feel a bit dirty using Clojure, but everything else is dirtier.

Name: Anonymous 2013-06-20 21:00

And all these clojure.lang.* are implemented in Java, while SBCL for example implements everything using Lisp.

Clojure cant be self hosting.

Name: Anonymous 2013-06-21 0:26

Clojure is just Java without syntax and with a half-assed typing.

Name: Anonymous 2013-06-21 1:25

>>5
People's problem with java nowadays is the syntax
the virtual machine is pretty much top NOTCH

Name: Anonymous 2013-06-21 1:27

>>6
Fuckin' LOL'd. A VM that cannot into generics, TCO, first class functions etc is "top notch"?

Name: Anonymous 2013-06-21 1:37

>>7
Yes, it's second notch. I'd still use it because I can work around that.

Name: Anonymous 2013-06-21 11:48

>>5
Java's syntax is so unhelpful, that JVM is much better without it.

Name: Anonymous 2013-06-21 12:11

>>7
So what are your alternatives?

HASKAL? I don't believe you have Haskell job, enjoy your basement.

.Net? You have the choice of being either bound to Windows or being [i][o][u]SLOW AS FUCK[/i][/o][/i].

Common Lisp/Racket/Scheme? See: HASKAL.

FIOC/Ruby/PHP? That's a category mistake.

Face it: Clojure and Scala are your most realistic options at getting to use a decent language in industry today.

Name: Anonymous 2013-06-21 12:14

>>10
There are both Scheme and Common Lisp for JVM. No need for Clojure.

Name: Anonymous 2013-06-21 12:20

>>11
I know.

Name: Anonymous 2013-06-21 12:30

>>10
Shit, even pure C, C#, Ada are all better than that lisp shit or le Implicit-fucking-everything-ala.
And there are going to be jobs in Haskell soon. It's becoming more and more powerful day to day.

Name: Anonymous 2013-06-21 12:35

>>13

Haskell is very hard, but even after 3 years of pretty intensive use, I never really felt productive with haskell in the same way that I've felt in other languages. Anything I did in haskell required a lot of thinking up-front and tinkering in the REPL to make sure the types all agreed and it was rather time-consuming to assemble a selection of data types and functions that mapped adequately onto the problem I was trying to solve. More often than not, the result was something of an unsightly jumble that would take a long time to convert into nicer-looking code or to make an API less terrible to use.

Name: Anonymous 2013-06-21 12:38

>>13
If the language requires regular look at the table of priorities and deal with parsing in mind - this is not normal.

When the code is normally written (with redundant parentheses) all at once priorities are clear from the expression, at first sight, maximum readability. If there is no excessive braces - if you please remember priority parse the mind or (worst of all) even stretch to the guide. Why waste time on this, if you can put parentheses or spend? Unfortunately, the syntax of languages ​​with pereuslozhnennym stimulate just writing the code, which makes spending time instead of saving it.
Yeah, not so rare that it is more convenient not to put extra brackets. But it is not always. And instead, if the braces are put _mozhno_ them and do not ever give. On this side, I stick to simple logic - if some "feature" allows you to write better code more (sometimes omit brackets), but at the same time - it allows you to write very bad code (omit the large number of unnecessary parentheses), then this "Del.icio.us StumbleUpon Reddit" it is better to prohibit . Since this ensures us of the lack of very bad code. The usual minimax criterion.

What do you mean "us"? The standard library and many more functions are defined as infix operators, they just all "their". I say again, yes, the same $ is often very convenient, but when with a ram's obstinacy generally try to remove all brackets, which can only remove (a standard combinators, in principle, sufficient to remove ALL ALL), then the code is obtained fucked up. And if you wrote an apologist for point-free, it is not just a fucking one-liners pearl compared to this - a sample of readability.
There also is the way and the partial application - yes, it is often convenient (yes what dick - it is often convenient!), But when they begin to apply part of the standard features are not liby - it's fucked up again, I want to take and uebat. And then tear off his arms and shove primenyalschiku ass. Because in these cases, we have regularly watch this f-arguments and simply to understand what is what is used (after all brackets, recall, do not write the same fucking fuck it w SYNTACTIC TRASH, and on them even imagine something could be !).
As a result, good things are like a grenade in the hands of a monkey. And deny it - well, how to prevent direct memory operation.

Name: [Goldenbergerbaum] 2013-06-21 12:40

Name: Anonymous 2013-06-21 12:42

>>14
Scrub my toilet.

Name: Anonymous 2013-06-21 12:44

>>13
Meh, you just dislike dynamic typing. I can see why, I'd rather static typing anyway myself (but lol@putting C, Ada and C# in the same category).

And lookie, I'm rooting for Haskell. As soon as there are more Haskell jobs, I'll be all over them, really! But right now? There ain't. Enjoy your ASP.Net.

Or defense industry job, if you have the joy of using the most overlooked language in programming history; I bet the benefits are great.

But right now? It's hipster JVM languages or bust.

Name: Anonymous 2013-06-21 12:48

Haskell is the name handed down in the family. The name is an Americanized version of Chatskel, which derives from the Hebrew name, Ezekiel. For Eastern European Jews it would be Haskelovski, like most other Jewish surnames ending in "-ki" or "-ky" (i.e. Kozlovsky).

Name: Anonymous 2013-06-21 12:48

>>18
And everybody else went and chased static. And they've been doing it like crazy. And they've, in my opinion, reached the theoretical bounds of what they can deliver, and it has FAILED. These static type systems, they're WRONG. Wrong in the sense that when you try to do something, and they say: No, category theory doesn't allow that, because it's not elegant... Hey man: who's wrong? The person who's trying to write the program, or the type system?

Name: Anonymous 2013-06-21 12:50

>>20
Probably the scrub who can't get his shit to type check.

Name: Anonymous 2013-06-21 12:50

>>18
Haskell is annoying
- rich-syntax: impedes metaprogramming and complicates parsing for human and machine alike
- static-typing: impedes flexibility and complicates semantics for human and machine alike
- call-by-name: impedes reasoning about evaluation for human and machine alike
- auto currying: impedes handling of missing and superfluous arguments for human and machine alike

Name: Anonymous 2013-06-21 12:52

>>21
I mean when you are academic, it is like your papers are write only: you write your papers and there are very few people that read them - impact is very little; I felt like a vegetarian butcher, teaching software engineering, I've no clue what I was teaching about, because I never wrote a practical program, I never experienced how people really build software, so it really was theory and I didn't felt I was really teaching my students anything useful, that is how I came to work on Haskell. -- Erik Meijer, a major contributor to the functional programming language Haskell (http://www.youtube.com/watch?v=z0N1aZ6SnBk)

Name: Anonymous 2013-06-21 13:15

>>18
Dynamic typing is a pain for the programmer, the code maintainer, the compiler and the runtime. Don't know who in his sound mind would prefer writing anything over 500 LOC in dynamic trash.

Name: Anonymous 2013-06-21 13:17

>>22
impedes
impedo my anus

Name: Anonymous 2013-06-21 13:35

>>24
http://www.reddit.com/r/haskell/comments/da7w7/grempa_embedded_grammar_dsl_and_lalr_parser/c0yprcg
>Dynamic typing is only used internally, for example because the semantic action functions are put in an array indexing rule and production numbers (Ints) to functions, and they all have different types (and so can not be put in an ordinary array expecting the same type for each element). I know there are ways to do it using references into a typed environment, but from my experiments with it I felt it was too much work with little gain.


Next, translate the bit that says (pseudocode):

  if(attempt_file_open)
    if(attempt_file_read)
      process

That's it. No fancy, complex error messages. Just check the error
returns and only proceed if I have something to proceed with. Like
grown-ups do. I *will* check my error returns. I have tormented too
many newbies to *ever* consider doing anything else. If I cannot check
my error returns I will not write the program. This is production
programming 101, and I suspect that there's a real issue with
priorities between the traditional Haskell community and production
programmers.

So the time of madness began. I could find examples which did:

  if(attempt_file_open)
    attempt_file_read
    process

Which is useless. Other examples did:

  attempt_file_open
  if(attempt_file_read)
    process

Which is also useless. So I'm looking through the wxHaskell examples.
They're all contrived, using very high level functions to (for
example) read a complete image structure from a named file, which as
one function had one possible source of errors. I go back to scanning
and Googling like crazy. Eventually I notice a bit in "Yet Another
Haskell Tutorial" - page 65 - which introduces "bracket", immediately
explains that it is useless for my (very common) need, and refers the
reader to Section 10 - "Advanced Techniques". The author of this
excellent document hasn't yet written Section 10. I wonder why. I
pause to examine bracket some more. I really can't tell if the
"always" clause gets called if the initialization fails. From the use
with file opening it looks like it isn't (or the handle to be closed
would be invalid) but that wouldn't help if the initializer had two
steps, e.g. called socket(2) and bind(2). This is the kind of thing
good production programmers get really het up about.

I'm still grovelling through reams of stuff, trying to find out how to
open **and** read a file in a grown up way, and I find various programs
on haskell.org. There's an implementation of cat(1)! That's the thing!
A file concatenator must be able to open *and* read it's file. Eagerly
I download it. Curiously there doesn't seem to be any error handling.
I compile it and point it at a non-existent file. The program crashes.
Horribly. So much for Cat.hs. I feel glad I hadn't been able to cope
with the video of Simon Peyton-Jones OSCON talk, because the camera
operator kept filming his face while he's gesturing at the specific
line of code he's talking about with a pointer! After seeing Cat.hs do
essence of FAIL just opening a file, claims that Haskell could serve
as a scripting language suitable for the crew of the Black Pearl in
yonder corner to use would pain me.

Name: Anonymous 2013-06-21 14:11

>>26
So you want me to teach you how to do nested ifs in Haskell, or what?

Name: Anonymous 2013-06-21 14:13

>>22
But metaprogramming is overrated if you have a good syntax.

Name: Anonymous 2013-06-21 15:44

>>28
Ruby has both good syntax and meta programming.
Ruby made Lithp and Haxell obsolete.

Name: Anonymous 2013-06-21 16:06

>>27
Forget it. Nested ifs in Haskell are PhD-level topic.

Years ago, I wanted to write something in Haskell that worked like Clojure's memoize (which is implemented in a half-dozen or so lines of code in Clojure's core), and asked about it on the Haskell mailing list.  I was pointed to a PhD dissertation on the topic of how to write memoize in Haskell.  All I could think was, "Do I really want to be using a language where memoize is a PhD-level topic?"

Name: Anonymous 2013-06-21 16:09

>>26
IO operations in Haskell are a bit difficult because they need so called monads You would need a special do-notion here to sequence the outputs.
http://stackoverflow.com/questions/874168/nested-if-in-haskell

Name: Anonymous 2013-06-21 18:27

Rich Hickey
Richard Hickey
Dick Hickey
...sounds painful

Name: Anonymous 2013-06-21 18:35

Dickhard Kikey

Name: Anonymous 2013-06-21 18:55

Dickhard Richkike

Name: Anonymous 2013-06-21 20:49

Kike McKikey

Name: Anonymous 2013-06-21 21:23

I tried translating (if t (lambda (x) x) (lambda (x) (first x))) into Haskell, can't find a way to do it:
Prelude> (if True then (\x -> x) else (\x -> fst x))

<interactive>:1:36:
    Occurs check: cannot construct the infinite type: a = (a, b)
      Expected type: (a, b)
      Inferred type: a
    In the expression: fst x
    In the expression: (\ x -> fst x)

Name: Anonymous 2013-06-21 21:27

>>36
Typical answer to all kinds of Haskell errors is:
http://stackoverflow.com/questions/5529332/occurs-check-cannot-construct-the-infinite-type-a-a
"Think about lines one to five. What do you want to archieve? Your approach is very strange. I don't see through your code, but I think I have an idea about what you try to do. Try to give your functions type-signatures, then you will see wuickly, what's going wrong."


And this "cannot construct the infinite type" appears to be the Haskell version of "segmentation fault"

Name: Anonymous 2013-06-21 21:46

Why can't I create a stub function, returning just True?
Prelude> (\ -> True)

<interactive>:1:3: parse error on input `->'
Prelude>

Name: Anonymous 2013-06-22 2:09

>>36
Because type a is not the same as type (a, b), you numbskull.
>>37
See, that's the advantage of a robust type system: it helps you see your errors at compile time and points out where they are, instead of leaving you on a date with a runtime segfault.
>>38
Because any value is already a function without any parameters, no need for lambda syntax.

Fucking brainless lishp idiots.

Name: Anonymous 2013-06-22 2:50

>>39
Type a unifies with type (a,b). It's cars all the way down. Don't make excuses for haskell. It should be better.

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