Logs: liberachat/#haskell
| 2021-08-24 21:51:11 | × | markpythonicbtc quits (~textual@2601:647:5a00:35:999f:46ac:3d0f:19d0) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 2021-08-24 21:51:45 | → | markpythonicbtc joins (~textual@2601:647:5a00:35:999f:46ac:3d0f:19d0) |
| 2021-08-24 21:53:45 | × | jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.2) |
| 2021-08-24 21:54:59 | × | haykam quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
| 2021-08-24 21:55:12 | → | haykam joins (~haykam@static.100.2.21.65.clients.your-server.de) |
| 2021-08-24 21:57:36 | → | jgeerds joins (~jgeerds@55d4b311.access.ecotel.net) |
| 2021-08-24 21:58:50 | × | jtomas quits (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
| 2021-08-24 21:59:14 | → | jtomas joins (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) |
| 2021-08-24 21:59:29 | × | cuz quits (~user@38.140.58.234) (Ping timeout: 248 seconds) |
| 2021-08-24 22:04:33 | × | skykanin quits (~skykanin@115.81-166-221.customer.lyse.net) (Quit: WeeChat 3.2) |
| 2021-08-24 22:05:35 | → | chris joins (~chris@81.96.113.213) |
| 2021-08-24 22:05:38 | chris | is now known as Guest1966 |
| 2021-08-24 22:05:39 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 2021-08-24 22:06:28 | → | ubert joins (~Thunderbi@178.165.204.112.wireless.dyn.drei.com) |
| 2021-08-24 22:06:53 | × | acidjnk_new3 quits (~acidjnk@p200300d0c72b9534e4a445cd6b407eb5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 2021-08-24 22:07:59 | × | ubert quits (~Thunderbi@178.165.204.112.wireless.dyn.drei.com) (Client Quit) |
| 2021-08-24 22:08:17 | → | ubert joins (~Thunderbi@178.165.204.112.wireless.dyn.drei.com) |
| 2021-08-24 22:09:19 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) |
| 2021-08-24 22:11:22 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 2021-08-24 22:12:31 | × | ubert quits (~Thunderbi@178.165.204.112.wireless.dyn.drei.com) (Ping timeout: 250 seconds) |
| 2021-08-24 22:13:49 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Ping timeout: 250 seconds) |
| 2021-08-24 22:14:27 | → | ubert joins (~Thunderbi@178.165.204.112.wireless.dyn.drei.com) |
| 2021-08-24 22:15:10 | × | ubert quits (~Thunderbi@178.165.204.112.wireless.dyn.drei.com) (Client Quit) |
| 2021-08-24 22:15:51 | <hseg> | why is ghc complaining it cannot prove c (Sum a) in the call to f here? http://ix.io/3wRV |
| 2021-08-24 22:15:55 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) |
| 2021-08-24 22:16:13 | × | mouseghost quits (~draco@user/mouseghost) (Quit: mew wew) |
| 2021-08-24 22:19:18 | × | jtomas quits (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection) |
| 2021-08-24 22:19:25 | <glguy> | f @Sum :: c a => c (Sum a) => [Sum a] -> [Sum a] |
| 2021-08-24 22:19:37 | <glguy> | but you only asserted that: c a => on the outside |
| 2021-08-24 22:19:43 | <glguy> | so c (Sum a) is leftover |
| 2021-08-24 22:20:18 | <hseg> | not sure I follow |
| 2021-08-24 22:20:32 | <glguy> | to use f @Sum, you need two instances: c a, and c (Sum a) |
| 2021-08-24 22:20:42 | <glguy> | you only had one of those available so you got an error about the other |
| 2021-08-24 22:20:42 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 2021-08-24 22:20:56 | <hseg> | ah. meant a quantified constraint instead |
| 2021-08-24 22:21:03 | <hseg> | not a curried constraint arrow |
| 2021-08-24 22:21:07 | <glguy> | ah |
| 2021-08-24 22:21:37 | <hseg> | wanted "you can call this function whose type depends on f provided you show c a implies c (f a)" |
| 2021-08-24 22:22:42 | <glguy> | What you wrote means you can only use f *if* it's true that c a implies c (Sum a), right? |
| 2021-08-24 22:22:56 | <hseg> | yup |
| 2021-08-24 22:23:00 | <glguy> | but we don't know that |
| 2021-08-24 22:23:45 | <glguy> | did you want that implication as a top-level constraint perhaps instead of attached to 'f'? |
| 2021-08-24 22:23:48 | <hseg> | .. meant the first parameter to test can only be called at such f s.t. c a implies c (f a) |
| 2021-08-24 22:24:10 | <glguy> | since we don't know that c a implies c (Sum a) we can't use f |
| 2021-08-24 22:25:07 | <hseg> | ah, right |
| 2021-08-24 22:25:11 | <hseg> | hrmph |
| 2021-08-24 22:25:56 | <hseg> | original usecase was that I want a combinator that will tag/untag variables that have useless Monoid constraints |
| 2021-08-24 22:26:00 | <hseg> | which worked fine |
| 2021-08-24 22:26:47 | <hseg> | (so my passed function was eg :: (forall f. Monoid (f l) => t (f l) -> t (f l) -> t (f l)) |
| 2021-08-24 22:27:14 | <hseg> | except now I want to pass a function that makes an additional assumption on this f l |
| 2021-08-24 22:27:35 | <hseg> | hrm |
| 2021-08-24 22:28:31 | <hseg> | ig the way to spell this would be to have test constrained with (c a => c (Sum a)), and have its parameter just assume c (f a) |
| 2021-08-24 22:29:36 | <hseg> | ... and indeed, am forced to write what can equivalently and more simply can be written test :: c (Sum a) => ... |
| 2021-08-24 22:31:07 | <hseg> | iow, qc wouldn't help me here unless I could magically synthesise a type constructor f s.t. c a => c (f a) |
| 2021-08-24 22:33:44 | <hseg> | thanks! |
| 2021-08-24 22:41:27 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 2021-08-24 22:42:10 | × | Gurkenglas quits (~Gurkengla@dslb-088-064-053-140.088.064.pools.vodafone-ip.de) (Ping timeout: 240 seconds) |
| 2021-08-24 22:42:13 | → | shailangsa joins (~shailangs@host86-185-102-120.range86-185.btcentralplus.com) |
| 2021-08-24 22:45:33 | → | abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
| 2021-08-24 22:45:53 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
| 2021-08-24 22:46:01 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 2021-08-24 22:46:13 | → | lavaman joins (~lavaman@98.38.249.169) |
| 2021-08-24 22:50:39 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds) |
| 2021-08-24 22:52:15 | → | sjb0 joins (~stephen@1.145.81.71) |
| 2021-08-24 22:55:00 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Remote host closed the connection) |
| 2021-08-24 22:56:38 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) |
| 2021-08-24 22:58:08 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 2021-08-24 22:59:03 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Read error: Connection reset by peer) |
| 2021-08-24 22:59:22 | × | chisui quits (~chisui@200116b868760900d980a481ca884939.dip.versatel-1u1.de) (Ping timeout: 246 seconds) |
| 2021-08-24 22:59:48 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 2021-08-24 23:03:49 | × | Ananta-shesha quits (~pjetcetal@2.95.210.196) (Remote host closed the connection) |
| 2021-08-24 23:05:19 | × | haykam quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
| 2021-08-24 23:05:33 | → | haykam joins (~haykam@static.100.2.21.65.clients.your-server.de) |
| 2021-08-24 23:11:09 | → | Natch joins (~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se) |
| 2021-08-24 23:11:32 | → | Ananta-shesha joins (~pjetcetal@2.95.210.196) |
| 2021-08-24 23:12:10 | × | dextaa quits (~DV@user/dextaa) (Ping timeout: 240 seconds) |
| 2021-08-24 23:13:39 | → | dextaa joins (~DV@user/dextaa) |
| 2021-08-24 23:15:17 | <hseg> | hrmmph. any ideas on how to reduce this boilerplate? http://ix.io/3wS6 |
| 2021-08-24 23:16:27 | × | jgeerds quits (~jgeerds@55d4b311.access.ecotel.net) (Ping timeout: 240 seconds) |
| 2021-08-24 23:17:21 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 2021-08-24 23:17:27 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 240 seconds) |
| 2021-08-24 23:18:58 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2) |
| 2021-08-24 23:21:23 | × | oldsk00l quits (~znc@ec2-3-120-38-228.eu-central-1.compute.amazonaws.com) (Remote host closed the connection) |
| 2021-08-24 23:22:14 | → | benin036932 joins (~benin@183.82.178.142) |
| 2021-08-24 23:25:49 | <hseg> | so it seems I'm falling into the same trap I did a couple minutes ago here? http://ix.io/3wS8 |
| 2021-08-24 23:26:34 | <hseg> | viz. I'm expecting a constrained parameter to bring the required dicts with it |
| 2021-08-24 23:27:13 | <hseg> | where instead a parameter (c => t) means I can only call that parameter in contexts where c is true |
| 2021-08-24 23:27:46 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 2021-08-24 23:28:14 | <hseg> | it seems what I want is an existential quantifier |
| 2021-08-24 23:28:42 | <hseg> | which requires me to pack that parameter up in a GADT |
| 2021-08-24 23:29:13 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 250 seconds) |
| 2021-08-24 23:29:14 | <hseg> | in which case I can scrap most of this approach, and try just doing GADT+evaluator |
| 2021-08-24 23:33:18 | → | aegon joins (~mike@174.127.249.180) |
| 2021-08-24 23:33:52 | × | Guest1966 quits (~chris@81.96.113.213) (Ping timeout: 252 seconds) |
| 2021-08-24 23:34:22 | <aegon> | I need to compose effects in a new project and am realizing mtl is not the best choice according to what I am reading. Whats the actual difference of transformers? Is there something that summarizes the differences / reasoning behind transformers vs mtl? |
| 2021-08-24 23:35:04 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Remote host closed the connection) |
| 2021-08-24 23:35:09 | <hpc> | iirc one is the types and the other is the type classes |
| 2021-08-24 23:35:42 | <hpc> | i usually just think of them as the same thing |
| 2021-08-24 23:36:37 | <aegon> | so i should depend on both? |
| 2021-08-24 23:36:40 | → | d0ku joins (~d0ku@178.43.56.75.ipv4.supernova.orange.pl) |
All times are in UTC.