Listly by Kim-Ee Yeoh
Every order of magnitude increase requires a new level of discipline. At 10^3 lines, you can do whatever you want -- all your function and variable names can be one or two letters, you don't need comments (or indeed any documentation), your functions don't need well-defined contracts because they only need to work in a few cases, etc. etc. At 10^4 lines, if you're smart you can still get away with making a mess, but it starts to become helpful to name things carefully, to add a few comments, to clear away dead code, to fuss a little over style and readability. At 10^5 lines, those things are not just helpful but necessary, and new things start to matter. It helps to think about your module boundaries and contracts more carefully. You need to minimize the preconditions of your contracts as much as practical -- meaning, make your functions handle all the corner cases you can -- because you can no longer mentally track all the restrictions and special cases. By 10^6 lines, architecture has become more important than coding. Clean interfaces are essential. Minimizing coupling is a major concern. It's easier to work on 10 10^5-line programs than one 10^6-line program, so the goal is to make the system behave, as much as possible, like a weakly interacting collection of subsystems.
I really don't see why so much effort is spent on infix syntax, precedence rules, fully-applied "$", etc. (not to mention the associated bikeshedding), all to remove the requirement of a few parentheses.
reddit: the front page of the internet
I have been learning Haskell for a while and I just put together these four little articles...
Everyone I evangelize Haskell to who has no experience with it always asks me how easily you can do full-stack web with it. I have to tell them...
reddit: the front page of the internet
Again the new release of ghcjs; remastered with newer packages and new Cabal-1.24.0.0! Before installing using stack
make sure you `stack...
monad transformer tutorial
I wonder how readable is to someone who isn't experienced in Haskell. To me reads like a breeze, but I have a project using the exact same parsing library so maybe that puts me at an advantage.
I'm not a Haskell greybeard, just a light user, but despite the improvements via FPComplete's output, at least some of it feels NIH and unnecessarily polarizes the community. For instance, reusing Shake in Cabal(-install) and getting nix-local-build and Backpack production ready look like improvements that will be beneficial for a longer time, rather than splitting the community with a different build/package structure (stack).
This might very well be a dumb question, but I'm struggling to see why this extremely simple program seems to naturally scale to and consume all...
I'm apprehensive about posting a metatopic here, but I heard a theory today that's been on my mind, and I'm not sure it's correct, but it does...
Besides that, your "fast" code will not be as fast as it can be if you are only relying on purely functional code, at least on current architectures.
quotable quote
That's why HN prefers source material, not blogspam stuff like this which adds nothing new and often removes possibly useful information.
reddit: the front page of the internet
FWIW, I prefer to think of the two stages as "syntax expansion" and "evaluation", and not "compile time" and "run time". Compilation and running are loaded terms that don't appropriately capture the totality of situations where this behaviour applies, in Scheme.