Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
pwm
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
17 ms
·
121.
▲
by
pwm
7y ago
Not OP, but here are 2 slightly different links that might be of interest: https://github.com/tweag/funflow - A library for running computational workflows https://skillsmatter.com/skillscasts/1441
122.
▲
by
pwm
7y ago
Funny how different people read this differently. I read it as a playful exploration of how far can you push your square peg into that round hole. No one uses Haskell as a faster C irl, that would not make much sense, that’s not where the s
123.
▲
by
pwm
7y ago
Fair comment. I do find reading it much easier as well, which I guess boils down to familiarity, but when reading i don’t need to translate it hence my comment re writing.
124.
▲
by
pwm
7y ago
Ah yes TH. That’s imho the last biggie in the way of total awesomeness. See this ticket: https://github.com/digital-asset/ghcide/issues/34
125.
▲
by
pwm
7y ago
Yep, all my team has switched to VSCode+ghcide and so far we're in love with it. Mind you ghcide is brand new, so this luxury of having a 21st century Haskell IDE did not exists even just a few months ago. Before we used ghcid with whi
126.
▲
by
pwm
7y ago
How is this different for Haskell than with anything else? If you want to be an expert in something, anything you do need to put in the work and learn it inside-out. There is no royal road. I fail to see how this is specific to Haskell...
127.
▲
by
pwm
7y ago
Sure and at that point you need to learn those internals. That's just the way it is with everything, no?
128.
▲
by
pwm
7y ago
Sure you need to use the IO monad to write "hello world" but you don't need to understand what it does in the background. #include <stdio.h> int main(int argc, char *argv[]) { printf("Hello World!\n"
129.
▲
by
pwm
7y ago
Honestly, this blog post is cute but it does not actually give you understanding and insight into these concepts. Imho the only way to internalise these are through practice. Write code, get annoyed by repetition/boilerplate/etc..
130.
▲
by
pwm
7y ago
To give you a counter example: when i write code in an imperative language i always first write the logic out as fold/map/filter and then translate that into an imperative loop.
131.
▲
by
pwm
7y ago
If you feel like messing around with Haskell again for an afternoon then install VSCode with ghcide (and a syntax highlighting plugin ofc). You might get surprised ;)
132.
▲
by
pwm
7y ago
The great news is that tooling is rapidly improving these days. VSCode with the new ghcide is simply amazing. Ghcide is still new and thus has a few rough edges (eg. TH) but overall it lifts the Haskell IDE experience into the 21st century.
133.
▲
by
pwm
7y ago
Of course. It uses the Text [0] and Scientific [1] packages under the hood. The internal ADT representing JSON is actually very simple (as json is very simple itself): data Value = Object (HashMap Text Value) | Array (Vector Val
134.
▲
by
pwm
7y ago
Many others have replied to your concerns already, nevertheless allow me to add my own experience to the pile, as someone writing Haskell for food: 1) For a team of Haskell programmers reading Haskell code is just the norm. It's the sa
135.
▲
by
pwm
7y ago
In essence as you gain expressive power you lose analytical/introspective/reasoning power. Being more powerful on a concrete level costs power on the meta-level. There is a great talk about this called “Constraints Liberate, Liber
136.
▲
by
pwm
7y ago
Just a funny aside if you allow me: gender pronouns are imho a great example of how seemingly trivial design choices can have a ripple effect on systems behaviour. What I mean by that is my mother tongue have no such concept as gender prono
137.
▲
by
pwm
7y ago
Don’t get me wrong, you are preaching to the choir (I write Haskell at work), just thought it’s worth mentioning this to the OP. In practice sophisticated compilers like GHC produce insanely fast binaries and is getting better and better.
138.
▲
by
pwm
7y ago
(On my phone walking so very quick and dirty post) purely functional DSs in general will cost you an extra O(log n) cause of their underlying tree representation for immutability (immutability achieved by copying paths in the tree to retain
139.
▲
by
pwm
7y ago
Nice, this looks pretty similar to Coders at Work + they both came out around the same time. Anyone knows if they share a common origin?
140.
▲
by
pwm
7y ago
If you are curious this is a good read: https://www.parsonsmatt.org/2017/01/07/how_do_type_classes_d...
141.
▲
by
pwm
7y ago
Here is a song for ya from my brother's latest album :) https://www.youtube.com/watch?v=YcLFJ-2evQc
142.
▲
by
pwm
7y ago
I would add "Higher-order type-level programming in Haskell" which will bring unsaturated type families, enabling currying at the type level.
143.
▲
by
pwm
7y ago
Luckily Haskell is great at being a dynamically typed language as well :) You can read all your messy real-world input into some data structure of Dynamic-s annotated by their raw input types and then interpret that low level representation
144.
▲
by
pwm
7y ago
Over the years I developed my own spin on this topic. For me it’s not about working remotely but the ability to choose day by day whether i want to work remotely or on-site. My current balance, evolved organically, is 4 days remote 1 day on
145.
▲
by
pwm
7y ago
Hack still has a lot of features that is missing from PHP7. Proper data structures (vector, map, set, etc...) including immutable ones, generics, variance, async/awaitable, etc... there is still a heck of a lot for PHP to catch up on.
146.
▲
by
pwm
7y ago
Statically typed languages that employ type inference (eg. Hindley–Milner) do exactly this, ie. you just write your function definition and the inference engine figures out its type. Doing this in the repl gives you comparable flow to doing
147.
▲
by
pwm
7y ago
If you mean operationally then it's via simple http apis, although we are in the process of moving to a fully serverless (ie. aws lambda) setup. If you mean the data exchange format then it's JSON.
148.
▲
by
pwm
7y ago
It's not clever for its own sake. Haskell is rooted in math and Either is logical disjunction. Its semantics is precisely that. Error handling is a specific use-case that can be implemented with Either. Rust as a language is more pragm
149.
▲
by
pwm
7y ago
At work for core domain modelling we use Haskell and for service layer code we use Go and Node. They are imho good fits for their respective problem domains.
150.
▲
by
pwm
7y ago
While I found your article informative and interesting I think it only works in the very specific context of this assignment. Disallowing powerful language features/libraries means it's not a level playing field and thus not a fai
More ›