It is very nice that people are trying to compare imperative and functional languages under measurements that mostly people are interested: lines of code and performance.
I just skimmed through the text and found some downsides, namely:
use of infinite list comprehension to replace a loop mutating three variables. Given that a list is a linked list, I tend to believe they’re comparing algorithms with different orders ( O(1) vs. O(n) ), although GHC possibly optimises it;
they do not provide the source code of the programs.
Still, I’m glad to see an effort to compare the implementations from a “standard programmer”.
Yeah I couldn’t tell how they implemented the haskell algorithms, so it was hard to deduce if the haskell was slower due to using improper constructs or not. It can be really easy to make things slow in haskell if you don’t understand the transformations behind things. Also hard to tell why its slow without a dump of the assembly.
I’m not a fan of papers that don’t provide source, doesn’t make any findings all that useful. Just looks like a filler paper if I can’t poke around.
It is very nice that people are trying to compare imperative and functional languages under measurements that mostly people are interested: lines of code and performance.
I just skimmed through the text and found some downsides, namely:
Still, I’m glad to see an effort to compare the implementations from a “standard programmer”.
It isn’t a problem if the structure has O(n) random access if you don’t access it randomly, i.e. recursion over a linked list is the same as looping.
Yeah I couldn’t tell how they implemented the haskell algorithms, so it was hard to deduce if the haskell was slower due to using improper constructs or not. It can be really easy to make things slow in haskell if you don’t understand the transformations behind things. Also hard to tell why its slow without a dump of the assembly.
I’m not a fan of papers that don’t provide source, doesn’t make any findings all that useful. Just looks like a filler paper if I can’t poke around.