Home freenode/#haskell: Logs Calendar

Logs: freenode/#haskell

←Prev  Next→ 502,152 events total
2021-04-06 14:37:59 <maerwald> haskellstudent: those are frameworks
2021-04-06 14:38:17 <emmanuel_erc> haskellstudent: So which framework is easier to use in your opinion, reflex or miso?
2021-04-06 14:38:28 <merijn> zzz: Well, the MMR trade-off is: MMR enabled (default): things that look like values behave like values (in terms of compute), which sometimes triggers loud type errors when monomorphising fails. The alternative (MMR disabled) is: it always compiles, but sometimes things that look like values are super expensive in a way that's hard to detect
2021-04-06 14:38:30 <haskellstudent> maerwald: yes i know but if you are talking about ghcjs that is what you are probably using
2021-04-06 14:38:50 <maerwald> haskellstudent: I mean only the compiler and it looks stalled
2021-04-06 14:39:20 <haskellstudent> maerwald: i am assuming that if they are actively used and maintained, ghcjs would at least get bugfixes when needed?
2021-04-06 14:39:51 <maerwald> https://github.com/ghcjs/ghcjs is this the correct repo?
2021-04-06 14:40:41 <haskellstudent> emmanuel_erc: thats what im trying to find out, but as i said so far i can only tell you that miso is easier to get started with, and it might have a bit better performance, which may or may not matter to you
2021-04-06 14:40:47 × ddellaco_ quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Remote host closed the connection)
2021-04-06 14:41:19 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 260 seconds)
2021-04-06 14:41:55 <maerwald> latest commit 14 months old doesn't sound like a healthy, well-maintained compiler
2021-04-06 14:41:58 mouseghost joins (~draco@87-206-9-185.dynamic.chello.pl)
2021-04-06 14:41:58 × mouseghost quits (~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2021-04-06 14:41:58 mouseghost joins (~draco@wikipedia/desperek)
2021-04-06 14:42:19 <zzz> merijn: got it. thank you for the explanation
2021-04-06 14:42:24 <haskellstudent> maerwald: new dev activity is on other branches, at least here for example: https://github.com/ghcjs/ghcjs/commits/hkm/nix-ghc-8.10
2021-04-06 14:42:37 <maerwald> ah
2021-04-06 14:43:06 <haskellstudent> maerwald: you are looking at the "stable" branch i guess which will probably only get bugfixes while they work on the next release somewhere else
2021-04-06 14:43:20 barthandelous joins (~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9)
2021-04-06 14:44:48 <haskellstudent> maerwald: as far as i can tell there is enough production usage of reflex and miso and therefore ghcjs to be reasonably confident that it will be sufficiently well supported for the next years and i would invest in learning and building on it
2021-04-06 14:47:02 ddellaco_ joins (~ddellacos@ool-44c73afa.dyn.optonline.net)
2021-04-06 14:47:50 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-04-06 14:47:51 × barthandelous quits (~calebbrze@2600:1007:b0a1:3aa7:b579:e4ea:b055:38a9) (Ping timeout: 260 seconds)
2021-04-06 14:48:06 mikoto-chan joins (~anass@gateway/tor-sasl/mikoto-chan)
2021-04-06 14:50:38 <haskellstudent> maerwald: especially if you ask, what are the alternatives? i briefly tried purescript, the compiler is slow af so not an option. with miso and reflex you can use instant live reload. which i really want to have in my workflow. elm is fast to compile and run but its far too limiting from what i have read. and its they are both not haskell obviously which means no code sharing which means wasted time. i have not looked closely at
2021-04-06 14:50:38 <haskellstudent> rust wasm but since i prefer haskell in general it would be ideal ofc if using haskell everywhere works well. and according to obsidian systems at least it works very well, so i am optimistic (also from what i have tried so far).
2021-04-06 14:51:08 <maerwald> haskellstudent: well, the obvious alternative is typescript
2021-04-06 14:51:28 <merijn> PureScript seems the more obvious alternative :p
2021-04-06 14:51:50 <maerwald> too volatile
2021-04-06 14:51:52 <tdammers> personally, I still find myself going back to just hand-writing javascript
2021-04-06 14:53:11 <merijn> maerwald: Yes, but your volatility is below channel average :p
2021-04-06 14:53:22 <merijn> s/volatility/volatility tolerance
2021-04-06 14:53:27 <tdammers> it's not great, it's not haskell, but it has massive social inertia going for it, it's practically guaranteed to not go anywhere anytime soon, it's maintained, I know it well enough for there to be no nasty surprises, and it offers an absolutely seamless gradation of "fanciness", starting from writing in a <script> tag directly in your HTML template all the way to webpack + nodejs + whatever
2021-04-06 14:53:42 <solvr> I thought we tried the "alternate JS syntax" thing with CoffeeScript and we agreed it's not worth it
2021-04-06 14:53:48 <solvr> But I guess bad ideas never die.
2021-04-06 14:53:49 <haskellstudent> tdammers: as long as the quantity and complexity stays very low interpreted languages can be nice. the moment you exceed that however you get problems in my experience.
2021-04-06 14:53:50 bahamas joins (~lucian@unaffiliated/bahamas)
2021-04-06 14:54:09 jpds joins (~jpds@gateway/tor-sasl/jpds)
2021-04-06 14:54:12 <tdammers> haskellstudent: yes, and so the trick is to keep the complexity low, which, with enough discipline, is often possible.
2021-04-06 14:54:40 <tdammers> you have to draw very clear boundaries in order to keep things contained, and be religiously about documenting and respecting those boundaries, but it is doable
2021-04-06 14:54:51 <haskellstudent> solvr: coffeescript is pointless, its just another syntax. it does not give you a type system, which would be the crucial difference.
2021-04-06 14:55:00 <maerwald> aha! I figured out a minimal example that breaks lazy bytestring GC/streaming: https://paste.tomsmeding.com/o1aCZ5wk
2021-04-06 14:55:12 <solvr> haskellstudent, I agree
2021-04-06 14:55:34 <solvr> haskell_1, I use TS but TS crucially minimizes non-standard syntax, and offers types.
2021-04-06 14:55:34 <tdammers> of course "enough discipline" isn't something you can get in the kind of team that would typically write JS, so there's that
2021-04-06 14:55:38 <maerwald> I guess this is what happens in `tar` too
2021-04-06 14:55:42 <haskellstudent> tdammers: but why do that if you can do that AND have a good type system to help you reduce defects (and thus save time) even more? i mean thas why i am using haskell in the first place
2021-04-06 14:56:00 <tdammers> haskellstudent: because all that type stuff comes with a harsh penalty in practice
2021-04-06 14:56:03 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-04-06 14:56:09 <tdammers> the language itself is just a small part of the equation
2021-04-06 14:56:15 <emmanuel_erc> So I'm just trying out miso right now.
2021-04-06 14:56:20 <haskellstudent> tdammers: and i think there is also a lot of potential to increase productivity and decrease complexity if you can leverage code sharing
2021-04-06 14:56:22 <emmanuel_erc> Installation was super easy
2021-04-06 14:56:32 <haskellstudent> tdammers: what penalty?
2021-04-06 14:56:35 <emmanuel_erc> and much faster than reflex
2021-04-06 14:56:35 <solvr> tdammers depends on the type system and the community around it
2021-04-06 14:56:43 <tomsmeding> maerwald: that's unfortunate
2021-04-06 14:56:57 <haskellstudent> tdammers: except for having to spend some time learning new things?
2021-04-06 14:57:15 <tdammers> haskellstudent: compile times. library ecosystem. additional accidental complexity introduced by the compiler. longer turnaround times. potentially buggy compilers. more moving parts to your build system.
2021-04-06 14:57:48 <haskellstudent> tdammers: like i said earlier, i have instant love reloading working with both miso and reflex
2021-04-06 14:57:52 <tdammers> fun story: we had a fairly decent purescript codebase at one job, things were humming along smoothly, until someone asked for a slippy map
2021-04-06 14:58:03 <haskellstudent> and i mean instant. on a old cpu.
2021-04-06 14:58:06 <fresheyeball> haskellstudent: shameless plug http://shpadoinkle.org/docs/index.html
2021-04-06 14:58:13 <fresheyeball> my alternative to Reflex and Miso
2021-04-06 14:58:19 <merijn> haskellstudent: For small stuff, maybe :)
2021-04-06 14:58:23 <Uniaika> fresheyeball: hehe
2021-04-06 14:58:26 <fresheyeball> Faster than Reflex, without the boilerplate of Elm
2021-04-06 14:58:28 <merijn> haskellstudent: GHC isn't super fast, sadly
2021-04-06 14:58:39 <merijn> haskellstudent: I highly doubt ghcjs is faster
2021-04-06 14:58:50 <maerwald> rust isn't fast either
2021-04-06 14:58:54 <maerwald> Go is
2021-04-06 14:59:04 <fresheyeball> maerwald: you mean compile times?
2021-04-06 14:59:05 <merijn> maerwald: Yeah, but Go is shite :p
2021-04-06 14:59:06 <Uniaika> compiler speed or executable speed?
2021-04-06 14:59:11 <maerwald> compiler speed
2021-04-06 14:59:14 <Uniaika> yes
2021-04-06 14:59:18 <Uniaika> you're indeed right
2021-04-06 14:59:30 <maerwald> developing Go is awesome, if you can bear the language
2021-04-06 14:59:31 <haskellstudent> merijn: so far i could at least always see any compiler errors within 1s or so using halive
2021-04-06 14:59:39 <fresheyeball> yes yes, compilers that don't help the engineer go super fast by not helping
2021-04-06 14:59:44 <haskellstudent> gotta go now, see you later
2021-04-06 14:59:46 <tdammers> now, in a JS project, I could have just dropped leaflet into my dependencies, and whip up a map to show anywhere on any page with maybe a dozen lines of code. not elegant, but works as advertised. for purescript, I looked into the options, and concluded that I had two of them: create my own slippy map library in native purescript, or make a purescript wrapper for leaflet
2021-04-06 15:00:09 <Uniaika> fresheyeball: actually I think codegen has also been somewhat sacrificed for compiler speed
2021-04-06 15:00:14 <maerwald> tdammers: and both of them expensive engineering tasks
2021-04-06 15:00:17 <tdammers> I picked option 2, but fortunately, the company in question went out of business before I got to do more than superficial work on that
2021-04-06 15:00:23 <fresheyeball> Uniaika: good point
2021-04-06 15:00:23 <tdammers> maerwald: exactly.
2021-04-06 15:00:25 <maerwald> heh
2021-04-06 15:00:47 molehillish joins (~molehilli@2600:8800:8d06:1800:b54a:36bf:7632:87f4)
2021-04-06 15:00:48 nbloomf joins (~nbloomf@2600:1700:ad14:3020:9469:29ae:2372:7bd6)
2021-04-06 15:00:50 <maerwald> that reminds me when I was working on an event sourced haskell codebase...
2021-04-06 15:00:53 × ddellaco_ quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Remote host closed the connection)
2021-04-06 15:01:13 <maerwald> tdammers: which relied heavily on ixset-typed :)
2021-04-06 15:01:25 <maerwald> (we even forked it)
2021-04-06 15:01:35 <maerwald> none of those were business domain problems
2021-04-06 15:01:37 <tdammers> I mean, yes, an idiomatic slippy map in purescript would be a hell of a lot more elegant than leaflet. but leaflet has the whopping advantage of existing.
2021-04-06 15:01:53 _d0t joins (void@gateway/vpn/mullvad/d0t/x-89419360)
2021-04-06 15:01:56 <merijn> maerwald: I blame acid-state for false advertising, popularising ixset
2021-04-06 15:01:58 bitmapper joins (uid464869@gateway/web/irccloud.com/x-fmeoowlskniejelz)
2021-04-06 15:02:23 × acidjnk_new quits (~acidjnk@p200300d0c72b95396118d8d56ee70ad6.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)

All times are in UTC.