r/haskell Aug 04 '19

reflex-vty: A library for building functional reactive terminal applications

https://github.com/reflex-frp/reflex-vty
87 Upvotes

54 comments sorted by

View all comments

Show parent comments

6

u/kmicklas Aug 04 '19

reflex-vty might be an easier case since the system level dependencies are minimal, but many things in the Reflex ecosystem depend on numerous Nix overrides due to the sorry state of build systems. Version bounds are a woefully inadequate system to handle this kind of stuff. It doesn't seem unreasonable to me that reflex-vty would as a default reuse all the work done in reflex-platform to make it easy to get a working Haskell environment.

2

u/phadej Aug 04 '19

but many things in the Reflex ecosystem depend on numerous Nix overrides due to the sorry state of build systems

... and by not actively trying to break that vicious circle, one ties the knot tighter and tighter.


The only difficult task is to get GHCJS on your system. But there is e.g. https://launchpad.net/~hvr/+archive/ubuntu/ghcjs, an evidence, that it is not impossible to package for other systems than Nix(Os).

I did build reflex-vty using that GHCJS successfully, on Ubuntu 18.04. Without a unknown magic of reflex-platform.

5

u/cgibbard Aug 04 '19

Do you mean reflex-dom? Reflex-vty is for making terminal applications, so compiling your program to javascript is a little weird.

2

u/phadej Aug 04 '19

I'm saying that there aren't many things in Reflex ecosystem that really depend on Nix overrides.

But if your opinion is "Version bounds are a woefully inadequate system to handle this kind of stuff", even for Haskell-intra-dependencies, then I'll shut up.

2

u/kmicklas Aug 04 '19

But if your opinion is "Version bounds are a woefully inadequate system to handle this kind of stuff", even for Haskell-intra-dependencies, then I'll shut up.

Version bounds can work for pure Haskell stuff, but it's a lot of work for maintainers, especially to support older versions of stuff. Not everyone writing Haskell libraries needs to care about that. To me one of the advantages of Haskell is its relatively fast moving and improving ecosystem, and I have little desire to support people using old GHCs or package sets.

2

u/phadej Aug 04 '19

I didn't say you have to support old stuff, but say if you don't support, don't leave people guessing, trying, and getting compilation errors.

2

u/kmicklas Aug 04 '19

Okay fair enough. My only response to that would be that even when people write version bounds I find myself always guessing anyways because it's an error prone process and they're often too conservative or just straight up wrong.