School of Haskell: Basics (2013)
schoolofhaskell.com
schoolofhaskell.com
- Intro video demoing how to build apps with IHP: https://www.youtube.com/watch?v=UbDtS_mUMpI
- Docs to get started: https://ihp.digitallyinduced.com/Guide/index.html
- IHP reviews: https://www.g2.com/products/ihp/reviews
The guide said it takes 15 minutes to build initially...it took my laptop 1 1/2 hours. And I didn't use cachix (no idea what it was, didn't want it to mess with my system) so after a nix-gc I had to build again...
And the pro version costs $300/year, and goes up to $1500/year if you make $20k. That might be good for a huge company, but if that's a side project or a solo dev's income, that's way too expensive.
Both of those things are scary and dangerous. I don't know what your software or Cachix is doing.
Can you tell me exactly what it will be doing to my system? What changes? Does it use a lot of disk space? Is it easy to undo? And is there anyone who recommends doing it who isn't associated to IHP?
- Scotty (simple web routing) https://hackage.haskell.org/package/scotty
- Lucid (html rendering) https://hackage.haskell.org/package/lucid
- Selda (postgres) https://selda.link/The same author wrote a very popular book about category theory that introduces Haskell in a way i’d think most developers would find more tractable.
[1] there’s exceptions of course, at UofG they threw Haskell at us right after Ada back in at the turn of the millennium. That’s an interesting trajectory for course design, first lang is ada and second is haskell
"A gentle introduction to Haskell for beginners.
The prerequisite for this series of tutorials is some knowledge of imperative programming, whether C++, Java, Pascal, you name it. If you have some familiarity with functional programming, that's even better."
pyth 3 * 2 pyth -1 8
I am lucky because I can use Haskell simply because I enjoy it and don’t need to worry who will pay me for it as long as I produce the output.
While this is pithily said, I think it is not unreasonable to disagree. It may be that a language that makes unrealistic assumptions and sacrifices almost everything to maintaining a theoretical vision may make it easier to understand that vision, on top of which understanding you can then layer the necessary compromises more easily than you could by learning both theory and compromises at the same time.
You must have chose to do academic things then because I was able to use it for simple real world applications the first day.
> The “it teaches you to think a certain way” is IMO a really weak argument
Not when it can be used with all other languages.
> no one has ever paid me to write it. I suppose if I were willing to take a huge pay cut I could have found something,
I got a pay raise and suspect many others would as well.
> I was able to use it for simple real world applications the first day.
Considering GP's complaint was a common known idiosyncracy of Haskell, examples of your real world applications (first day or otherwise) would be appreciated!- https://www.aosabook.org/en/posa/warp.html
- https://morpheusgraphql.com/
- https://higherkindness.io/mu-haskell/
- https://github.com/hasura/graphql-engine
- https://postgrest.org/en/stable/
- https://github.com/jgm/gitit
- https://jaspervdj.be/hakyll/
- https://github.com/IHaskell/IHaskell
- https://tweag.github.io/HaskellR/ (https://idontgetoutmuch.wordpress.com/2018/05/19/cartography...)
The list can go on, it really depends on what level of "real-worldness" you consider to be real.
Looks out at SBF, Liz Holmes, Voting Controversies, etc.
Nahhhh, this is working well!
We're happy.
I’ve not spent anywhere as much time getting only moderately good at any other language as I have with Haskell.
> The “it teaches you to think a certain way” is IMO a really weak argument.
I disagree.
It has changed how I write in every other language. Haskell has many principles that are not enforced in other languages, but are good to follow.
I’ve learned a lot from reading open space Haskell code because it’s a language where authors care about the details.
> you’re far better off completely mastering Go, C++, Python
Probably! You could say you’re better off mastering any other language, but you have to define “better”. Certainly, you can get profitable faster with most other languages.
Ten years in, I still don’t know how to make a statically linked executable with Haskell.
Sigh...
> Ten years in, I still don’t know how to make a statically linked executable with Haskell.
0) I hope you're targeting Linux
1) Install host (system) GHC
2) Build a new GHC by using the host GHC and Musl Libc, and depending on license restrictions choose either bignum-native or GNU GMP (flags of https://hackage.haskell.org/package/ghc-bignum). This is needed because the compiler will later inject some portions of the GHC components into user applications to support their awesome runtime system.
3) Use the newly built custom GHC to compile your projects with GHC's `-static` flag (needed for pure haskell libs) AND `--ghc-options='-optl-static -optl-pthread'` (needed for non-haskell stuff).
4) Profit
Note that on certain platforms it's not possible (without much of a low-level trouble) to statically link their libc implementations to the user applications. Apple in particular does everything to discourage developers from pursuing this goal[1][2].
[1] https://stackoverflow.com/a/5259427
[2] https://michaelspangler.io/posts/statically-linking-on-macos...