Live data from Hacker News

Running a startup on Haskell

bos.github.com

51–60 of 76 posts

Re: Running a startup on Haskell

#52
post #48

Earlier quoted context omitted.

It's a class in Haskell, not on Haskell.

That is great. In my school we only had a class with Ocaml, not quite as mind blowing since it didn't have lazy evaluation, monads, type classes, or any of the other crazy distinctive things in Haskell that don't exist in ML-style languages. Hopefully they cover the theory behind Haskell as much as the practical side of it.

ML's first-class modules let you achieve many of the same things as type classes. In fact, a lot of people in the Haskell community would like something a bit closer to ML (in other words, more powerful) in this regard.

Monads can be formulated in any language with first-class functions. Monadic I/O is more distinctively Haskellish, and of course Haskell has syntactic sugar to make using them easier, but as a tool and a concept they're far from unique to Haskell.

Re: Running a startup on Haskell

#53

Can anyone comment on the claim "QuickCheck is shockingly more effective at finding bugs than unit tests"? I'd be interested in hearing other opinions.

It tends to be best for mathematical code because you can quickly think of invariances.

In any situation where you can state a powerful invariance your code must always be consistent with it's both fast and thorough. The common example is that (= str (reverse (reverse sequences))) for all sequences.

Note that this only tests invertibility. There are lots of ways reversal can be broken without violating this invariance. It's just really easy to write down this invariance and use it to rapidly check gross violations.

Re: Running a startup on Haskell

#54
post #2

Hackers News is boring because of this type of post. What is the purpose of your link?

Did you know that that was a slideshow? You're seeing the title page, click on it to advance to the next page. repeat.

Except that, depending on your browser, it is impossible to navigate to the second slide. In opera mini, the slide itself is not clickable, there are no arrows visible, arrow keys are not available, and the "contents?" link points to a trunkated list starting at slide 15. I'd really like to read the presentation, but it is completely inaccessible.

Re: Running a startup on Haskell

#55
post #46
post #12

It is pretty disappointing that they decided to go with c# for the local client. This pretty much guarantees that it will not work on Linux.

C# lets you make very powerful UIs with very little work (thanks to WPF) which most importantly feel quite native. WPF is also the only widespread framework that I know of that lets you have pretty much any kind of control inside another control (well, other than HTML that is -- the problem with HTML is that you lose the native feeling). That being said Mono supports System.Windows.Forms (the poor predater to WPF) so…

> but then again who actually pays for Linux apps?

Despite this oft repeated statement, I have seen no evidence that Linux users don't pay for apps. The only thing saying it does is scare developers away from a perfectly good source of income.

Re: Running a startup on Haskell

#56

Can anyone comment on the claim "QuickCheck is shockingly more effective at finding bugs than unit tests"? I'd be interested in hearing other opinions.

It's essentially a unit-fuzzing framework, so it can find holes in boundary conditions people generally forget to check, because it's in their blind spot or because "nobody would ever do that".

QC does not care, and since it's injecting fuzzed data at the unit leve (~function, generally) it makes it quite easy to see precisely where the failure happens.

Re: Running a startup on Haskell

#57
post #46

Earlier quoted context omitted.

C# lets you make very powerful UIs with very little work (thanks to WPF) which most importantly feel quite native. WPF is also the only widespread framework that I know of that lets you have pretty much any kind of control inside another control (well, other than HTML that is -- the problem with HTML is that you lose the native feeling). That being said Mono supports System.Windows.Forms (the poor predater to WPF) so…

> but then again who actually pays for Linux apps? Despite this oft repeated statement, I have seen no evidence that Linux users don't pay for apps. The only thing saying it does is scare developers away from a perfectly good source of income.

It looks like he built an outlook extension. I don't know of any applications in the same cadre on Linux for which users pay. Oracle and RHEL itself are two examples where users pay for the software; I can't recall any other significant examples from the top of my head.

Re: Running a startup on Haskell

#58
I really like the idea of QuickCheck. Presumably it is -best- used in conjunction with unit testing. It seems to me though that it would be suitable mainly for numeric type code, given the random nature of the inputs?

Re: Running a startup on Haskell

#59

I really like the idea of QuickCheck. Presumably it is -best- used in conjunction with unit testing. It seems to me though that it would be suitable mainly for numeric type code, given the random nature of the inputs?

Remember that Haskell datatypes are very rich. QuickCheck will generate random instances of any datatype you define. Because Haskell datatypes are so expressive,. t's normal for Haskell programmers to define complex types for their functions to process. Hence you can easily get good coverage of any idiomatic Haskell code with QuickCheck.

If you're working in a datatype poor language, or simply one where the syntax makes defining complex datatypes painful then you're much more likely to pass around datatypes which are in implicitly defined. In this case you'll have to write a QuickCheck function to generate suitable instances in order to test your code. (This is also true for Haskell: there are often a few functions where you have to explain to QuickCheck how to generate appropriate test cases.)

Post reply on HN