2024/11/20

2024-11-20 00:03:12 +0100 <geekosaur> I still don't know how you think that would work
2024-11-20 00:03:17 +0100 <geekosaur> think about it
2024-11-20 00:04:52 +0100 <geekosaur> "Magic" would be quite literal
2024-11-20 00:05:43 +0100 <Leary> I mean, GHC could just do the inlining for you. Not like it doesn't already do plenty of that.
2024-11-20 00:07:24 +0100 <hellwolf> the fact is it worked. I take that as a magic.
2024-11-20 00:07:33 +0100 <hellwolf> *works
2024-11-20 00:17:30 +0100L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2024-11-20 00:21:51 +0100 <hellwolf> I also defined I8,I16..I256, U8,U16...U256, all without TH. I can now replace that with the magic too. Can you actually do such a splice in the module export list too? I guess that's where the magic is limited?
2024-11-20 00:22:22 +0100 <hellwolf> module XYZ ( ... U8, U16, ... U256,...)
2024-11-20 00:28:20 +0100 <geekosaur> things defined via TH can be exported, yes
2024-11-20 00:29:52 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-11-20 00:32:18 +0100 <hellwolf> right. I am more curious about if one can go one step of further of not to write this manually
2024-11-20 00:32:18 +0100 <hellwolf> -- *** Assorted INTx Types
2024-11-20 00:32:18 +0100 <hellwolf> , U8,U16,U24,U32,U40,U48,U56,U64
2024-11-20 00:32:18 +0100 <hellwolf> ... and so on, in the module export list
2024-11-20 00:32:18 +0100 <hellwolf> ... but I am quite content already comparing to where I was few hours ago about this part of the code.
2024-11-20 00:33:00 +0100 <geekosaur> I don't think you can, no; it'd be kinda the extreme case of the staging restriction
2024-11-20 00:33:00 +0100remexre(~remexre@user/remexre) (Ping timeout: 252 seconds)
2024-11-20 00:34:14 +0100Eoco(~ian@128.101.131.218) (Ping timeout: 272 seconds)
2024-11-20 00:34:39 +0100sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 265 seconds)
2024-11-20 00:35:35 +0100remexre(~remexre@user/remexre) remexre
2024-11-20 00:36:01 +0100Eoco(~ian@128.101.131.218) Eoco
2024-11-20 00:36:06 +0100JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2024-11-20 00:40:42 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2024-11-20 00:41:02 +0100mange(~user@user/mange) (Remote host closed the connection)
2024-11-20 00:42:18 +0100notzmv(~umar@user/notzmv) notzmv
2024-11-20 01:01:33 +0100mange(~user@user/mange) mange
2024-11-20 01:04:09 +0100Axman6(~Axman6@user/axman6) (Ping timeout: 240 seconds)
2024-11-20 01:06:59 +0100Sgeo(~Sgeo@user/sgeo) Sgeo
2024-11-20 01:08:25 +0100Everything(~Everythin@46-133-188-81.mobile.vf-ua.net) (Quit: leaving)
2024-11-20 01:08:45 +0100acidjnk_new(~acidjnk@p200300d6e7283f33ad61be24cfbe8605.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2024-11-20 01:10:49 +0100misterfish(~misterfis@84.53.85.146) (Ping timeout: 260 seconds)
2024-11-20 01:19:50 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds)
2024-11-20 01:20:38 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2024-11-20 01:33:03 +0100sprotte24(~sprotte24@p200300d16f3e1d0004a3986a39ff8486.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2024-11-20 01:36:25 +0100JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-11-20 01:37:48 +0100Axman6(~Axman6@user/axman6) Axman6
2024-11-20 01:40:16 +0100son0p(~ff@2800:e2:f80:ee7::4) son0p
2024-11-20 01:40:16 +0100troojg(~troojg@user/troojg) troojg
2024-11-20 01:43:41 +0100 <hellwolf> forM [ (s, n) | s <- [True, False], n <- [1..32] ] $ \(s, n) -> do
2024-11-20 01:43:41 +0100 <hellwolf> name <- TH.newName ((if s then "I" else "U") ++ show (n * 8))
2024-11-20 01:43:41 +0100 <hellwolf> TH.tySynD name [] ((TH.conT ''INTx)
2024-11-20 01:43:41 +0100 <hellwolf> `TH.appT` (TH.promotedT (if s then 'True else 'False))
2024-11-20 01:43:41 +0100 <hellwolf> `TH.appT` (TH.litT (TH.numTyLit n)))
2024-11-20 01:43:44 +0100 <hellwolf> This is amazing
2024-11-20 01:43:54 +0100 <hellwolf> Thanks for teaching me this today.
2024-11-20 01:45:14 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-11-20 01:53:30 +0100hsw_(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) hsw
2024-11-20 01:53:52 +0100hsw(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (Read error: Connection reset by peer)
2024-11-20 01:58:00 +0100 <Axman6> if s then 'True else 'False made me sad but then realised it's not id
2024-11-20 01:58:44 +0100 <Axman6> hellwolf: why limit it to multiples of 8? We use a lot of 18 bit ints at work =)
2024-11-20 01:59:25 +0100 <geekosaur> pdp7? 😛
2024-11-20 01:59:41 +0100 <Axman6> FPGAs
2024-11-20 01:59:57 +0100 <geekosaur> …everything old is new again
2024-11-20 02:00:06 +0100 <Axman6> the DSPs we have do 18x25 bit multiplications (IIRC)
2024-11-20 02:02:17 +0100 <Axman6> hellwolf: you might also want to look at how Clash does numbers
2024-11-20 02:03:29 +0100 <hellwolf> Yea, I wonder if there is better way of doing that 'True 'False thing :) I guess the domain I am dealing with spared me with non octal trite...
2024-11-20 02:03:44 +0100 <hellwolf> Axman6: yes I should checkout clash, heard a lot about it...
2024-11-20 02:05:07 +0100 <Axman6> I love it, I wish we'd use it at work, VHDL is such a horrific language
2024-11-20 02:16:44 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds)
2024-11-20 02:17:48 +0100JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2024-11-20 02:23:50 +0100housemate(~housemate@2a04:9dc0:0:162::5d91:d7ed) (Quit: Nothing to see here. I wasn't there.)
2024-11-20 02:30:36 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2024-11-20 02:31:21 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de)
2024-11-20 02:39:04 +0100Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2024-11-20 02:42:03 +0100Alleria_(~Alleria@user/alleria) Alleria
2024-11-20 02:44:09 +0100Alleria(~Alleria@user/alleria) (Ping timeout: 252 seconds)
2024-11-20 02:55:12 +0100hsw_(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (Quit: Leaving)
2024-11-20 02:55:24 +0100hsw(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) hsw
2024-11-20 02:59:18 +0100Alleria(~Alleria@user/alleria) Alleria
2024-11-20 03:03:04 +0100Alleria_(~Alleria@user/alleria) (Ping timeout: 272 seconds)
2024-11-20 03:08:59 +0100gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2024-11-20 03:09:12 +0100Alleria(~Alleria@user/alleria) (Ping timeout: 252 seconds)
2024-11-20 03:13:18 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2024-11-20 03:17:12 +0100JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-11-20 03:23:22 +0100Alleria(~Alleria@user/alleria) Alleria
2024-11-20 03:30:18 +0100troojg(~troojg@user/troojg) (Ping timeout: 272 seconds)
2024-11-20 03:35:29 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds)
2024-11-20 03:36:41 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-11-20 04:02:05 +0100 <Axman6> any python devs know of a python equivalent to insertWith max k v dict?
2024-11-20 04:13:59 +0100 <edwardk> hellwolf: re the export list, you can of course skip using an explicit export list. the least amount of code is no code at all there.
2024-11-20 04:14:00 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 252 seconds)
2024-11-20 04:15:45 +0100forell(~forell@user/forell) (Ping timeout: 276 seconds)
2024-11-20 04:23:16 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2024-11-20 04:36:22 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2024-11-20 04:41:57 +0100rekahsoft(~rekahsoft@bras-base-orllon1103w-grc-06-76-69-85-220.dsl.bell.ca) rekahsoft
2024-11-20 04:43:47 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2024-11-20 04:47:48 +0100Alleria(~Alleria@user/alleria) (Remote host closed the connection)
2024-11-20 04:48:30 +0100Alleria(~Alleria@user/alleria) Alleria
2024-11-20 04:59:58 +0100Me-me(~me-me@user/me-me) (Quit: Disconnecting on purpose.)
2024-11-20 05:00:58 +0100Me-me(~me-me@kc.randomserver.name)
2024-11-20 05:26:27 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2024-11-20 05:28:04 +0100rekahsoft(~rekahsoft@bras-base-orllon1103w-grc-06-76-69-85-220.dsl.bell.ca) (Ping timeout: 252 seconds)
2024-11-20 06:08:39 +0100sand-witch_(~m-mzmz6l@vmi833741.contaboserver.net)
2024-11-20 06:09:29 +0100sand-witch(~m-mzmz6l@vmi833741.contaboserver.net) (Ping timeout: 252 seconds)
2024-11-20 06:13:32 +0100sand-witch_sand-witch
2024-11-20 06:17:25 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-11-20 06:19:21 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 260 seconds)
2024-11-20 06:19:23 +0100alphazone(~alphazone@2.219.56.221) (Ping timeout: 252 seconds)
2024-11-20 06:21:07 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2024-11-20 06:33:08 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds)
2024-11-20 06:44:46 +0100michalz(~michalz@185.246.207.217)
2024-11-20 06:50:15 +0100statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) statusbot
2024-11-20 06:53:51 +0100statusbot7(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Ping timeout: 252 seconds)
2024-11-20 06:57:50 +0100tt12310978324354(~tt1231@syn-075-185-104-199.res.spectrum.com) tt1231
2024-11-20 06:58:39 +0100Fijxu(~Fijxu@user/fijxu) (Ping timeout: 260 seconds)
2024-11-20 06:59:13 +0100tt1231097832435(~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) (Ping timeout: 248 seconds)
2024-11-20 06:59:14 +0100tt12310978324354tt1231097832435
2024-11-20 07:01:33 +0100anpad(~pandeyan@user/anpad) (Quit: ZNC 1.8.2 - https://znc.in)
2024-11-20 07:02:17 +0100Fijxu(~Fijxu@user/fijxu) fijxu
2024-11-20 07:04:36 +0100alphazone(~alphazone@2.219.56.221)
2024-11-20 07:11:06 +0100ft(~ft@p4fc2a26f.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2024-11-20 07:12:48 +0100ft(~ft@p508dbc6e.dip0.t-ipconnect.de) ft
2024-11-20 07:14:58 +0100Fijxu(~Fijxu@user/fijxu) (Ping timeout: 245 seconds)
2024-11-20 07:16:37 +0100anpad(~pandeyan@user/anpad) anpad
2024-11-20 07:19:36 +0100notzmv(~umar@user/notzmv) (Read error: Connection reset by peer)
2024-11-20 07:25:33 +0100mange(~user@user/mange) (Remote host closed the connection)
2024-11-20 07:26:05 +0100Fijxu(~Fijxu@user/fijxu) fijxu
2024-11-20 07:30:03 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-11-20 07:33:31 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-11-20 07:36:15 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2024-11-20 07:39:49 +0100alphazone(~alphazone@2.219.56.221) (Ping timeout: 248 seconds)
2024-11-20 07:40:25 +0100ubert(~Thunderbi@178.115.41.15.wireless.dyn.drei.com) ubert
2024-11-20 07:55:00 +0100acidjnk_new(~acidjnk@p200300d6e7283f43cc25887be993a47b.dip0.t-ipconnect.de) acidjnk
2024-11-20 08:04:59 +0100Fijxu(~Fijxu@user/fijxu) (Ping timeout: 252 seconds)
2024-11-20 08:15:27 +0100Fijxu(~Fijxu@user/fijxu) fijxu
2024-11-20 08:16:01 +0100zlqrvx(~zlqrvx@user/zlqrvx) (Quit: %quit%)
2024-11-20 08:16:46 +0100sord937(~sord937@gateway/tor-sasl/sord937) sord937
2024-11-20 08:17:21 +0100zlqrvx(~zlqrvx@user/zlqrvx) zlqrvx
2024-11-20 08:29:09 +0100Fijxu(~Fijxu@user/fijxu) (Ping timeout: 246 seconds)
2024-11-20 08:32:15 +0100 <dminuoso> bwe: The description is true, but not really relevant today. Mostly just a fun remark about history.
2024-11-20 08:33:28 +0100Square2(~Square4@user/square) Square
2024-11-20 08:36:40 +0100Fijxu(~Fijxu@user/fijxu) fijxu
2024-11-20 08:40:34 +0100caconym(~caconym@user/caconym) (Quit: bye)
2024-11-20 08:45:17 +0100sawilagar(~sawilagar@user/sawilagar) sawilagar
2024-11-20 08:46:29 +0100Fijxu(~Fijxu@user/fijxu) (Ping timeout: 248 seconds)
2024-11-20 08:57:43 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-11-20 08:58:11 +0100Fijxu(~Fijxu@user/fijxu) fijxu
2024-11-20 09:00:56 +0100olivial(~benjaminl@user/benjaminl) (Read error: Connection reset by peer)
2024-11-20 09:01:12 +0100olivial(~benjaminl@user/benjaminl) benjaminl
2024-11-20 09:01:36 +0100GdeVolpiano(~GdeVolpia@user/GdeVolpiano) (Quit: WeeChat 4.4.2)
2024-11-20 09:04:24 +0100Fijxu(~Fijxu@user/fijxu) (Ping timeout: 252 seconds)
2024-11-20 09:07:18 +0100Perseverance(~Persevera@2.219.56.221)
2024-11-20 09:08:11 +0100 <haskellbridge> <hellwolf> edwardk: yes, that's true.
2024-11-20 09:08:11 +0100 <haskellbridge> ... long message truncated: https://kf8nh.com/_heisenbridge/media/kf8nh.com/lsAZXCpcYCpLcHAgzwCoIQAw/t5OqeCcG3NM (3 lines)
2024-11-20 09:10:18 +0100misterfish(~misterfis@84.53.85.146) misterfish
2024-11-20 09:14:56 +0100 <haskellbridge> <hellwolf> Also, if I take that thing in a separate module of its own, then I can be more comfortable letting module export list to be inexplicit.
2024-11-20 09:14:58 +0100 <haskellbridge> But now I am just splitting hairs.
2024-11-20 09:18:23 +0100xdej(~xdej@quatramaran.salle-s.org)
2024-11-20 09:18:28 +0100GdeVolpiano(~GdeVolpia@user/GdeVolpiano) GdeVolpiano
2024-11-20 09:19:21 +0100Perseverance(~Persevera@2.219.56.221) (Ping timeout: 252 seconds)
2024-11-20 09:21:52 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac
2024-11-20 09:28:40 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds)
2024-11-20 09:31:40 +0100Fijxu(~Fijxu@user/fijxu) fijxu
2024-11-20 09:36:37 +0100Perseverance(~Persevera@2.219.56.221)
2024-11-20 09:38:33 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-11-20 09:38:45 +0100euleritian(~euleritia@dynamic-176-006-132-236.176.6.pool.telefonica.de)
2024-11-20 09:39:06 +0100euleritian(~euleritia@dynamic-176-006-132-236.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-11-20 09:39:22 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de)
2024-11-20 09:40:20 +0100Fijxu(~Fijxu@user/fijxu) (Ping timeout: 265 seconds)
2024-11-20 09:49:56 +0100stiell_(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds)
2024-11-20 09:50:16 +0100stiell_(~stiell@gateway/tor-sasl/stiell) stiell
2024-11-20 09:50:48 +0100GdeVolpiano(~GdeVolpia@user/GdeVolpiano) (Quit: WeeChat 4.4.2)
2024-11-20 09:51:26 +0100GdeVolpiano(~GdeVolpia@user/GdeVolpiano) GdeVolpiano
2024-11-20 09:53:20 +0100ft(~ft@p508dbc6e.dip0.t-ipconnect.de) (Quit: leaving)
2024-11-20 09:57:28 +0100 <bwe> dminuoso: then, what's the essence of it that's relevant today?
2024-11-20 09:57:37 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2024-11-20 09:58:17 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-11-20 09:58:44 +0100Fijxu(~Fijxu@user/fijxu) fijxu
2024-11-20 10:03:35 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-11-20 10:03:48 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de)
2024-11-20 10:06:21 +0100evocatus(~evocatus@2a02:a210:20c2:d600:1496:234e:dc9f:5868) evocatus
2024-11-20 10:08:11 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) Smiles
2024-11-20 10:10:02 +0100Fijxu(~Fijxu@user/fijxu) (Ping timeout: 252 seconds)
2024-11-20 10:10:39 +0100evocatus(~evocatus@2a02:a210:20c2:d600:1496:234e:dc9f:5868) (Ping timeout: 246 seconds)
2024-11-20 10:16:38 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-11-20 10:17:18 +0100CrunchyFlakes(~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de)
2024-11-20 10:24:49 +0100Guest68(~Guest68@2405:201:12:391a:c627:4da6:1387:26ef)
2024-11-20 10:25:15 +0100 <Guest68> @free showList :: (a -> String) -> [a] -> String
2024-11-20 10:25:15 +0100 <lambdabot> showList . (.) f = (.) (showList f) . $map
2024-11-20 10:27:12 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.4.2)
2024-11-20 10:27:23 +0100 <Guest68> @free showList :: [a] -> String
2024-11-20 10:27:23 +0100 <lambdabot> showList = showList . $map f
2024-11-20 10:30:02 +0100Fijxu(~Fijxu@user/fijxu) fijxu
2024-11-20 10:36:12 +0100 <Guest68> @free evaluate :: Expr a -> a
2024-11-20 10:36:12 +0100 <lambdabot> f . evaluate = evaluate . $map_Expr f
2024-11-20 10:37:04 +0100 <[exa]> Guest68: you may also do `/query lambdabot` and ask in private
2024-11-20 10:37:21 +0100 <Guest68> Oh, thank you. I'll try that.
2024-11-20 10:38:27 +0100 <[exa]> like, not a big issue, just that the attempts here get auto-streamed to at least 500 people :D
2024-11-20 10:40:55 +0100 <kaol> History question: Was there a time when Arrow just assumed arr used (->) instead of being a type class taking a Category?
2024-11-20 10:41:52 +0100 <ncf> what, like arr :: (b -> c) -> b -> c ?
2024-11-20 10:42:05 +0100 <ncf> there aren't many of those...
2024-11-20 10:43:31 +0100jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com)
2024-11-20 10:46:06 +0100__monty__(~toonn@user/toonn) toonn
2024-11-20 10:46:07 +0100 <kaol> It could be that it's just that I had been introduced to arrows with a simple "arr is like lifting a function to it" and I didn't get the bigger picture then.
2024-11-20 10:48:59 +0100jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) jespada
2024-11-20 10:50:00 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2024-11-20 10:52:09 +0100mari-estel(~mari-este@user/mari-estel) mari-estel
2024-11-20 10:54:11 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2024-11-20 10:54:11 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Read error: Connection reset by peer)
2024-11-20 10:54:12 +0100stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2024-11-20 10:54:28 +0100chexum(~quassel@gateway/tor-sasl/chexum) chexum
2024-11-20 10:54:34 +0100stiell_(~stiell@gateway/tor-sasl/stiell) stiell
2024-11-20 10:54:41 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2024-11-20 10:57:18 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-11-20 10:59:10 +0100Fijxu(~Fijxu@user/fijxu) (Ping timeout: 252 seconds)
2024-11-20 11:03:30 +0100mari-estel(~mari-este@user/mari-estel) (Quit: shitty teams)
2024-11-20 11:05:48 +0100chele(~chele@user/chele) chele
2024-11-20 11:07:32 +0100aforemny(~aforemny@i59F4C7F0.versanet.de) aforemny
2024-11-20 11:09:42 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-11-20 11:12:09 +0100lxsameer(~lxsameer@Serene/lxsameer) lxsameer
2024-11-20 11:14:18 +0100aforemny(~aforemny@i59F4C7F0.versanet.de) (Ping timeout: 252 seconds)
2024-11-20 11:14:21 +0100aforemny_(~aforemny@2001:9e8:6cf0:9800:3be1:8adc:eacb:81a7) aforemny
2024-11-20 11:14:30 +0100Guest68(~Guest68@2405:201:12:391a:c627:4da6:1387:26ef) (Quit: Client closed)
2024-11-20 11:15:06 +0100 <jackdk> ISTR old versions of GHC shipping class Arrow without a superclass
2024-11-20 11:16:23 +0100 <int-e> ISTR old versions of GHC not shipping Arrow at all
2024-11-20 11:24:03 +0100mari-estel(~mari-este@user/mari-estel) mari-estel
2024-11-20 11:24:45 +0100drdo(~drdo@bl9-110-63.dsl.telepac.pt) (Ping timeout: 276 seconds)
2024-11-20 11:29:58 +0100 <jackdk> You're probably thinking of even older versions
2024-11-20 11:32:10 +0100 <kaol> The first drafts of Haskell didn't have monads.
2024-11-20 11:35:48 +0100Guest25(~Guest25@87-94-152-62.rev.dnainternet.fi)
2024-11-20 11:36:34 +0100Buliarous(~gypsydang@46.232.210.139) (Ping timeout: 252 seconds)
2024-11-20 11:36:56 +0100lortabac(~lortabac@37.171.105.2) lortabac
2024-11-20 11:38:20 +0100Buliarous(~gypsydang@46.232.210.139) Buliarous
2024-11-20 11:40:21 +0100Fijxu(~Fijxu@user/fijxu) fijxu
2024-11-20 11:40:56 +0100son0p(~ff@2800:e2:f80:ee7::4) (Ping timeout: 244 seconds)
2024-11-20 11:47:31 +0100Fijxu(~Fijxu@user/fijxu) (Ping timeout: 264 seconds)
2024-11-20 11:49:52 +0100pavonia(~user@user/siracusa) siracusa
2024-11-20 11:50:03 +0100acidjnk_new(~acidjnk@p200300d6e7283f43cc25887be993a47b.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2024-11-20 11:50:48 +0100lortabac(~lortabac@37.171.105.2) (Read error: Connection reset by peer)
2024-11-20 11:53:10 +0100Fijxu(~Fijxu@user/fijxu) fijxu
2024-11-20 11:54:30 +0100drdo(~drdo@bl9-110-63.dsl.telepac.pt) drdo
2024-11-20 12:00:51 +0100Guest68(~Guest68@2405:201:12:391a:c627:4da6:1387:26ef)
2024-11-20 12:01:54 +0100Guest68(~Guest68@2405:201:12:391a:c627:4da6:1387:26ef) (Client Quit)
2024-11-20 12:03:43 +0100Fijxu(~Fijxu@user/fijxu) (Ping timeout: 264 seconds)
2024-11-20 12:06:32 +0100hsw(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (Remote host closed the connection)
2024-11-20 12:06:40 +0100hsw(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) hsw
2024-11-20 12:07:35 +0100Guest25(~Guest25@87-94-152-62.rev.dnainternet.fi) (Ping timeout: 256 seconds)
2024-11-20 12:07:57 +0100acidjnk_new(~acidjnk@p200300d6e7283f43cc25887be993a47b.dip0.t-ipconnect.de) acidjnk
2024-11-20 12:08:40 +0100mari97681(~mari-este@user/mari-estel) mari-estel
2024-11-20 12:10:22 +0100mari-estel(~mari-este@user/mari-estel) (Read error: Connection reset by peer)
2024-11-20 12:11:18 +0100mari-estel(~mari-este@user/mari-estel) mari-estel
2024-11-20 12:13:47 +0100mari97681(~mari-este@user/mari-estel) (Ping timeout: 255 seconds)
2024-11-20 12:19:37 +0100zlqrvx(~zlqrvx@user/zlqrvx) (Quit: %quit%)
2024-11-20 12:20:53 +0100zlqrvx(~zlqrvx@user/zlqrvx) zlqrvx
2024-11-20 12:21:00 +0100 <probie> kaol: Drafts? Monads are completely absent from 1.2. It's not until 1.3 they turn up
2024-11-20 12:30:07 +0100 <kaol> I was thinking in terms of anything before Haskell 98 being drafts. True, that's going a bit fast and loose.
2024-11-20 12:33:30 +0100zlqrvx(~zlqrvx@user/zlqrvx) (Quit: %quit%)
2024-11-20 12:33:57 +0100zlqrvx(~zlqrvx@user/zlqrvx) zlqrvx
2024-11-20 12:45:01 +0100Fijxu(~Fijxu@user/fijxu) fijxu
2024-11-20 12:48:58 +0100 <dminuoso> bwe: Humor has never become irrelevant. :-)
2024-11-20 12:50:30 +0100 <dminuoso> kaol: Given that most haskellers are writing in non-standardized Haskell these days, it's all back to draft then.
2024-11-20 12:50:33 +0100Fijxu(~Fijxu@user/fijxu) (Ping timeout: 252 seconds)
2024-11-20 12:50:41 +0100 <dminuoso> A new Haskell standard is probably not coming.
2024-11-20 12:51:03 +0100 <dminuoso> Haskell2020 never succeeded.
2024-11-20 12:51:54 +0100jinsun(~jinsun@user/jinsun) jinsun
2024-11-20 12:52:42 +0100alp_(~alp@2001:861:8ca0:4940:483b:a21e:7fb4:76cd) (Remote host closed the connection)
2024-11-20 12:52:59 +0100alp_(~alp@2001:861:8ca0:4940:97d6:816b:8add:3996)
2024-11-20 12:53:04 +0100 <mari-estel> the age of standards is over. Now it is either: survive with your implementation or get a big company push their opinionated framework
2024-11-20 12:55:46 +0100 <bwe> dminuoso: so which way other than searching through github repos are we left with to learn and find the approaches to adopt for yourself?
2024-11-20 12:56:17 +0100 <mari-estel> let trained machines tell you how it is right
2024-11-20 13:05:14 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2024-11-20 13:06:09 +0100ethantwardy(user@user/ethantwardy) (Ping timeout: 260 seconds)
2024-11-20 13:10:38 +0100ethantwardy(user@user/ethantwardy) ethantwardy
2024-11-20 13:11:31 +0100alp_(~alp@2001:861:8ca0:4940:97d6:816b:8add:3996) (Ping timeout: 252 seconds)
2024-11-20 13:13:11 +0100mari-estel(~mari-este@user/mari-estel) (Ping timeout: 255 seconds)
2024-11-20 13:19:58 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de) (Ping timeout: 245 seconds)
2024-11-20 13:20:53 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de)
2024-11-20 13:21:50 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en)
2024-11-20 13:21:50 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-11-20 13:22:55 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de)
2024-11-20 13:27:00 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac
2024-11-20 13:32:00 +0100SlackCoder(~SlackCode@64-94-63-8.ip.weststar.net.ky) (Quit: Leaving)
2024-11-20 13:37:40 +0100acidjnk_new(~acidjnk@p200300d6e7283f43cc25887be993a47b.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2024-11-20 13:37:53 +0100acidjnk_new(~acidjnk@p200300d6e7283f43b9a67790c51d38b0.dip0.t-ipconnect.de) acidjnk
2024-11-20 13:40:27 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2024-11-20 13:41:17 +0100Fijxu(~Fijxu@user/fijxu) fijxu
2024-11-20 13:43:10 +0100alp_(~alp@2001:861:8ca0:4940:f821:65d4:a88b:180b)
2024-11-20 13:44:25 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
2024-11-20 13:44:26 +0100ljdarj1ljdarj
2024-11-20 13:44:30 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds)
2024-11-20 13:45:39 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-11-20 13:47:49 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Client Quit)
2024-11-20 13:53:41 +0100Fijxu(~Fijxu@user/fijxu) (Ping timeout: 255 seconds)
2024-11-20 13:57:22 +0100lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 252 seconds)
2024-11-20 13:57:38 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Remote host closed the connection)
2024-11-20 14:00:06 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) TheCoffeMaker
2024-11-20 14:01:01 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de)
2024-11-20 14:02:53 +0100Digitteknohippie(~user@user/digit) Digit
2024-11-20 14:03:01 +0100Digit(~user@user/digit) (Ping timeout: 244 seconds)
2024-11-20 14:10:35 +0100vanishingideal(~vanishing@user/vanishingideal) (Quit: leaving)
2024-11-20 14:14:31 +0100 <bwe> dminuoso: hm, constraint depends on dual which is now deprecated and there is a break using current GHC 9.10.1.
2024-11-20 14:15:28 +0100 <bwe> dminuoso: wait. It's weird. Why is GHC telling me that while hackage doesn't list dual as dependency?
2024-11-20 14:16:01 +0100 <bwe> ah, it's constraintS not constraint.
2024-11-20 14:27:22 +0100alp_(~alp@2001:861:8ca0:4940:f821:65d4:a88b:180b) (Remote host closed the connection)
2024-11-20 14:27:39 +0100alp_(~alp@2001:861:8ca0:4940:b086:6e29:f872:e211)
2024-11-20 14:28:42 +0100SlackCoder(~SlackCode@64-94-63-8.ip.weststar.net.ky) SlackCoder
2024-11-20 14:29:21 +0100mari-estel(~mari-este@user/mari-estel) mari-estel
2024-11-20 14:29:34 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2024-11-20 14:35:45 +0100Pozyomka(~pyon@user/pyon) (Ping timeout: 248 seconds)
2024-11-20 14:36:45 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2024-11-20 14:37:22 +0100alp_(~alp@2001:861:8ca0:4940:b086:6e29:f872:e211) (Remote host closed the connection)
2024-11-20 14:37:39 +0100alp_(~alp@2001:861:8ca0:4940:53c2:f590:3f4e:6591)
2024-11-20 14:43:07 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be) kuribas
2024-11-20 14:43:22 +0100euleritian(~euleritia@dynamic-176-003-034-243.176.3.pool.telefonica.de)
2024-11-20 14:44:34 +0100euleritian(~euleritia@dynamic-176-003-034-243.176.3.pool.telefonica.de) (Read error: Connection reset by peer)
2024-11-20 14:44:51 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de)
2024-11-20 14:47:34 +0100Fijxu(~Fijxu@user/fijxu) fijxu
2024-11-20 14:54:56 +0100ubert(~Thunderbi@178.115.41.15.wireless.dyn.drei.com) (Ping timeout: 272 seconds)
2024-11-20 14:55:12 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds)
2024-11-20 14:55:33 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de)
2024-11-20 14:56:32 +0100weary-traveler(~user@user/user363627) user363627
2024-11-20 14:58:03 +0100ubert(~Thunderbi@178.115.41.15.wireless.dyn.drei.com) ubert
2024-11-20 15:02:47 +0100son0p(~ff@2800:e6:4001:6cc3:2748:5c2a:65d9:57ac) son0p
2024-11-20 15:05:04 +0100Guest96(~Guest96@2402:3a80:9e:5890:e83f:36b9:abb4:3cb8)
2024-11-20 15:05:17 +0100Guest96(~Guest96@2402:3a80:9e:5890:e83f:36b9:abb4:3cb8) (Client Quit)
2024-11-20 15:07:39 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.4.2)
2024-11-20 15:17:16 +0100stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2024-11-20 15:17:39 +0100stiell_(~stiell@gateway/tor-sasl/stiell) stiell
2024-11-20 15:18:27 +0100CiaoSen(~Jura@2a05:5800:211:4200:ca4b:d6ff:fec1:99da) CiaoSen
2024-11-20 15:36:17 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
2024-11-20 15:38:16 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de)
2024-11-20 15:38:43 +0100CiaoSen(~Jura@2a05:5800:211:4200:ca4b:d6ff:fec1:99da) (Ping timeout: 245 seconds)
2024-11-20 15:41:27 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2024-11-20 15:41:29 +0100lortabac(~lortabac@37.166.62.73) lortabac
2024-11-20 15:44:01 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds)
2024-11-20 15:44:02 +0100ljdarj1ljdarj
2024-11-20 15:44:17 +0100divya(~user@139.5.11.231) divya
2024-11-20 15:49:50 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-11-20 15:51:35 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
2024-11-20 15:51:47 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de)
2024-11-20 15:55:26 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-11-20 15:56:17 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de)
2024-11-20 15:57:37 +0100alp_(~alp@2001:861:8ca0:4940:53c2:f590:3f4e:6591) (Ping timeout: 252 seconds)
2024-11-20 16:01:44 +0100Digitteknohippie(~user@user/digit) (Ping timeout: 260 seconds)
2024-11-20 16:11:35 +0100Digit(~user@user/digit) Digit
2024-11-20 16:12:44 +0100SlackCoder(~SlackCode@64-94-63-8.ip.weststar.net.ky) (Quit: Leaving)
2024-11-20 16:26:13 +0100mari-estel(~mari-este@user/mari-estel) (Ping timeout: 252 seconds)
2024-11-20 16:34:22 +0100lortabac(~lortabac@37.166.62.73) (Ping timeout: 272 seconds)
2024-11-20 16:36:47 +0100mari-estel(~mari-este@user/mari-estel) mari-estel
2024-11-20 16:37:37 +0100 <bwe> dminuoso: How close am I to the solution? https://paste.tomsmeding.com/kSbnWM3t
2024-11-20 16:39:47 +0100Angelz(Angelz@2605:6400:30:fc15:9bd1:2217:41cd:bb15) (Changing host)
2024-11-20 16:39:47 +0100Angelz(Angelz@user/angelz) angelz
2024-11-20 16:40:20 +0100 <dminuoso> bwe: A bit far away. With constraints, instead of carrying a proxy around, you'd pass just a Dict around.
2024-11-20 16:40:34 +0100 <dminuoso> (I mean you could conceive situations where you might want both, too)
2024-11-20 16:48:14 +0100 <bwe> dminuoso: ok, so Dict replaces in my case simply Proxy. So, therefore also in the instances: https://play-haskell.tomsmeding.com/saved/zCSNq6hE
2024-11-20 16:48:47 +0100 <dminuoso> bwe: This looks still wrong,
2024-11-20 16:49:43 +0100 <dminuoso> withDict :: HasDict c e => e -> (c => r) -> r
2024-11-20 16:50:14 +0100 <dminuoso> So the idea is to use it like this: `withDict e (fromHTML html)`
2024-11-20 16:50:38 +0100 <dminuoso> fromHTML then does not take any Dict argument.
2024-11-20 16:50:44 +0100 <dminuoso> Imagine this:
2024-11-20 16:51:07 +0100 <dminuoso> :t fmap (+ (1 :: Int))
2024-11-20 16:51:07 +0100 <lambdabot> Functor f => f Int -> f Int
2024-11-20 16:51:13 +0100 <dminuoso> Note that this function takes a constraint.
2024-11-20 16:51:30 +0100 <bwe> (c => r)
2024-11-20 16:51:52 +0100 <dminuoso> bwe: If you squint a bit, => is really not too different from ->
2024-11-20 16:52:22 +0100 <dminuoso> We can pretend the constraint to be a kind of argument that needs to be provided.
2024-11-20 16:52:34 +0100 <dminuoso> Except that GHC just automgically fills this, normally.
2024-11-20 16:52:56 +0100 <dminuoso> `constraints` gives you a way to reify a dictionary, pass it around, and then discharge a constraint with it.
2024-11-20 16:53:02 +0100 <dminuoso> by "discharge" I mean like function application.
2024-11-20 16:53:20 +0100 <dminuoso> take something that wants a dictionary, and stuff the dictionary in to satisfy everything.
2024-11-20 16:53:51 +0100SlackCoder(~SlackCode@208.26.70.132) SlackCoder
2024-11-20 16:54:04 +0100 <bwe> so, where do I stuff the dictionary? line 24 `fromDBEntry :: Dict (IntoGeneral a)` is that fine so far?
2024-11-20 16:54:50 +0100 <dminuoso> % class Foo where f :: Int
2024-11-20 16:54:50 +0100 <yahb2> <no output>
2024-11-20 16:54:53 +0100 <dminuoso> % :t f
2024-11-20 16:54:53 +0100 <yahb2> f :: Foo => Int
2024-11-20 16:55:02 +0100 <dminuoso> bwe: See this?
2024-11-20 16:55:17 +0100 <dminuoso> Or maybe this:
2024-11-20 16:55:27 +0100 <dminuoso> % class Foo a where f :: Int
2024-11-20 16:55:27 +0100 <yahb2> <interactive>:77:19: error: [GHC-39999] ; • Could not deduce ‘Foo a0’ ; from the context: Foo a ; bound by the type signature for: ; f :: forall {k} (a :: k). F...
2024-11-20 16:55:30 +0100 <dminuoso> % class Bar a where f :: Int
2024-11-20 16:55:30 +0100 <yahb2> <interactive>:79:19: error: [GHC-39999] ; • Could not deduce ‘Bar a0’ ; from the context: Bar a ; bound by the type signature for: ; f :: forall {k} (a :: k). B...
2024-11-20 16:56:58 +0100 <bwe> so the type instance does carry its class with it
2024-11-20 16:57:23 +0100 <bwe> so I actually put `Foo => Int` into `(c => r)`
2024-11-20 16:57:26 +0100 <dminuoso> % :set -XAllowAmbiguousTypes
2024-11-20 16:57:27 +0100 <yahb2> <no output>
2024-11-20 16:57:28 +0100 <dminuoso> % class Bar a where f :: Int
2024-11-20 16:57:28 +0100 <yahb2> <no output>
2024-11-20 16:57:30 +0100 <dminuoso> Here we go.
2024-11-20 16:57:33 +0100 <dminuoso> :t f
2024-11-20 16:57:34 +0100 <lambdabot> FromExpr a => a
2024-11-20 16:57:42 +0100 <dminuoso> % :t f
2024-11-20 16:57:42 +0100 <yahb2> f :: forall {k} (a :: k). Bar a => Int
2024-11-20 16:57:54 +0100 <dminuoso> bwe: Right.
2024-11-20 16:58:06 +0100 <dminuoso> bwe: Or in this case `Bar a => Int`
2024-11-20 16:58:20 +0100 <bwe> withDict :: e -> (Bar a => Int) -> Int
2024-11-20 16:58:31 +0100 <dminuoso> bwe: You can then use DataKinds to promote SiteVariant too, that way you dont need separate `SiteA` and `SiteB` types.
2024-11-20 16:58:32 +0100 <bwe> so what's `e` then?
2024-11-20 16:59:12 +0100 <bwe> dminuoso: first I want to grasp `withDict` :)
2024-11-20 16:59:13 +0100 <dminuoso> bwe: Lets pretend withDict :: Dict c -> (c => r) -> r
2024-11-20 16:59:18 +0100 <dminuoso> Which is the simpler form.
2024-11-20 16:59:33 +0100 <dminuoso> (And in fact there exists an instance that allows you to use it as such)
2024-11-20 17:00:11 +0100 <dminuoso> "Assuming we have a reified dictionary for constraint c, and some r that needs a dictionary c, this discharges the `c =>` constraint and gives you the r back.
2024-11-20 17:00:12 +0100 <bwe> withDict :: Dict (Bar a) -> (Bar a => Int) -> Int
2024-11-20 17:00:24 +0100 <dminuoso> Yup, thats it.
2024-11-20 17:01:10 +0100 <bwe> now it clicks. Dict __(Bar a) -> (__Bar a__ => Int) -> Int
2024-11-20 17:01:11 +0100 <dminuoso> bwe: Under the hood `C =>` becomes really just some sort of function argument that takes a some actual dictionary.
2024-11-20 17:01:36 +0100 <dminuoso> Except all that dictionary passing happens just invisibly and automatically under the hood.
2024-11-20 17:01:44 +0100 <dminuoso> With `constraints` you make it explicit and controllable
2024-11-20 17:01:45 +0100 <bwe> Whatever Dict carries, withDict discharges from the second argument
2024-11-20 17:01:56 +0100 <dminuoso> Exactly. Its really just like function application
2024-11-20 17:01:59 +0100 <dminuoso> :t ($)
2024-11-20 17:02:00 +0100 <lambdabot> (a -> b) -> a -> b
2024-11-20 17:02:05 +0100 <dminuoso> :t flip ($)
2024-11-20 17:02:06 +0100 <lambdabot> a -> (a -> c) -> c
2024-11-20 17:02:09 +0100 <dminuoso> Its pretty much the same thing. :)
2024-11-20 17:02:24 +0100 <bwe> so how to apply this now…
2024-11-20 17:03:15 +0100 <dminuoso> bwe: So first, get rid of SiteA and SiteB datatypes.
2024-11-20 17:03:33 +0100 <dminuoso> bwe: Then flip on DataKinds, this way you suddenly get these magic types `A` and `B`
2024-11-20 17:03:41 +0100 <dminuoso> % :set -XDataKinds
2024-11-20 17:03:41 +0100 <yahb2> <no output>
2024-11-20 17:03:52 +0100 <dminuoso> % data SiteVariant = SiteA | SiteB
2024-11-20 17:03:52 +0100 <yahb2> <no output>
2024-11-20 17:03:56 +0100 <dminuoso> % :k SiteA
2024-11-20 17:03:56 +0100 <yahb2> SiteA :: SiteVariant
2024-11-20 17:05:15 +0100 <bwe> https://play-haskell.tomsmeding.com/saved/M98rHWtW
2024-11-20 17:05:37 +0100 <bwe> is DataKinds just using the type as a type and not to carry its value?
2024-11-20 17:05:38 +0100alp_(~alp@2001:861:8ca0:4940:fc9d:90cc:a5de:4f14)
2024-11-20 17:06:29 +0100 <dminuoso> bwe: DataKind promotes `SiteVariant` into a Kind, and conjures types `SiteA :: SiteVariant` and `SiteB :: SiteVariant`
2024-11-20 17:07:55 +0100 <bwe> (while `SiteA` and `SiteB` continue to exist on the data level, too)
2024-11-20 17:07:59 +0100 <dminuoso> Right.
2024-11-20 17:08:19 +0100 <bwe> ay, what's next?
2024-11-20 17:08:38 +0100 <dminuoso> So Im thinking maybe a HasDict instance.
2024-11-20 17:08:58 +0100 <dminuoso> This is all getting really strange, at the end.
2024-11-20 17:09:15 +0100 <dminuoso> Ultimately all you need is just `fromHTML :: SiteVariant -> ByteString -> General` of couerse.
2024-11-20 17:09:56 +0100 <bwe> but this will be no more instance but normal function, right?
2024-11-20 17:09:59 +0100 <Square2> I might get into the situation of making my department of 50 (12 devs) adapt Haskell. It's a bit scary tbh. How to onboard people who mostly programmed java past 15 years.
2024-11-20 17:10:07 +0100 <dminuoso> bwe: Right.
2024-11-20 17:10:50 +0100Alleria(~Alleria@user/alleria) (Quit: Textual IRC Client: www.textualapp.com)
2024-11-20 17:10:57 +0100 <dminuoso> Square2: Having onboarded a bunch of people onto Haskell, Id say it depends very much on the company culture and the people.
2024-11-20 17:11:35 +0100 <dminuoso> bwe: I think we just ended up on a fun journey about constraints due to an XY problem. ;)
2024-11-20 17:11:38 +0100 <Square2> dminuoso, Yeah, I feel it could be a uphill battle. Some are probably not up to it.
2024-11-20 17:11:43 +0100 <bwe> dminuoso: so we drop withDict or not?
2024-11-20 17:11:46 +0100 <dminuoso> Square2: Are they motivated to learn Haskell?
2024-11-20 17:11:54 +0100 <dminuoso> bwe: Hey, we're just exploring for fun, right?
2024-11-20 17:12:13 +0100 <dminuoso> You decide. :-)
2024-11-20 17:12:15 +0100 <bwe> dminuoso: I am just before that fun bit :).
2024-11-20 17:12:39 +0100 <Square2> dminuoso, Probably not. But most of them will just use it to write simple functions. All IO will remain in Java.
2024-11-20 17:13:12 +0100 <dminuoso> Square2: If they are hardcore Java developers, not motivated to learn Haskell... Im not sure this is going to end well.
2024-11-20 17:14:19 +0100 <Square2> dminuoso, I mean, they can probably see the motivation of using it. We're in a "there is no other way" situation.
2024-11-20 17:14:36 +0100 <dminuoso> You can only lead a horse to the water.
2024-11-20 17:14:43 +0100 <bwe> dminuoso: can we go back to complete the withDict first? I pretty much appreciate that DataKinds, though, later.
2024-11-20 17:14:57 +0100 <dminuoso> With Haskell, there is a large portion about unlearning mindsets and learning new techniques, almost starting from scratch.
2024-11-20 17:15:05 +0100 <dminuoso> bwe: Lets keep the DataKinds, though.
2024-11-20 17:15:31 +0100 <bwe> dminuoso: here's the latest version: https://play-haskell.tomsmeding.com/saved/9jXIcvKT
2024-11-20 17:16:16 +0100 <bwe> dminuoso: oh, I see, there's not too much difference in concepts with or without DataKinds
2024-11-20 17:16:18 +0100 <dminuoso> bwe: So the idea is that with HasDict you can provide evidence for another constraint.
2024-11-20 17:16:31 +0100 <dminuoso> bwe: Say you can attach evidence onto a SiteVariant for your HasGeneral constraint.
2024-11-20 17:16:43 +0100 <dminuoso> bwe: Right, DataKinds just cleans it up.
2024-11-20 17:16:53 +0100 <dminuoso> So you dont have both A and SiteA flying around.
2024-11-20 17:17:15 +0100 <bwe> (I was scared for it to complicate things further.)
2024-11-20 17:18:13 +0100 <dminuoso> Well, we're of course overcomplicating all of this. I did not know this was an XY problem yesterday. ;-)
2024-11-20 17:18:29 +0100 <dminuoso> Might as well go all-in!
2024-11-20 17:18:31 +0100 <bwe> Yeah, I had that gut feeling already.
2024-11-20 17:18:42 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 272 seconds)
2024-11-20 17:19:23 +0100 <dminuoso> bwe: So if you bring your HasGeneral typeclass back, make instances for `HasGeneral SiteA` and `HasGeneral SiteB`
2024-11-20 17:19:30 +0100 <Square2> dminuoso, Yes, I've been there. But, yeah. To begin with, they'll only need to grasp basic functor/monad constructs. I feel it should be doable for people who got MSc's in comp science.
2024-11-20 17:19:46 +0100 <dminuoso> Square2: My best advice, avoid the words `functor` and `monad`.
2024-11-20 17:19:53 +0100 <dminuoso> Avoid the constructs entirely.
2024-11-20 17:20:23 +0100ubert(~Thunderbi@178.115.41.15.wireless.dyn.drei.com) (Remote host closed the connection)
2024-11-20 17:20:31 +0100 <Square2> Not sure I can, but yeah I see your point.
2024-11-20 17:20:37 +0100 <mari-estel> huh come on, functors are not that scary
2024-11-20 17:20:42 +0100ubert(~Thunderbi@178.115.41.15.wireless.dyn.drei.com) ubert
2024-11-20 17:22:44 +0100 <bwe> dminuoso: https://play-haskell.tomsmeding.com/saved/Yl8rZptl
2024-11-20 17:25:52 +0100 <bwe> dminuoso: `Dict (IntoGeneral a)` in the function head of `fromDBEntry` remains, because that is the dict for `withDict dict`?
2024-11-20 17:26:47 +0100 <bwe> dminuoso: Do I have to define HasDict instances now?
2024-11-20 17:28:02 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-11-20 17:29:44 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de)
2024-11-20 17:30:33 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-11-20 17:31:26 +0100 <bwe> I don't, because `withDict :: Dict c -> (c => r) -> r` is possible and `Dict (IntoGeneral a)` comes into play here…
2024-11-20 17:32:44 +0100 <bwe> `withDict :: Dict (IntoGeneral a) -> (IntoGeneral a => SiteVariant) -> SiteVariant`
2024-11-20 17:35:10 +0100 <bwe> dminuoso: still here? https://play-haskell.tomsmeding.com/saved/6PnEpvyR
2024-11-20 17:38:28 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2024-11-20 17:41:17 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2024-11-20 17:42:41 +0100img(~img@user/img) img
2024-11-20 17:45:45 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de)
2024-11-20 17:49:20 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-11-20 17:50:25 +0100euleritian(~euleritia@dynamic-176-004-009-213.176.4.pool.telefonica.de)
2024-11-20 17:52:51 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
2024-11-20 17:58:35 +0100caconym(~caconym@user/caconym) caconym
2024-11-20 17:59:01 +0100SlackCoder(~SlackCode@208.26.70.132) (Remote host closed the connection)
2024-11-20 18:07:09 +0100euleritian(~euleritia@dynamic-176-004-009-213.176.4.pool.telefonica.de) (Read error: Connection reset by peer)
2024-11-20 18:08:01 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de)
2024-11-20 18:09:59 +0100chele(~chele@user/chele) (Remote host closed the connection)
2024-11-20 18:14:27 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-11-20 18:26:29 +0100son0p(~ff@2800:e6:4001:6cc3:2748:5c2a:65d9:57ac) (Ping timeout: 252 seconds)
2024-11-20 18:28:07 +0100Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla
2024-11-20 18:30:41 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en)
2024-11-20 18:31:09 +0100forell(~forell@user/forell) forell
2024-11-20 18:31:31 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2024-11-20 18:33:43 +0100acidjnk_new(~acidjnk@p200300d6e7283f43b9a67790c51d38b0.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2024-11-20 18:35:23 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
2024-11-20 18:35:23 +0100ljdarj1ljdarj
2024-11-20 18:38:54 +0100chexum_(~quassel@gateway/tor-sasl/chexum) chexum
2024-11-20 18:39:51 +0100_xor(~xor@ip-66-42-132-175.dynamic.fuse.net) (Quit: brb/bbiab)
2024-11-20 18:40:44 +0100 <tomsmeding> bwe: https://play-haskell.tomsmeding.com/saved/jPsc7ZTz ?
2024-11-20 18:41:17 +0100 <tomsmeding> though `fromHTML (Proxy @SiteA) html` also works, why was the withDict there?
2024-11-20 18:42:18 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds)
2024-11-20 18:42:35 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Ping timeout: 255 seconds)
2024-11-20 18:42:56 +0100euleritian(~euleritia@ip4d16fc9f.dynamic.kabel-deutschland.de)
2024-11-20 18:43:06 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 260 seconds)