With Haskell the process for me has repeatedly been: "okay I'm going to follow this tutorial...okay I need to install it...okay cabal is complaining about versions or exceptions....okay let's try stack....okay this example needs some includes...okay I don't have quite the right ver..."
Then 4 hours later I remember that I can't deploy any of this to my servers, give up, and go back to waiting for someone to make a sane "get started" bundle for an FP language.
Haskell's package management might exist - but it sucks, and I'll take go get/govendor over pretty much anything currently out there.
stack new my-project
cd my-project
stack build
stack test
stack exec my-project-exe
stack replYou can. Today. But leave that code in a repo for a month, and it will stop compiling, because some of your dependencies got updated.
Dependencies are simply package names. It just happens that names are actually meaningful and tell you where you, the developer can get the package. Using vendoring and/or Godep/glide, you then strictly version and manage your dependencies. `go build` doesn't just run `git clone` or something.
On any sensible package management system, as a user of the said package, I won't need to change anything.
I like the hackage/stackage model, too. As long as there is always some folks tending to those repos. But, the `go get` model is a fine workflow too.
Whereas in any sensible package management system the package names and versions will be unaffected by such changes.