Logs: freenode/#haskell
| 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.