Logs: freenode/#haskell
| 2020-10-12 20:14:32 | <davean> | Entirely |
| 2020-10-12 20:14:34 | × | proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Read error: Connection reset by peer) |
| 2020-10-12 20:14:35 | <koz_> | LOL |
| 2020-10-12 20:14:44 | <davean> | I couldn't believe it wasn't that way |
| 2020-10-12 20:14:45 | <koz_> | Good to know I wasn't wrong to be skeptical to my workmates. |
| 2020-10-12 20:14:53 | → | proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net) |
| 2020-10-12 20:15:46 | <untseac> | I finally have a good grasp and can handle haskell more or less easily. the most annoying part is that all these places try to teach monads and friends in a weird way when it's really simple. |
| 2020-10-12 20:16:03 | <untseac> | but that's just me ranting as usual |
| 2020-10-12 20:16:41 | <untseac> | codewars helped lol |
| 2020-10-12 20:17:07 | <koz_> | I found a lot of practice helped. Weirdly, getting my first Haskell Job For Money made me improve almost instantly. |
| 2020-10-12 20:17:23 | <untseac> | yeah practice is indeed the best way to learn haskell |
| 2020-10-12 20:17:30 | <untseac> | that's what I found |
| 2020-10-12 20:18:01 | <untseac> | usually it's the opposite, read first do later, but with haskell it's just do it |
| 2020-10-12 20:18:10 | × | hbina quits (~hbina@42.153.132.48) (Remote host closed the connection) |
| 2020-10-12 20:18:16 | <untseac> | at least worked for me |
| 2020-10-12 20:18:55 | × | thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds) |
| 2020-10-12 20:19:25 | <untseac> | which is the most technically decent web framework btw? if there's one. |
| 2020-10-12 20:19:37 | × | proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Ping timeout: 265 seconds) |
| 2020-10-12 20:19:38 | <davean> | Depends on what you want, theres levels of complexity |
| 2020-10-12 20:19:44 | <untseac> | fair enough |
| 2020-10-12 20:19:47 | <davean> | like servant is rather complicated but buys a lot of nice features with that |
| 2020-10-12 20:20:03 | <davean> | But you might not want to pay that overhead for some basic stuff |
| 2020-10-12 20:20:34 | <koz_> | Servant is good _if_ you work in the way they intend. |
| 2020-10-12 20:20:47 | <koz_> | If you need anything else, it's _very_ difficult to work around. |
| 2020-10-12 20:20:57 | <untseac> | oof I hate that |
| 2020-10-12 20:21:00 | <koz_> | And the typelevel stuff can give _horrific_ error messages if you're not familiar with it. |
| 2020-10-12 20:21:01 | <cohn> | anyone using HDBC to connect to a SQLite database? |
| 2020-10-12 20:21:28 | <davean> | koz_: right, though I'd disagree with the "_very_ difficult" part - you can patch your own stuff in pretty easily |
| 2020-10-12 20:21:33 | <koz_> | (I literally had pages of vomit giving me headaches before going 'oh, ScopedTypeVariables wasn't on) |
| 2020-10-12 20:22:05 | <untseac> | I come from Java world so I doubt any of these web frameworks are worse |
| 2020-10-12 20:22:47 | → | mapperr joins (~mapperr@vmi389916.contaboserver.net) |
| 2020-10-12 20:23:52 | <koz_> | cohn: What sort of issue are you seeing? |
| 2020-10-12 20:23:52 | → | wroathe joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) |
| 2020-10-12 20:24:56 | <cohn> | koz_: can't seem to install HDBC + HDBC-sqlite3 via Stack. Wondering if it's because I'm using a too-new GHC. |
| 2020-10-12 20:25:11 | <koz_> | cohn: Exact error message (in a pastebin)? |
| 2020-10-12 20:25:56 | <cohn> | koz_: yep, one sec |
| 2020-10-12 20:27:41 | <cohn> | koz_: https://pastebin.com/eWfUc67E |
| 2020-10-12 20:27:55 | <cohn> | fwiw, this is on an OS X box |
| 2020-10-12 20:28:31 | <koz_> | Yeah, I think it's an issue that HDBC-sqlite3 leans on a deprecated library. |
| 2020-10-12 20:28:32 | <bliminse> | what were you using in Java untseac ? Spring/quarkus/micronaut? |
| 2020-10-12 20:28:33 | <davean> | Oh my sqlite is old |
| 2020-10-12 20:28:35 | <maerwald> | koz_: the funny thing is... most ppl don't make actual use of servant (e.g. sharing types or generating clients) :p |
| 2020-10-12 20:28:58 | <bliminse> | if you were using smaller frameworks (i.e., not spring), you could try warp in haskell |
| 2020-10-12 20:29:03 | <davean> | maerwald: Is that true? I know dozens of places using it and doing that. |
| 2020-10-12 20:29:05 | <koz_> | But yeah, what's your resolver? |
| 2020-10-12 20:29:15 | <dminuoso> | Where in either the Haskell report and GHC manual can I find a remark, how instance contexts are not considered for instance selection? |
| 2020-10-12 20:29:16 | <untseac> | bliminse, spring |
| 2020-10-12 20:29:22 | <bliminse> | it's going to require you implementing some things that may be available in the other frameworks but it's nowhere near as bloated |
| 2020-10-12 20:29:24 | <untseac> | it's not fun |
| 2020-10-12 20:29:28 | <maerwald> | davean: I've seen a good chunk of "let's use it, because it's cooler than scotty" |
| 2020-10-12 20:29:32 | <bliminse> | ahhh, yeah :/ |
| 2020-10-12 20:29:38 | <cohn> | koz_: lts-16.16 |
| 2020-10-12 20:29:38 | <davean> | maerwald: huh, never seen that. |
| 2020-10-12 20:29:45 | <bliminse> | I mean I get the appeal of spring, having the kitchen sink and then some |
| 2020-10-12 20:30:05 | <bliminse> | but all the behind-the-doors magic is not something I enjoy |
| 2020-10-12 20:30:17 | <untseac> | it's enterprise over-engineering crap tbh |
| 2020-10-12 20:30:23 | <bliminse> | and that's considering at work I have to deal with the whole spring family! xD |
| 2020-10-12 20:30:29 | <dminuoso> | In particular, Im trying to understand how instance methods of classes with superclass constraints are type checked. |
| 2020-10-12 20:31:03 | <davean> | maerwald: infact, I've often seen it used *only* to produce clients |
| 2020-10-12 20:31:05 | <untseac> | yeah my main issue with spring is that it tries to solve everything with this weird complicated mechanism but it's okayish I guess |
| 2020-10-12 20:31:19 | <koz_> | I'm wondering why it has a dependency on sqlite - neither HDBC nor HDBC-sqlite seem to want it. |
| 2020-10-12 20:31:22 | <dminuoso> | davean: Id be willing to argue that servant is great even for small APIs. |
| 2020-10-12 20:31:48 | → | snakemas1 joins (~snakemast@213.100.206.23) |
| 2020-10-12 20:31:54 | <dminuoso> | The complexity is mostly in your head, the actual implementation of servant/servant-server is rather simple. |
| 2020-10-12 20:31:54 | <davean> | dminuoso: I didn't mean your API size anywhere |
| 2020-10-12 20:31:57 | <cohn> | koz_: it? |
| 2020-10-12 20:31:58 | <untseac> | I just want to get rid of Java. Haskell looks like the best way to make maintainable software. At least so far. |
| 2020-10-12 20:31:59 | <koz_> | cohn: What's your stack.yaml look like? |
| 2020-10-12 20:32:09 | <maerwald> | For API layer, I don't care about typed API, I want proper structural typing, so I can create web-types easily. TypeScript is better at that |
| 2020-10-12 20:32:16 | <davean> | dminuoso: Though I really dislike some of its things, like setting HTTP headers is *brokenly bad* in servant |
| 2020-10-12 20:32:18 | <bliminse> | heh yes it's very enjoyable. well so, if you want to give a try with warp you can set something up really quickly with just a few packages: |
| 2020-10-12 20:32:32 | <cohn> | koz_: I just have these lines in there. everything else is default: |
| 2020-10-12 20:32:33 | <cohn> | extra-deps: |
| 2020-10-12 20:32:33 | <cohn> | - sqlite-0.5.5@sha256:2ffbff8fdeeb4db51550755a4a8fa73f33ac74313713a6f2608e108889d0ef13,1875 |
| 2020-10-12 20:32:36 | <cohn> | - HDBC-sqlite3-2.3.3.1@sha256:5025fd94d02b9b3f0b8b8233796dd9a85a0b3dda6503c6e671e3eddbc51cb4d4,2424 |
| 2020-10-12 20:32:40 | <davean> | you have to set them in 3 places, its rediculous |
| 2020-10-12 20:32:49 | <untseac> | I don't see much future in imperative languages, not with 32 cores, which we already have. That's my noobish prepective. |
| 2020-10-12 20:32:50 | <bliminse> | warp itself, warp-tls for HTTPS, and possibly wai-extra for some handlers/middleware |
| 2020-10-12 20:32:56 | <davean> | Where as *none* of most headers is what servant is supposed to represent at the type level. |
| 2020-10-12 20:33:00 | <koz_> | Did it ask you to add the sqlite-0.5.5 line when you tried 'stack build' or something? |
| 2020-10-12 20:33:04 | <dminuoso> | davean: I agree that it has some ergonomics problems, luckily if you're the one providing an API it's a non-issue. :) |
| 2020-10-12 20:33:28 | × | alp quits (~alp@2a01:e0a:58b:4920:7d9f:c45b:a876:4aa8) (Ping timeout: 244 seconds) |
| 2020-10-12 20:33:35 | <cohn> | koz_: yes. |
| 2020-10-12 20:33:35 | <davean> | dminuoso: incorrect? |
| 2020-10-12 20:33:44 | <untseac> | I do want to see a decent game engine in haskell but it seems like no one figured that out yet |
| 2020-10-12 20:33:46 | <davean> | The header things is exactly a case where it doesn't matter - its always a problem |
| 2020-10-12 20:33:49 | × | knupfer quits (~Thunderbi@200116b82c8e3e004d528d974d6e668b.dip.versatel-1u1.de) (Quit: knupfer) |
| 2020-10-12 20:33:54 | <koz_> | Can you remove that line, run 'stack build' again, and pastebin its error message? |
| 2020-10-12 20:33:56 | <cohn> | koz_: now that I think of it, I can probably get away with using sqlite-simple instead |
| 2020-10-12 20:33:56 | → | knupfer joins (~Thunderbi@200116b82c8e3e00d4b0380cf8092937.dip.versatel-1u1.de) |
| 2020-10-12 20:33:58 | <maerwald> | untseac: why |
| 2020-10-12 20:34:06 | <untseac> | maerwald, why what? |
| 2020-10-12 20:34:07 | <koz_> | If you _can_, definitely do so. |
| 2020-10-12 20:34:11 | <dminuoso> | davean: What do you want to encode in headers that you can't encode in QueryParams or a ReqBody? |
| 2020-10-12 20:34:11 | <koz_> | sqlite is deprecated. |
| 2020-10-12 20:34:17 | <maerwald> | untseac: why would you want to see it |
| 2020-10-12 20:34:17 | × | knupfer quits (~Thunderbi@200116b82c8e3e00d4b0380cf8092937.dip.versatel-1u1.de) (Client Quit) |
| 2020-10-12 20:34:17 | <cohn> | koz_: lemme try that first. |
| 2020-10-12 20:34:21 | <davean> | dminuoso: You know - like cache controls? |
| 2020-10-12 20:34:24 | <davean> | HTTP semantics |
All times are in UTC.