224 karma · joined December 17, 2013
I don't care about the type signature of promises. I actually don't care about the type of anything which has a complicated type; I think it's just incredibly winning that I will now be able to describe the shape of the raw data circulating in my code.
I've always found really annoying, in Haskell, to see incredibly complex type idioms emerging to allow stuff that doesn't really deserve it. And yes, I'm talking about monad transformers.
Don't get me wrong, I think that Haskell and the typing techniques and idioms it has fostered are a tremendous achievement, but right now, I'm more focused on bringing my web code, which right now is unfortunately a jungle of implicitly-typed garbage, closer to a safe and predictable better-typed form.
I tried to do that in Haskell in the back-end, but everytime I tried, I lost mind-boggling amounts of time dealing with the monadic stack of the framework I tried.
As the saying goes, I'm not clever enough to use dynamic typing, and bugs happen. Unfortunately, I'm also not clever enough to use real strong typing, and nothing compiles, let alone gets done.
Hence why I'm immensely thankful to see facebook embracing gradual typing in a way that lets me leverage my knowledge of algebraic typing.
I missed the part about sum types!
My god this is perfect
This all seem extremely cool.
I went straight from hacking Scala and Haskell as a hobbyist to doing (mostly) front-end JS job, and I've always found that my code, and a lot of good libraries I read, naturally emulate something close to Hindley-Milner typing, by using objects as tuples/records and arrays as (hopefully well-typed) lists, as well as the natural flexibility of objects as a poor substitute for Either types.
I'm definitely pleased to see that the designers of this library have also realized that strongly-typed javascript was just a few annotations and a type inference algorithm away.
I'm just wondering why are nullable types inmplemented as such and not as a natural consequence of full sum types, which are inexplicably absent.
Which, on the other hand, I think is rapidly evolving, now that OOP is out of its hype phase, and can now be evaluated a bit more (pun almost intended) objectively, and freed from its unnecessary parts, and that front-end JS and functional reactive techniques are bringing new ideas and especially terse and powerful notations and abstractions to describe UI layouts and interactions, to the table.
One can dream of an invention-of-the-C-language-like situation where a team of lone hackers harness the power of a bump in expressive power to formalize the current state of their UI metaphors and reimplement it from scratch and then build upon that at tremendous (relative) speeds...
Well, I dream.
Futzing with front-end JS frameworks is having unexpected effects on my worldview, right now.
Then, I have to admit, I didn't make it easy for myself; I tried to use SuperCollider, which worked... Somewhat, until I nerded out and tried to speak to it from within Haskell.
I'm really tempted by Renoise, though.
I'd like to know more about your setup.
1) the customization options (tiling WMs ftw)
2) the ease of replicating the production environment I work with
3) the package managers
4) the everything-is-an-ascii-stream metaphor and the ease of creating and using tiny, tiny executables (e.g. shell scripts, daemons, composable cli utils, etc)
5) the complete and total freedom to install and use whatever I want, whenever I want without ever having to pay for anything at all, and more importantly ever have to ever think about entering a product key or having to register anything.
6) the tiny, tiny performance requirements and extremely wide hardware support
7) the networking toolage (ssh, curl, wget, scp, rsync, etc being either already there or one apt-get away)
8) the general feeling that complicated things are abstracted away only if it's possible to do so. The fact that things break transparently, or at least more transparently than the competition. The fact that it's beneficial to Debian that failures and shortcomings be discussed publicly and at length rather than being held behind closed doors to maintain a credible commercial image.
I would really like it if some OS could re-implement the, as I said, everything-as-an-UTF8-stream w/ networking as a first-class citizen, the blank slate UI to be built from scratch (and a few shells), while shedding the legacy crud of teletype-era in-band signaling keycodes, the X window systems, and so on, which I admit is very, very unlikely as it implies re-implementing almost all of the stack, at once, in a backward-incompatible way, all to re-implement a model (the CLI) that is seen as a technical relic to almost everybody except me and Neal Stephenson.
Let's just say, then, that I will switch OS when someone will be offering a consistent, minimal and usable UI metaphor, while accomodating the motor tics I developed using Vim for the last few years.
Now let's move on to the truly relevant and constructive activity: comparing which language has best-looking toy quicksort implementation
Educational fucking videos. Understanding the conditions where food is cultivated. Growing stronger crops.
This is just beautifully simple, realistic and down-to-earth.
Eagerly awaiting artificial memory implants. 'l be the first in line.
... Sorry
I can finally go and write some relevant code now.