Home freenode/#haskell: Logs Calendar

Logs on 2020-10-13 (freenode/#haskell)

00:00:01 × CrystalNice quits (~CrystalNi@s91904426.blix.com) ()
00:00:02 <newhoggy> I think the danger is if a page you're not done with gets evicted because you're aggressively pulling in new pages and you are forced to pay to reload it. On AWS, that's likely to be more expensive.
00:00:50 <newhoggy> The other reason streaming is prefferrably is the CSV files *usually* come from S3 in compressed form rather than from local disk.
00:00:58 <newhoggy> preferrable*
00:01:16 <ski> % 0x10_10.10_10
00:01:16 <yahb> ski: 4112.062744140625
00:01:30 <ski> % 0b10_10.10_10
00:01:31 <yahb> ski: ; <interactive>:151:1: error:; * Could not deduce (Num (b0 -> c)); (maybe you haven't applied a function to enough arguments?); from the context: (Num (b -> c), Num (a -> b)); bound by the inferred type for `it':; forall b c a. (Num (b -> c), Num (a -> b)) => a -> c; at <interactive>:151:1-13; The type variable `b0' is ambiguous; * In the ambig
00:02:05 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 240 seconds)
00:02:24 × jedws quits (~jedws@121.209.161.98) (Quit: My MacBook has gone to sleep. ZZZzzz…)
00:03:31 <Axman6> newhoggy: sure, though my take on this is that if you _do_ have a single strict bytestring, you should be abble to process it efficiently
00:03:38 <newhoggy> Most likely use case is outside the cloud. Either locally or custom hardware.
00:03:57 <Axman6> I would be interested to see the benchmark comparing both
00:04:21 <newhoggy> Yeah. `hw-dsv` does have a strict mode which uses `mmap`
00:05:34 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:6800:17f1:f8ae:fc06)
00:05:35 <newhoggy> I think it ends up slower in general because it has to build a `cspoppy` index.
00:05:36 <Axman6> great - I couldn't remember from looking at the code yesterday
00:06:25 <newhoggy> I don't have a data parallel version of the index building code :D
00:06:45 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
00:07:03 <newhoggy> I wonder if that is possible?
00:07:21 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:6800:17f1:f8ae:fc06) (Client Quit)
00:07:33 <newhoggy> Definitely interested in what the article does.
00:07:36 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
00:09:45 ahab joins (483206cb@adsl-72-50-6-203.prtc.net)
00:09:50 snakemas1 joins (~snakemast@213.100.206.23)
00:09:59 conal joins (~conal@64.71.133.70)
00:10:00 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:842d:ee09:f1b5:9acd)
00:11:27 ahab is now known as mgs
00:11:40 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
00:12:36 sep2 joins (49dc4892@c-73-220-72-146.hsd1.ca.comcast.net)
00:14:43 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
00:15:52 × falafel quits (~falafel@2605:e000:1527:d491:1ccf:5c8d:7928:e9cc) (Ping timeout: 260 seconds)
00:17:50 <sep2> https://dpaste.org/V12z I want to go through entire list and see if they are all proper. On union
00:18:22 <sep2> From what you see here, how can I just get my list?
00:21:39 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
00:22:03 ccallahan1 joins (~ccallahan@185.204.1.185)
00:22:33 jedws joins (~jedws@121.209.161.98)
00:23:54 × recon_- quits (~quassel@2602:febc:0:b6::6ca2) (Ping timeout: 244 seconds)
00:24:49 × st8less quits (~st8less@2603:a060:11fd:0:9c66:9b18:c21:60c) (Ping timeout: 272 seconds)
00:26:18 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:28:19 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
00:28:27 × quinn quits (~quinn@c-73-223-224-163.hsd1.ca.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
00:30:32 × ystael quits (~ystael@209.6.50.55) (Ping timeout: 256 seconds)
00:30:35 × jedws quits (~jedws@121.209.161.98) (Quit: My MacBook has gone to sleep. ZZZzzz…)
00:31:30 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
00:31:46 Tario joins (~Tario@201.192.165.173)
00:32:21 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
00:33:01 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
00:33:50 jedws joins (~jedws@121.209.161.98)
00:33:55 <lemmih_> sep2: That link is 404.
00:34:27 quinn joins (~quinn@c-73-223-224-163.hsd1.ca.comcast.net)
00:34:30 × chenshen quits (~chenshen@2620:10d:c090:400::5:f7f9) (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
00:34:34 × bjobjo quits (~bjobjo@2a01:79c:cebf:d688::9e6) (Ping timeout: 244 seconds)
00:34:57 × sep2 quits (49dc4892@c-73-220-72-146.hsd1.ca.comcast.net) (Remote host closed the connection)
00:35:45 hyiltiz joins (~quassel@2601:14d:4100:112c:cff4:7114:bc84:3722)
00:35:45 × hyiltiz quits (~quassel@2601:14d:4100:112c:cff4:7114:bc84:3722) (Changing host)
00:35:45 hyiltiz joins (~quassel@unaffiliated/hyiltiz)
00:35:59 × hyiltiz quits (~quassel@unaffiliated/hyiltiz) (Client Quit)
00:37:19 × L29Ah quits (~L29Ah@unaffiliated/l29ah) (Ping timeout: 260 seconds)
00:39:39 L29Ah joins (~L29Ah@unaffiliated/l29ah)
00:39:55 ensyde joins (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253)
00:41:27 bjobjo joins (~bjobjo@2a01:79c:cebf:d688::9e6)
00:41:32 × mgs quits (483206cb@adsl-72-50-6-203.prtc.net) (Remote host closed the connection)
00:42:13 × nados quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
00:42:47 nados joins (~dan@107-190-41-58.cpe.teksavvy.com)
00:44:55 recon_- joins (~quassel@2602:febc:0:b6::6ca2)
00:45:16 chenshen joins (~chenshen@2620:10d:c090:400::5:f7f9)
00:46:12 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
00:46:19 hyiltiz joins (~quassel@82.118.227.47)
00:46:20 × hyiltiz quits (~quassel@82.118.227.47) (Changing host)
00:46:20 hyiltiz joins (~quassel@unaffiliated/hyiltiz)
00:47:02 × oisdk quits (~oisdk@2001:bb6:3329:d100:7c51:293a:6844:5080) (Quit: oisdk)
00:47:42 laxask joins (~lax@unaffiliated/laxask)
00:50:52 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
00:51:32 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
00:54:29 conal joins (~conal@64.71.133.70)
00:55:55 × jedws quits (~jedws@121.209.161.98) (Quit: My MacBook has gone to sleep. ZZZzzz…)
00:59:05 blacklight joins (~blackligh@d94186.upc-d.chello.nl)
00:59:19 blacklight parts (~blackligh@d94186.upc-d.chello.nl) ()
01:00:33 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:00:41 jedws joins (~jedws@121.209.161.98)
01:01:28 × jedws quits (~jedws@121.209.161.98) (Client Quit)
01:04:36 Nolrai joins (4c1bcada@c-76-27-202-218.hsd1.or.comcast.net)
01:04:58 toorevitimirp joins (~tooreviti@117.182.180.0)
01:05:35 <Nolrai> So whats the name for Functor like things where you need both `a -> b` and `b -> a` to get `f a -> f b`?
01:06:18 <Nolrai> One second..I need to reboot.
01:06:22 × Nolrai quits (4c1bcada@c-76-27-202-218.hsd1.or.comcast.net) (Remote host closed the connection)
01:07:55 × xff0x quits (~fox@2001:1a81:52ad:5800:a0c7:cc77:f7d4:2372) (Ping timeout: 240 seconds)
01:10:09 xff0x joins (~fox@2001:1a81:52e4:2a00:a0c7:cc77:f7d4:2372)
01:10:51 wei2912 joins (~wei2912@unaffiliated/wei2912)
01:10:58 nolrai joins (4c1bcada@c-76-27-202-218.hsd1.or.comcast.net)
01:10:59 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 258 seconds)
01:11:08 <nolrai> Sorry about that.
01:11:33 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
01:13:00 × raehik quits (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
01:13:46 <jackdk> nolrai: try the `invariant` package?
01:18:38 × chenshen quits (~chenshen@2620:10d:c090:400::5:f7f9) (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
01:22:51 xerox_ joins (~xerox@unaffiliated/xerox)
01:23:32 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
01:25:10 × nyaomi quits (~naomi@cpe-74-75-6-125.maine.res.rr.com) (Quit: meow)
01:25:38 × Aquazi quits (uid312403@gateway/web/irccloud.com/x-upzgdjixzxbjunfz) (Quit: Connection closed for inactivity)
01:26:32 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
01:27:38 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 260 seconds)
01:27:58 <gentauro> justsomeguy: I guess that would be difficult to do
01:28:29 <gentauro> in Axman6 example he uses four digits cos binary while I use three cos of thousand, million, billion, …
01:30:56 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:842d:ee09:f1b5:9acd) (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:34:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
01:35:43 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:842d:ee09:f1b5:9acd)
01:36:46 × darjeeli1 quits (~darjeelin@122.245.210.138) (Ping timeout: 256 seconds)
01:39:10 jedws joins (~jedws@121.209.161.98)
01:42:20 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
01:44:01 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
01:48:25 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
01:48:59 × SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Ping timeout: 240 seconds)
01:52:24 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
01:54:28 × elliott_ quits (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Read error: Connection reset by peer)
01:57:23 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
01:57:25 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
01:58:01 darjeeli1 joins (~darjeelin@122.245.210.138)
01:58:02 snakemas1 joins (~snakemast@213.100.206.23)
01:58:38 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
01:58:55 <ski> @type dimap -- nolrai
01:58:56 <lambdabot> Profunctor p => (a -> b) -> (c -> d) -> p b c -> p a d
01:59:16 <ski> oh, i suppose that's not quite what you were looking for
02:00:55 × ensyde quits (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253) (Ping timeout: 240 seconds)
02:01:35 falafel joins (~falafel@2605:e000:1527:d491:1ccf:5c8d:7928:e9cc)
02:01:46 × nolrai quits (4c1bcada@c-76-27-202-218.hsd1.or.comcast.net) (Quit: Ping timeout (120 seconds))
02:02:43 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
02:04:05 danso joins (~dan@107-190-41-58.cpe.teksavvy.com)
02:04:28 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:04:55 <Buntspecht> It's like functor plus cofunctor
02:06:29 SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net)
02:07:47 <ski> (no such thing as "cofunctor". itym "contravariant functor")
02:08:06 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 258 seconds)
02:08:38 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
02:08:38 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
02:08:38 GyroW joins (~GyroW@unaffiliated/gyrow)
02:08:46 <Buntspecht> Yeah
02:09:12 <dolio> But it's also not a covariant nor contravariant functor.
02:09:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
02:10:20 <dolio> Oh, well, profunctors are, but things that tie together both arguments aren't.
02:10:52 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
02:11:55 <Buntspecht> Meh, they already left ...
02:13:26 mdunnio joins (~mdunnio@208.59.170.5)
02:13:32 fresheyeball joins (~isaac@c-71-237-105-37.hsd1.co.comcast.net)
02:13:43 lagothrix is now known as Guest26381
02:13:43 × Guest26381 quits (~lagothrix@unaffiliated/lagothrix) (Killed (barjavel.freenode.net (Nickname regained by services)))
02:13:49 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
02:13:53 aarvar parts (~foewfoiew@50.35.43.33) ()
02:13:54 × bcmiller quits (~bm3719@66.42.95.185) (Ping timeout: 265 seconds)
02:14:18 × dave_uy quits (~david@108.61.193.26) (Ping timeout: 260 seconds)
02:14:23 × byorgey quits (~byorgey@155.138.238.211) (Ping timeout: 265 seconds)
02:14:38 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
02:15:48 <fresheyeball> hey out there
02:15:57 <fresheyeball> anyone know how to debug hie with vscode?
02:16:06 <fresheyeball> I moved to vscode for hie, and it was working amazing
02:16:11 <fresheyeball> but I still have some issues
02:16:26 <fresheyeball> Failed to parse result of calling cabal
02:16:28 <fresheyeball> Warning: cannot determine version of /run/user/1000/bios-wrapper29062-0 :
02:16:30 <fresheyeball> ""
02:16:32 <fresheyeball> cabal: The program 'ghc' version >=7.0.1 is required but the version of
02:16:34 <fresheyeball> /run/user/1000/bios-wrapper29062-0 could not be determined.
02:16:36 <fresheyeball> this is it right now
02:17:45 × mdunnio quits (~mdunnio@208.59.170.5) (Ping timeout: 240 seconds)
02:19:03 sand_dull joins (~theuser@104.140.53.43)
02:19:49 × solonarv quits (~solonarv@adijon-655-1-70-207.w90-13.abo.wanadoo.fr) (Ping timeout: 246 seconds)
02:21:17 × falafel quits (~falafel@2605:e000:1527:d491:1ccf:5c8d:7928:e9cc) (Ping timeout: 260 seconds)
02:21:47 solonarv joins (~solonarv@anancy-651-1-202-101.w109-217.abo.wanadoo.fr)
02:26:20 Saukk joins (~Saukk@2001:998:f1:3966:96a6:dee2:2e9:fdf3)
02:27:05 × theDon quits (~td@muedsl-82-207-238-192.citykom.de) (Ping timeout: 240 seconds)
02:28:59 vicfred_ joins (~vicfred@unaffiliated/vicfred)
02:29:02 theDon joins (~td@muedsl-82-207-238-211.citykom.de)
02:29:34 × solonarv quits (~solonarv@anancy-651-1-202-101.w109-217.abo.wanadoo.fr) (Ping timeout: 258 seconds)
02:31:36 × vicfred quits (~vicfred@unaffiliated/vicfred) (Ping timeout: 272 seconds)
02:35:39 × dftxbs3e quits (~dftxbs3e@unaffiliated/dftxbs3e) (Remote host closed the connection)
02:36:24 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
02:36:29 dftxbs3e joins (~dftxbs3e@unaffiliated/dftxbs3e)
02:39:15 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:46:07 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
02:46:25 <koz_> ski: I think they meant an invariant functor.
02:47:38 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
02:48:22 dyeplexer joins (~lol@unaffiliated/terpin)
02:51:55 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
02:53:25 × fresheyeball quits (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.7.1)
02:53:57 topos joins (sid467876@gateway/web/irccloud.com/x-gyqsqvcawuyxkhnv)
03:00:01 × ccallahan1 quits (~ccallahan@185.204.1.185) ()
03:03:28 × darjeeli1 quits (~darjeelin@122.245.210.138) (Ping timeout: 256 seconds)
03:04:52 Stanley00 joins (~stanley00@unaffiliated/stanley00)
03:05:10 × SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Ping timeout: 272 seconds)
03:05:14 SupaYoshii joins (~supayoshi@213-10-140-13.fixed.kpn.net)
03:09:07 <Axman6> gentauro, justsomeguy: IIRC Indian numbers are often divided in a way similar to what I did, I don't remember the details but think it was something like four digits and then the rest are grouped by two digits
03:10:33 <Axman6> looks like it's three, then twos
03:11:50 <Axman6> Crore => 1,00,00,000, Lakh Crore => 10,00,00,00,00,000
03:13:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
03:15:56 nyaomi joins (~naomi@cpe-74-75-6-125.maine.res.rr.com)
03:16:25 darjeeli1 joins (~darjeelin@122.245.216.36)
03:21:09 vincenz joins (~chris@104-1-91-5.lightspeed.sntcca.sbcglobal.net)
03:21:15 vincenz waves
03:23:20 <Axman6> o/
03:23:37 xerox_ joins (~xerox@unaffiliated/xerox)
03:25:23 <jackdk> Is there a library which provides a convenient function of this type: `HashMap k1 (HashMap k2 v) -> HashMap k2 (HashMap k1 v)`? It felt like `distributive`, but that package doesn't seem to do instances for things in `containers` and I may have misunderstood its theory
03:25:53 × ericsagnes quits (~ericsagne@2405:6580:0:5100:fd7f:2256:81b3:b295) (Ping timeout: 246 seconds)
03:26:10 <ski> yea, i realized, koz_
03:26:22 <vincenz> Hi ski
03:26:29 <ski> hello vincenz
03:27:25 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 240 seconds)
03:27:27 <ski> jackdk : looks like a kind of "transposition". perhaps you can find one that first goes to `HashMap (k1,k2) v' ?
03:29:01 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 264 seconds)
03:29:22 dave_uy joins (~david@108.61.193.26)
03:30:36 bcmiller joins (~bm3719@66.42.95.185)
03:30:40 byorgey joins (~byorgey@155.138.238.211)
03:34:15 <vincenz> ski been a while
03:35:04 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
03:36:23 <jackdk> ski: well sure: I can `fmap toList`, then toList, then rebuild the table. But that might not be quite what you're asking?
03:37:05 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
03:38:30 ericsagnes joins (~ericsagne@2405:6580:0:5100:9db:d3a4:6a7a:3b95)
03:38:54 <Axman6> :t Map.toList . fmap Map.toList
03:38:55 <lambdabot> error:
03:38:55 <lambdabot> Not in scope: ‘Map.toList’
03:38:55 <lambdabot> Perhaps you meant one of these:
03:39:01 <Axman6> :t M.toList . fmap M.toList
03:39:03 <lambdabot> M.Map k1 (M.Map k2 a) -> [(k1, [(k2, a)])]
03:39:20 drbean joins (~drbean@TC210-63-209-59.static.apol.com.tw)
03:40:39 <Axman6> jackdk: this feels like a thing that reflex would have implemented somewhere (with efficient observations n' stuff)
03:41:04 <ski> vincenz : yep
03:43:18 falafel joins (~falafel@2605:e000:1527:d491:1ccf:5c8d:7928:e9cc)
03:43:30 <jackdk> so the reason we can't have Distributive and (and therefore not Representable either) is that you need an isomorphism to `(->) x` for some x. Which we don't have; we have like an isomorphism `HashMap k <-> Compose ((->) k) Maybe` or something
03:47:16 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:49:54 <vincenz> Is there a type for a vector of N values?
03:49:59 <vincenz> Where N is fixed
03:50:17 Tario joins (~Tario@201.192.165.173)
03:51:33 <jackdk> https://hackage.haskell.org/package/vector-sized
03:51:35 <jackdk> maybe?
03:51:47 × polyrain_ quits (~polyrain@2001:8003:e501:6901:39c5:19e3:cc60:4fe5) (Quit: My MacBook has gone to sleep. ZZZzzz…)
03:51:59 <jackdk> the `linear` package also has some short vectors useful for 3D sort of work
03:52:40 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
03:52:57 <vincenz> I'm trying to define a partial order on a pareto space
03:53:57 <vincenz> Thanks! jackdk, that seems better than the one I was looking ato
03:56:58 <jackdk> I don't know those mathswords but good luck
03:57:51 <Axman6> he's talking about the birds space pirates have
03:57:53 ensyde joins (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253)
03:59:21 <jackdk> rawk
04:02:09 <jackdk> so there's not a map-specialised transposition function I'm aware of. Has anyone seen one like it for lists? `[(a,[(b,c)])] -> [(b,[(a,c)])]`?
04:02:41 × ensyde quits (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253) (Ping timeout: 272 seconds)
04:03:48 Volt_ joins (~Volt_@c-73-145-164-70.hsd1.mi.comcast.net)
04:05:42 × falafel quits (~falafel@2605:e000:1527:d491:1ccf:5c8d:7928:e9cc) (Ping timeout: 260 seconds)
04:08:37 × balbirs quits (~balbirs__@ozlabs.org) (Ping timeout: 260 seconds)
04:10:38 Jeanne-Kamikaze joins (~Jeanne-Ka@68.235.43.86)
04:10:39 <Axman6> should be pretty simple with a list comprehension
04:12:13 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
04:14:08 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
04:14:40 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
04:15:08 <dibblego> https://github.com/qfpl/separated/blob/master/src/Data/Separated.hs#L902
04:15:50 <Axman6> "[5,'x',6]" I beg your pardon what is this nonsense
04:16:19 <jackdk> I do not understand what I am looking at
04:16:29 <Axman6> :aliens:
04:16:35 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:842d:ee09:f1b5:9acd) (Quit: My MacBook has gone to sleep. ZZZzzz…)
04:17:04 <dibblego> actually it's a bit different to what you wrote
04:17:37 conal joins (~conal@64.71.133.70)
04:18:22 × conal quits (~conal@64.71.133.70) (Client Quit)
04:18:47 <Axman6> :t lef f mmp = fold [ (k2,M.singleton k1 v) | (k1,vs) <- M.toList mmp, (k2,v) <- M.toList vs in f
04:18:49 <lambdabot> error: parse error on input ‘=’
04:18:59 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Ping timeout: 260 seconds)
04:19:05 <Axman6> :t let f mmp = fold [ (k2,M.singleton k1 v) | (k1,vs) <- M.toList mmp, (k2,v) <- M.toList vs] in f
04:19:07 <lambdabot> (Monoid a1, Ord k) => M.Map k (M.Map a1 a2) -> (a1, M.Map k a2)
04:19:37 <Axman6> :t let f mmp = M.fromListWith M.union [ (k2,M.singleton k1 v) | (k1,vs) <- M.toList mmp, (k2,v) <- M.toList vs] in f
04:19:39 <lambdabot> (Ord k1, Ord k2) => M.Map k2 (M.Map k1 a) -> M.Map k1 (M.Map k2 a)
04:19:40 × vicfred_ quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
04:19:48 chenshen joins (~chenshen@2620:10d:c090:400::5:80e8)
04:20:26 <Axman6> technically there's optimisations to be had from the uniqueness of the keys but yolo
04:20:38 <Axman6> jackdk: happy?
04:20:38 conal joins (~conal@64.71.133.70)
04:22:45 × dyeplexer quits (~lol@unaffiliated/terpin) (Ping timeout: 240 seconds)
04:23:08 × conal quits (~conal@64.71.133.70) (Client Quit)
04:24:48 <jackdk> axman6: I broke out the monoidal-containers hammer https://www.irccloud.com/pastebin/atKmxOH8/Transpose.hs
04:24:50 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
04:24:51 conal joins (~conal@64.71.133.70)
04:25:01 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
04:25:02 × conal quits (~conal@64.71.133.70) (Client Quit)
04:25:21 <jackdk> I think I like yours better
04:25:28 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:25:56 falafel joins (~falafel@2605:e000:1527:d491:1ccf:5c8d:7928:e9cc)
04:26:17 conal joins (~conal@64.71.133.70)
04:26:37 × conal quits (~conal@64.71.133.70) (Client Quit)
04:27:00 <Axman6> :t let f mmp = M.fromListWith M.union $ do { (k1,vs) <- M.toList mmp; (k2,v) <- M.toList vs; pure (k2,M.singleton k1 v) } in f
04:27:01 <lambdabot> (Ord k1, Ord k2) => M.Map k2 (M.Map k1 a) -> M.Map k1 (M.Map k2 a)
04:28:03 conal joins (~conal@64.71.133.70)
04:28:14 × conal quits (~conal@64.71.133.70) (Client Quit)
04:28:15 <jackdk> yeah I thnk donotation is clearer
04:30:09 day_ joins (~Unknown@unaffiliated/day)
04:30:18 dyeplexer joins (~lol@unaffiliated/terpin)
04:30:49 ironmarx joins (~ironmarx@184.75.221.179)
04:31:15 <Axman6> @ :t let f mmp = M.fromListWith M.union $ do { (k1,vs) <- M.toList mmp; (k2,v) <- M.toList vs; [(k2,[(k1, v)])] } in f
04:31:27 <Axman6> % :t let f mmp = M.fromListWith M.union $ do { (k1,vs) <- M.toList mmp; (k2,v) <- M.toList vs; [(k2,[(k1, v)])] } in f
04:31:27 <yahb> Axman6: ; <interactive>:1:97: error:; * Couldn't match expected type `Map k3 a3' with actual type `[(a2, b1)]'; * In the expression: [(k1, v)]; In the expression: (k2, [(k1, v)]); In a stmt of a 'do' block: [(k2, [(k1, v)])]; * Relevant bindings include; v :: b1 (bound at <interactive>:1:73); vs :: Map k2 b1 (bound at <interactive>:1:48); k1 :: a2 (bound at <interact
04:31:41 <Axman6> % :set -XOverloadedLists
04:31:41 <yahb> Axman6:
04:31:44 <Axman6> % :t let f mmp = M.fromListWith M.union $ do { (k1,vs) <- M.toList mmp; (k2,v) <- M.toList vs; [(k2,[(k1, v)])] } in f
04:31:44 <yahb> Axman6: (Ord k1, Ord k2) => Map k2 (Map k1 a) -> Map k1 (Map k2 a)
04:31:49 <Axman6> awww yiss
04:32:45 danvet_ joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
04:32:48 <vincenz> How do I do something like:
04:33:08 <vincenz> for all n: instance PartialOrd a => PartialOrd (Vector n a)
04:33:10 × day quits (~Unknown@unaffiliated/day) (Ping timeout: 246 seconds)
04:33:10 day_ is now known as day
04:33:45 Sanchayan joins (~Sanchayan@106.201.37.251)
04:34:45 × macrover quits (~macrover@ip70-189-231-35.lv.lv.cox.net) (Ping timeout: 240 seconds)
04:35:40 dan64 joins (~dan64@dannyadam.com)
04:36:47 <Axman6> instance (KnownNat n, PartialOrd a) => PArtialOrd (Vector n a)?
04:37:24 <vincenz> Thanks, I'll try tat!
04:41:34 × ddellacosta quits (~dd@86.106.121.168) (Ping timeout: 256 seconds)
04:41:44 <vincenz> I'll go without fixed size for now to simplify, then I can always add it later I guess
04:42:25 alp joins (~alp@2a01:e0a:58b:4920:2ccf:c5eb:4256:63a6)
04:45:11 × danso quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
04:45:11 × nados quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
04:45:51 nados joins (~dan@107-190-41-58.cpe.teksavvy.com)
04:46:25 danso joins (~dan@107-190-41-58.cpe.teksavvy.com)
04:46:56 <vincenz> How do I qualify an operator in binding position?
04:47:09 <vincenz> instnace ... where .... x PartialOrd.<= y = ...
04:49:51 <vincenz> Found it, I import only what I want from prelude and thus mask the <= in prelude
04:52:44 fresheyeball joins (~isaac@c-71-237-105-37.hsd1.co.comcast.net)
04:53:59 aqd joins (~aqd@87-92-145-87.rev.dnainternet.fi)
04:58:38 balbirs joins (~balbirs__@ozlabs.org)
04:59:38 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
05:00:59 × sand_dull quits (~theuser@104.140.53.43) (Ping timeout: 258 seconds)
05:02:53 × toorevitimirp quits (~tooreviti@117.182.180.0) (Ping timeout: 260 seconds)
05:04:25 × renzhi quits (~renzhi@modemcable070.17-177-173.mc.videotron.ca) (Ping timeout: 264 seconds)
05:06:31 plutoniix joins (~q@node-unw.pool-125-24.dynamic.totinternet.net)
05:09:22 toorevitimirp joins (~tooreviti@117.182.180.0)
05:09:25 × jespada quits (~jespada@90.254.245.15) (Ping timeout: 240 seconds)
05:12:04 jespada joins (~jespada@90.254.245.15)
05:12:10 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:13:09 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
05:13:27 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
05:13:28 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
05:13:28 GyroW joins (~GyroW@unaffiliated/gyrow)
05:16:47 × alp quits (~alp@2a01:e0a:58b:4920:2ccf:c5eb:4256:63a6) (Ping timeout: 272 seconds)
05:17:03 bitmagie joins (~Thunderbi@200116b806cb540040a9783a9ea970a9.dip.versatel-1u1.de)
05:17:14 × bitmagie quits (~Thunderbi@200116b806cb540040a9783a9ea970a9.dip.versatel-1u1.de) (Client Quit)
05:18:23 snakemas1 joins (~snakemast@213.100.206.23)
05:18:37 × ironmarx quits (~ironmarx@184.75.221.179) (Remote host closed the connection)
05:19:59 × darjeeli1 quits (~darjeelin@122.245.216.36) (Ping timeout: 265 seconds)
05:19:59 ishutin_ joins (~Ishutin@178-164-207-98.pool.digikabel.hu)
05:21:25 darjeeli1 joins (~darjeelin@122.245.216.36)
05:23:05 × ishutin quits (~Ishutin@193-110-63-54.cable-modem.hdsnet.hu) (Ping timeout: 240 seconds)
05:23:18 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
05:24:28 xerox_ joins (~xerox@unaffiliated/xerox)
05:28:47 vicfred joins (~vicfred@unaffiliated/vicfred)
05:29:21 × chenshen quits (~chenshen@2620:10d:c090:400::5:80e8) (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
05:29:43 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 260 seconds)
05:30:57 nyd joins (~lpy@unaffiliated/elysian)
05:33:10 chele joins (~chele@5.53.222.202)
05:33:23 × djellemah quits (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54) (Ping timeout: 244 seconds)
05:33:25 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:34:40 romtam joins (~romtam@s91904426.blix.com)
05:35:18 snakemas1 joins (~snakemast@213.100.206.23)
05:38:12 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
05:38:23 GyroW joins (~GyroW@d54C03E98.access.telenet.be)
05:38:23 × GyroW quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
05:38:23 GyroW joins (~GyroW@unaffiliated/gyrow)
05:38:44 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
05:45:00 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
05:45:23 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
05:45:45 × vicfred quits (~vicfred@unaffiliated/vicfred) (Ping timeout: 256 seconds)
05:46:17 bliminse joins (~bliminse@host217-42-95-37.range217-42.btcentralplus.com)
05:47:16 lep-delete is now known as Guest88073
05:49:05 sapek joins (1812cc74@c-24-18-204-116.hsd1.wa.comcast.net)
05:49:33 × fresheyeball quits (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.7.1)
05:51:28 × sapek quits (1812cc74@c-24-18-204-116.hsd1.wa.comcast.net) (Remote host closed the connection)
05:54:47 × plutoniix quits (~q@node-unw.pool-125-24.dynamic.totinternet.net) (Ping timeout: 265 seconds)
05:58:44 ensyde joins (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253)
05:59:12 GyroW_ joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
05:59:12 × GyroW_ quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
05:59:12 GyroW_ joins (~GyroW@unaffiliated/gyrow)
06:00:01 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 258 seconds)
06:00:01 × romtam quits (~romtam@s91904426.blix.com) ()
06:00:40 × Jeanne-Kamikaze quits (~Jeanne-Ka@68.235.43.86) (Ping timeout: 246 seconds)
06:03:10 × ensyde quits (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253) (Ping timeout: 244 seconds)
06:08:57 plutoniix joins (~q@ppp-27-55-89-214.revip3.asianet.co.th)
06:09:21 × ericsagnes quits (~ericsagne@2405:6580:0:5100:9db:d3a4:6a7a:3b95) (Ping timeout: 272 seconds)
06:12:02 × plutoniix quits (~q@ppp-27-55-89-214.revip3.asianet.co.th) (Excess Flood)
06:12:22 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:12:36 plutoniix joins (~q@ppp-27-55-89-214.revip3.asianet.co.th)
06:18:11 vonfry joins (~user@38.94.109.36)
06:18:19 × plutoniix quits (~q@ppp-27-55-89-214.revip3.asianet.co.th) (Read error: Connection reset by peer)
06:19:38 DataComputist joins (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
06:20:27 × Saukk quits (~Saukk@2001:998:f1:3966:96a6:dee2:2e9:fdf3) (Ping timeout: 260 seconds)
06:21:35 ericsagnes joins (~ericsagne@2405:6580:0:5100:38c4:6bae:c9c7:c00b)
06:21:48 Wayno joins (~Wayno@185.163.110.116)
06:22:57 hackage hurl 1.4.2.0 - Haskell URL resolver https://hackage.haskell.org/package/hurl-1.4.2.0 (alcinnz)
06:23:04 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
06:23:14 GyroW joins (~GyroW@d54c03e98.access.telenet.be)
06:23:14 × GyroW quits (~GyroW@d54c03e98.access.telenet.be) (Changing host)
06:23:14 GyroW joins (~GyroW@unaffiliated/gyrow)
06:23:37 sword865 joins (uid208942@gateway/web/irccloud.com/x-sxotpuupdfwwcwxa)
06:27:24 xerox_ joins (~xerox@unaffiliated/xerox)
06:27:39 lucid_0x80 joins (~lucid_0x8@188.253.234.30)
06:27:49 × sfvm quits (~sfvm@37.228.215.148) (Quit: off to the basement, mixing up the medicine)
06:28:02 × ericsagnes quits (~ericsagne@2405:6580:0:5100:38c4:6bae:c9c7:c00b) (Ping timeout: 260 seconds)
06:29:22 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 246 seconds)
06:30:13 snakemas1 joins (~snakemast@213.100.206.23)
06:30:47 × mystfox quits (~myst@focks.pw) (Max SendQ exceeded)
06:31:02 × mozzarella quits (~sam@unaffiliated/sam113101) (Remote host closed the connection)
06:31:08 mystfox joins (~myst@focks.pw)
06:33:00 mozzarella joins (~sam@unaffiliated/sam113101)
06:33:00 × mozzarella quits (~sam@unaffiliated/sam113101) (Remote host closed the connection)
06:34:22 mozzarella joins (~sam@unaffiliated/sam113101)
06:35:01 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 264 seconds)
06:35:01 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
06:37:16 cfricke joins (~cfricke@unaffiliated/cfricke)
06:40:50 ericsagnes joins (~ericsagne@2405:6580:0:5100:85d4:43d9:8dee:59a0)
06:46:28 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
06:48:21 snakemas1 joins (~snakemast@213.100.206.23)
06:48:52 kritzefitz joins (~kritzefit@fw-front.credativ.com)
06:48:57 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
06:51:29 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 256 seconds)
06:52:18 GyroW joins (~GyroW@d54C03E98.access.telenet.be)
06:52:18 × GyroW quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
06:52:18 GyroW joins (~GyroW@unaffiliated/gyrow)
06:53:42 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
06:54:05 × toorevitimirp quits (~tooreviti@117.182.180.0) (Remote host closed the connection)
06:54:52 × falafel quits (~falafel@2605:e000:1527:d491:1ccf:5c8d:7928:e9cc) (Ping timeout: 260 seconds)
06:55:47 GyroW_ joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
06:55:47 × GyroW_ quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
06:55:47 GyroW_ joins (~GyroW@unaffiliated/gyrow)
06:56:37 × JordiGH quits (jordi@octave/developer/JordiGH) (Ping timeout: 260 seconds)
06:57:09 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 256 seconds)
06:58:07 <gentauro> 05:11 < Axman6> Crore => 1,00,00,000, Lakh Crore => 10,00,00,00,00,000
06:58:12 <gentauro> first time I see this :o
06:59:49 fbm joins (5ddb33d0@p5ddb33d0.dip0.t-ipconnect.de)
07:02:18 × fbm quits (5ddb33d0@p5ddb33d0.dip0.t-ipconnect.de) (Remote host closed the connection)
07:04:34 John20 joins (~John@82.46.59.122)
07:04:47 × xff0x quits (~fox@2001:1a81:52e4:2a00:a0c7:cc77:f7d4:2372) (Ping timeout: 260 seconds)
07:06:20 toorevitimirp joins (~tooreviti@117.182.180.0)
07:08:19 alp joins (~alp@2a01:e0a:58b:4920:e472:4844:3c7b:eb57)
07:09:13 × cfricke quits (~cfricke@unaffiliated/cfricke) (Ping timeout: 265 seconds)
07:09:49 cfricke joins (~cfricke@unaffiliated/cfricke)
07:15:58 × danso quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
07:15:58 × nados quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
07:16:00 coot joins (~coot@37.30.50.102.nat.umts.dynamic.t-mobile.pl)
07:16:31 akegalj joins (~akegalj@93-138-183-8.adsl.net.t-com.hr)
07:16:44 danso joins (~dan@107-190-41-58.cpe.teksavvy.com)
07:16:49 nados joins (~dan@107-190-41-58.cpe.teksavvy.com)
07:16:59 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:17:15 × vonfry quits (~user@38.94.109.36) (Remote host closed the connection)
07:17:39 vonfry joins (~user@116.236.75.229)
07:17:42 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) ()
07:18:45 vonfry` joins (~user@38.94.109.36)
07:19:08 × howdoi quits (uid224@gateway/web/irccloud.com/x-yqmynplgqpklanea) (Quit: Connection closed for inactivity)
07:20:59 × vonfry` quits (~user@38.94.109.36) (Remote host closed the connection)
07:21:21 vonfry`` joins (~user@38.94.109.36)
07:22:18 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
07:22:26 × vonfry quits (~user@116.236.75.229) (Ping timeout: 256 seconds)
07:24:31 thc202 joins (~thc202@unaffiliated/thc202)
07:28:58 chaosmasttter joins (~chaosmast@p200300c4a711b00135524723c22b3f52.dip0.t-ipconnect.de)
07:29:02 × danso quits (~dan@107-190-41-58.cpe.teksavvy.com) (Quit: WeeChat 2.9)
07:30:09 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:33:09 oxide joins (~lambda@unaffiliated/mclaren)
07:37:58 hackage pandoc-crossref 0.3.8.2 - Pandoc filter for cross-references https://hackage.haskell.org/package/pandoc-crossref-0.3.8.2 (lierdakil)
07:38:20 raichoo joins (~raichoo@213.240.178.58)
07:38:20 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
07:38:21 × Sgeo quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
07:39:00 × Volt_ quits (~Volt_@c-73-145-164-70.hsd1.mi.comcast.net) (Quit: )
07:40:52 × vonfry`` quits (~user@38.94.109.36) (Remote host closed the connection)
07:41:07 vonfry`` joins (~user@116.236.75.229)
07:44:15 vonfry``` joins (~user@38.94.109.36)
07:45:00 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
07:45:21 vonfry``` parts (~user@38.94.109.36) ()
07:46:41 shafox joins (~shafox@106.51.234.111)
07:48:04 × vonfry`` quits (~user@116.236.75.229) (Ping timeout: 260 seconds)
07:50:18 × Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds)
07:50:50 dhouthoo joins (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be)
07:52:07 xff0x joins (~fox@217.110.198.158)
07:54:23 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
07:55:31 × nyd quits (~lpy@unaffiliated/elysian) (Ping timeout: 256 seconds)
07:55:56 nyd joins (~lpy@unaffiliated/elysian)
07:59:33 ensyde joins (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253)
07:59:55 bahamas joins (~lucian@unaffiliated/bahamas)
08:00:32 × ghoulguy quits (x@freenode/staff/haskell.developer.glguy) (Ping timeout: 615 seconds)
08:02:11 m0rphism joins (~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de)
08:02:14 carldd102 joins (~carldd@90-224-49-113-no56.tbcn.telia.com)
08:02:41 × toorevitimirp quits (~tooreviti@117.182.180.0) (Quit: Konversation terminated!)
08:02:48 × carldd10 quits (~carldd@90-224-49-113-no56.tbcn.telia.com) (Read error: Connection reset by peer)
08:04:37 × ensyde quits (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253) (Ping timeout: 272 seconds)
08:04:37 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
08:04:40 × hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-ycssaquegccjnbcx) (Quit: Connection closed for inactivity)
08:05:00 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
08:06:56 × xerox_ quits (~xerox@unaffiliated/xerox) (Read error: Connection reset by peer)
08:06:56 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
08:08:23 jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se)
08:08:57 glguy joins (x@freenode/staff/haskell.developer.glguy)
08:09:59 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
08:13:05 <gentauro> so it looks like I got `lsp` to work with `emacs`. But is there a way to disable the "clippy a like boxes"? I mean, as a colorblind person, they don't do anything for me :D https://postimg.cc/QBPhSSM9
08:13:59 × akegalj quits (~akegalj@93-138-183-8.adsl.net.t-com.hr) (Ping timeout: 265 seconds)
08:13:59 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
08:14:25 <gentauro> btw, this is how I got it to work -> https://pastebin.ubuntu.com/p/WTqKCSNJYS/
08:14:34 xerox_ joins (~xerox@unaffiliated/xerox)
08:14:42 <gentauro> it seems like the `install.hs` doesn't really play nice with stack :(
08:14:58 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
08:15:15 × tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Quit: Off to see the wizard.)
08:16:06 × Buntspecht quits (~user@unaffiliated/siracusa) (Quit: Bye!)
08:16:06 gentauro I would <3 to update https://github.com/haskell/haskell-language-server/issues/171#issue-643008760 with this comment, but sadly I "wiped" my GH account when M$ overtook the platform …
08:16:11 is_null joins (~jpic@pdpc/supporter/professional/is-null)
08:16:37 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
08:16:38 tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64)
08:18:17 × dhouthoo quits (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Ping timeout: 260 seconds)
08:18:18 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
08:19:35 <gentauro> oh, so if I remove `lsp-ui` from `emacs`, then "clippy msgs" go away. Good to know :)
08:19:59 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
08:21:27 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
08:23:16 <gentauro> I guess it's fair to say that `lsp-haskell` is pretty fast compared to `intero`. Hmmm
08:23:29 × alp quits (~alp@2a01:e0a:58b:4920:e472:4844:3c7b:eb57) (Remote host closed the connection)
08:23:46 × oxide quits (~lambda@unaffiliated/mclaren) (Ping timeout: 258 seconds)
08:23:50 alp joins (~alp@2a01:e0a:58b:4920:1dcd:3fff:5840:1f3a)
08:24:41 encod3 joins (~encod3@45-154-157-94.ftth.glasoperator.nl)
08:24:41 Ariakenom joins (~Ariakenom@193.254.193.1)
08:25:29 oxide joins (~lambda@unaffiliated/mclaren)
08:28:19 kindaro joins (1f08ec14@h31-8-236-20.dyn.bashtel.ru)
08:28:43 <kindaro> Is there an introduction to Object Oriented Programming for a functional programmer?
08:30:27 <kindaro> I would like to have basic concepts and motivation explained to me, but so far I have not been able to locate a clear introduction.
08:32:08 <gentauro> kindaro: at KU they teach the three paradigsm: imperative, FP and OO under the same umbrella (F#) for newcomers to CS
08:32:18 <kindaro> KU?
08:32:34 × drbean quits (~drbean@TC210-63-209-59.static.apol.com.tw) (Ping timeout: 246 seconds)
08:32:39 <gentauro> that way it's easier to see the differences between these paradigms (same language/syntax) and not get lost in translation
08:33:07 <gentauro> kindaro: KU = København Universitet (in English: University of Copenhagen)
08:33:28 <gentauro> maybe the teaching material is available openly? You might reach out to Athas for that
08:34:58 <kindaro> This looks like the thing: https://studier.ku.dk/bachelor/datalogi/faq/livet-paa-uddannelsen/Eksempel_p__en_tekst_fra_datalogi.pdf
08:35:44 × encod3 quits (~encod3@45-154-157-94.ftth.glasoperator.nl) ()
08:38:43 <gentauro> kindaro: might be. I would have hoped for `Torben Ægidius Mogensen` material :)
08:39:34 × glguy quits (x@freenode/staff/haskell.developer.glguy) (Ping timeout: 606 seconds)
08:40:30 <gentauro> kindaro: I'm asking him on FB
08:42:56 × eedgit2 quits (~chat.free@95.179.237.21) (Remote host closed the connection)
08:43:06 cpressey joins (~cpressey@88.144.68.224)
08:43:17 eedgit2 joins (~chat.free@95.179.237.21)
08:47:56 guest35 joins (d537f42e@213.55.244.46)
08:54:57 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
08:55:34 polyrain joins (~polyrain@2001:8003:e501:6901:3d18:f8b0:5f22:3669)
08:59:28 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
09:00:01 glguy joins (x@freenode/staff/haskell.developer.glguy)
09:00:02 × Wayno quits (~Wayno@185.163.110.116) ()
09:02:45 <merijn> When (which GHC) did Monoid move to prelude?
09:03:42 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:04:10 polyrain_ joins (~polyrain@2001:8003:e501:6901:8a4:c02:960d:e633)
09:06:11 × lucid_0x80 quits (~lucid_0x8@188.253.234.30) (Ping timeout: 265 seconds)
09:06:22 <Taneb> merijn: 7.10
09:06:35 <Taneb> base has a pretty useful changelog
09:07:15 <kindaro> gentauro, I value your help. I have to go presently. If you have any more information about that F# teaching material, please write to me offline _(I can check the public log)_ or ask the bot to deliver a message.
09:07:17 × polyrain quits (~polyrain@2001:8003:e501:6901:3d18:f8b0:5f22:3669) (Ping timeout: 260 seconds)
09:07:27 × kindaro quits (1f08ec14@h31-8-236-20.dyn.bashtel.ru) (Remote host closed the connection)
09:07:53 × perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9)
09:08:24 DavidEichmann joins (~david@43.240.198.146.dyn.plus.net)
09:10:49 <merijn> Taneb: Yeah, that just occurred to me
09:11:07 × shutdown_-h_now quits (~arjan@2001:1c06:2d0b:2312:fc55:7103:1b55:f700) (Ping timeout: 272 seconds)
09:12:10 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
09:12:48 <jonathanx> So I want to create a typeable representation of a GADT tagged with datakind based phantom types. I run into issues which I think is due to datakind based types not having Typeable instances (as opposed to to ordinary types). This is a bit annoying, seeing as a typeable instance for datakind is a simple "demotion" from type->value. So my question is: is there a convenient way to create typeable instances for GADTs that have DataKinds
09:12:49 <jonathanx> phantom types?
09:14:27 <merijn> jonathanx: Eh, out of curiousity, why do you wanna do that?
09:15:52 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
09:16:55 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
09:18:27 shutdown_-h_now joins (~arjan@2001:1c06:2d0b:2312:613f:c21f:11b3:bc2c)
09:19:29 ClaudiusMaximus joins (~claude@198.123.199.146.dyn.plus.net)
09:19:40 × ClaudiusMaximus quits (~claude@198.123.199.146.dyn.plus.net) (Changing host)
09:19:40 ClaudiusMaximus joins (~claude@unaffiliated/claudiusmaximus)
09:23:14 <jonathanx> I'm working with a domain similar to dataflow languages (such as labview), where the nodes have various invariants in the way they connect together/the outputs relate to the inputs. I'm prototyping encoding these invariant in GADTS decorated with datakind based phantom types. When constructing this/connecting the nodes together, I'm planning to first create a rose-tree representing all wanted connections, where the invariant-enforcing
09:23:14 <jonathanx> phantom types are "boxed" into a GADT such as "data Any where Any :: Specific phantomType -> Any". Then I want to fold that tree, "unboxing" the data as I go, and connect all children to each tree-node with phantom type based type security. When "unboxing", I want to use typeReps to help the compiler validate that the type "boxed" can be used as a parameter to the node it's connecting to
09:23:56 __monty__ joins (~toonn@unaffiliated/toonn)
09:25:25 × is_null quits (~jpic@pdpc/supporter/professional/is-null) (Ping timeout: 264 seconds)
09:25:28 <merijn> eh, all I can say is "good luck" >.>
09:27:00 <jonathanx> Thank you!
09:29:37 <sshine> I'd probably go with JSON. :-D
09:30:03 <dminuoso> JSON is webscale.
09:30:12 <sshine> what does webscale mean?
09:30:35 <dminuoso> sshine: https://www.youtube.com/watch?v=b2F-DItXtZs
09:30:42 <sshine> I see JSON more like a common serializable format. short path between two command-line programs to share structured data.
09:31:46 is_null joins (~jpic@pdpc/supporter/professional/is-null)
09:32:17 <dminuoso> Superficially, JSON only solves the "how do I serialize numbers (that's a funny bit, btw), strings, dictionaries, lists and bools" part.
09:32:28 dhouthoo_ joins (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be)
09:32:28 <sshine> dminuoso, it sounds like tacking "web scale" onto something means you disapprove of it because of premature scaling concerns. :)
09:32:40 <sshine> s/only // and I'm with you.
09:32:48 <dminuoso> sshine: There's a lot of tongue-in-cheek in the webscale remark, above.
09:32:53 <sshine> yeah
09:33:02 <sshine> I think JSON is quite unambitious, which is a good thing.
09:33:16 <dminuoso> The thing is, when you're getting a deserialized JSON, you still have to parse the structure of it.
09:33:28 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Ping timeout: 246 seconds)
09:33:34 <dminuoso> Much of Python code is more adhoc, and destructures the data all over the place.
09:34:14 ubert joins (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
09:34:26 <dminuoso> Since JSON types can be mapped into equally unstructured Python data.
09:34:36 <sshine> so, my idea is, you have a bunch of ADTs, you derive Aeson encode/decode, and you save your configs to disk. if you need to interact with them in *any other way*, serialization is given. if not, you can post-pone deriving Aeson.
09:34:54 <sshine> so no web scale ambition here. :)
09:35:18 × L29Ah quits (~L29Ah@unaffiliated/l29ah) (Ping timeout: 260 seconds)
09:36:50 <sshine> they're not as safe as GADTs with phantom types, but they serialize nicely, which is something I'd probably appreciate sooner. :)
09:42:28 × karolus quits (~karolus@static.32.230.217.95.clients.your-server.de) (Ping timeout: 256 seconds)
09:42:37 <gentauro> jonathanx: why not just to `show` / `read`?
09:43:12 <gentauro> jonathanx: I have started to use that (with pretty-print) instead of `JSON`
09:43:33 <gentauro> It's more readable and it's easily save/load -able
09:43:34 <Uniaika> hey folks, I'm having a bit of an issue with Aeson. Do you know how I can write a `ToJSON MySumType` instance that would write the two members of the sum type as separate keys in the top-most object?
09:43:44 <Uniaika> because I could write them in a sub-object
09:44:01 <Uniaika> but due to reasons like backward compatibility, this is hardly an option :/
09:44:30 perrier-jouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
09:46:09 <jonathanx> Well, if I were to use json, then I'd have to somehow serialize the phantom types (representing them in the json), and validate them on deserialization. This would leave me open to pretty mauch the same range of errors I'd get if I just enforced the invariants using runtime checks
09:46:29 <gentauro> dminuoso: that `webscale` video made my day. It's actually a documentary, cos that moment (2:35) I had far to many times … (it's like they are "quoting me") :o
09:48:08 <jonathanx> which would turn the entire phantom type based invariant forcing into just a piece of redundant bloat/an excessive roundtrip
09:48:20 <gentauro> Uniaika: I tend to use `set <|> bin` (`Control.Applicative` Alternate) for that
09:48:59 <gentauro> I can post code that does exactly what you are asking for, but I'm working on the proejct at this exact moment :)
09:49:07 <gentauro> s/I can/I can't/
09:51:27 <gentauro> kindaro: `please write to me offline` Roger that
09:51:37 acidjnk_new joins (~acidjnk@p200300d0c723782835a5fda97218b164.dip0.t-ipconnect.de)
09:53:27 <Uniaika> gentauro: oh, thank you :)
09:56:45 shatriff_ joins (~vitaliish@176.52.219.10)
09:56:45 × shatriff quits (~vitaliish@176.52.219.10) (Read error: Connection reset by peer)
09:56:46 <dminuoso> Uniaika: You could always just write the object out by hand `object ["foo" .= foo, "bar" .= bar]`, Ive grown quite fond of that.
09:56:51 supercoven joins (~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi)
09:57:27 <dminuoso> Too often I found, relying on generics, generics with options, and things like the Alternative, is trying very hard to take indirect control over the encoder/decoder
09:57:35 <kuribas> Uniaika: do you need to rewrite the Aeson?
09:57:47 <kuribas> Uniaika: I actually just wrote code to do that.
09:57:58 <kuribas> Uniaika: and you can still use generics after it.
09:59:23 <dminuoso> Also, with generics you're tying external representation directly to your data types. To get around that, you might start having a separate data type, where you rename fields particularly to control the representation, and then you need a sort of `fromRep/toRep` functions, which is the exact boilerplate you tried to avoid in the first place..
09:59:29 <kuribas> Uniaika: https://gist.github.com/kuribas/5c617ecf025ccb37467a23556cbe963e
09:59:35 <dminuoso> Every time I stare at aeson, I dont think generics are a good idea. :(
09:59:40 <dminuoso> Or typeclasses at all
10:00:06 <kuribas> there are many times where generics are actually desirable.
10:00:17 <Uniaika> thanks to you all :)
10:00:24 ensyde joins (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253)
10:00:30 <kuribas> because you know it will still be consistent when you add a field.
10:00:41 <kuribas> while manual instance don't garantee that your instances are consistent.
10:01:00 <Uniaika> kuribas: I have a roundtrip test for that
10:01:11 <Uniaika> always with manual instances for Aeson and pg-simple
10:01:14 <kuribas> Uniaika: with my code it is actually garanteed
10:01:16 akegalj joins (~akegalj@93-138-183-8.adsl.net.t-com.hr)
10:01:34 <kuribas> Uniaika: as long as you use the same options of course.
10:01:49 <Uniaika> kuribas: I'm waiting for a blog post to introduce that AesonTrans :)
10:01:52 × dhouthoo_ quits (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Ping timeout: 244 seconds)
10:01:58 <Uniaika> it really looks interesting :)
10:01:58 <kuribas> Uniaika: I should make a library for it...
10:02:03 <Uniaika> also! :D
10:03:09 <kuribas> Uniaika: the disadvantage is that it rewrites the Value, so it is less efficient than a direct toEncoding.
10:04:27 hackage Z-IO 0.1.5.1 - Simple and high performance IO toolkit for Haskell https://hackage.haskell.org/package/Z-IO-0.1.5.1 (winterland)
10:04:35 dhouthoo_ joins (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be)
10:04:57 <kuribas> Uniaika: fromField (Proxy @"field") ["a", "b"] "c", pulls in field c, for example {"a": {"b": {"c" = 2 }}} => {"field" => 2}
10:05:02 × ensyde quits (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253) (Ping timeout: 260 seconds)
10:06:13 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
10:06:46 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:07:02 <kuribas> Uniaika: maybeFromField does the same, but can be empty.
10:07:44 <kuribas> Uniaika: you can compose the AesonTrans with monoid, use postTransJSON and preTransJSON to translate the JSON. That's it basically.
10:07:52 × guest35 quits (d537f42e@213.55.244.46) (Remote host closed the connection)
10:08:14 <kuribas> Uniaika: and don't forget to set the fieldModifier using transFieldModifier if you have one.
10:09:06 × lemmih_ quits (~lemmih@218.186.157.57) (Remote host closed the connection)
10:09:34 lemmih_ joins (~lemmih@2406:3003:2072:44:9dc:f2e9:a002:8d1a)
10:09:55 <Uniaika> kuribas: I doubt I'll be able to pull this off for the current project, but I will definitely think about it for any next project I'm bootstrapping
10:10:08 <Uniaika> (but again, I'll need some kind of blog post to introduce the lib and its usage :P)
10:10:33 <kuribas> Uniaika: yeah, a hackage library with some docs would be a good idea :)
10:10:44 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
10:10:46 <Uniaika> <3
10:13:18 × is_null quits (~jpic@pdpc/supporter/professional/is-null) (Ping timeout: 272 seconds)
10:13:53 is_null joins (~jpic@pdpc/supporter/professional/is-null)
10:15:30 karolus joins (~karolus@static.32.230.217.95.clients.your-server.de)
10:16:50 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
10:17:50 cfricke joins (~cfricke@unaffiliated/cfricke)
10:18:49 × is_null quits (~jpic@pdpc/supporter/professional/is-null) (Ping timeout: 264 seconds)
10:21:27 oisdk joins (~oisdk@2001:bb6:3329:d100:7c51:293a:6844:5080)
10:21:47 × polyrain_ quits (~polyrain@2001:8003:e501:6901:8a4:c02:960d:e633) (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:22:15 L29Ah joins (~L29Ah@unaffiliated/l29ah)
10:22:52 phillip joins (~phillip@178.162.204.214)
10:23:46 × wei2912 quits (~wei2912@unaffiliated/wei2912) (Quit: Lost terminal)
10:24:06 × lemmih_ quits (~lemmih@2406:3003:2072:44:9dc:f2e9:a002:8d1a) (Remote host closed the connection)
10:24:08 × iteratee quits (~kyle@162.211.154.4) (Read error: Connection reset by peer)
10:24:20 iteratee joins (~kyle@162.211.154.4)
10:24:31 × petersen quits (~petersen@redhat/juhp) (Remote host closed the connection)
10:24:35 × alp quits (~alp@2a01:e0a:58b:4920:1dcd:3fff:5840:1f3a) (Ping timeout: 272 seconds)
10:24:42 lemmih_ joins (~lemmih@2406:3003:2072:44:9dc:f2e9:a002:8d1a)
10:24:53 × noctux quits (~noctux@unaffiliated/noctux) (Ping timeout: 260 seconds)
10:25:27 noctux joins (~noctux@unaffiliated/noctux)
10:26:14 petersen joins (~petersen@redhat/juhp)
10:26:31 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
10:26:38 × L29Ah quits (~L29Ah@unaffiliated/l29ah) (Ping timeout: 260 seconds)
10:27:45 × ericsagnes quits (~ericsagne@2405:6580:0:5100:85d4:43d9:8dee:59a0) (Ping timeout: 272 seconds)
10:28:55 × berberman_ quits (~berberman@unaffiliated/berberman) (Ping timeout: 244 seconds)
10:29:36 berberman joins (~berberman@unaffiliated/berberman)
10:30:10 lucid_0x80 joins (~lucid_0x8@85.132.73.6)
10:32:57 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 258 seconds)
10:33:52 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
10:33:54 dcoutts_ joins (~duncan@33.14.75.194.dyn.plus.net)
10:35:34 solonarv joins (~solonarv@anancy-651-1-202-101.w109-217.abo.wanadoo.fr)
10:37:57 hackage matchable-th 0.1.1.1 - Generates Matchable instances using TemplateHaskell https://hackage.haskell.org/package/matchable-th-0.1.1.1 (viercc)
10:38:19 × lucid_0x80 quits (~lucid_0x8@85.132.73.6) (Ping timeout: 258 seconds)
10:38:24 ggole joins (~ggole@2001:8003:8119:7200:dcc4:683f:59f7:9d48)
10:39:54 ericsagnes joins (~ericsagne@2405:6580:0:5100:dca2:e278:5c94:78bf)
10:41:58 × bliminse quits (~bliminse@host217-42-95-37.range217-42.btcentralplus.com) (Ping timeout: 256 seconds)
10:42:17 bliminse joins (~bliminse@host217-42-95-37.range217-42.btcentralplus.com)
10:42:27 L29Ah joins (~L29Ah@unaffiliated/l29ah)
10:42:41 <Uniaika> god damnit
10:43:34 <Uniaika> I'm having this JSON format to parse and I can't seem to make sense of what to do
10:43:49 <Uniaika> I have *two* top-level field, that are to be unified in a sum type in Haskell-land
10:45:44 <Uniaika> so naturally I'm writing such an instance https://ghostbin.co/paste/r64hne2
10:46:30 <Uniaika> (surprise, doesn't compile)
10:47:00 × bliminse quits (~bliminse@host217-42-95-37.range217-42.btcentralplus.com) (Ping timeout: 256 seconds)
10:47:30 × L29Ah quits (~L29Ah@unaffiliated/l29ah) (Ping timeout: 272 seconds)
10:47:44 bliminse joins (~bliminse@host217-42-95-37.range217-42.btcentralplus.com)
10:49:13 p8m joins (p8m@gateway/vpn/protonvpn/p8m)
10:49:25 × Stanley00 quits (~stanley00@unaffiliated/stanley00) ()
10:49:58 × p8m_ quits (p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 260 seconds)
10:50:25 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
10:52:43 <fendor> Uniaika, in the example, aren't you missing the unifying sum type?
10:55:05 <Uniaika> >_> sorry, I'll edit the snippet
10:55:12 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
10:55:40 <Uniaika> fendor: reload, it's been added
10:55:54 × rprije quits (~rprije@203.214.95.251) (Ping timeout: 265 seconds)
10:56:48 <fendor> Uniaika, and why doesn't it compile? Code-snippet looks roughly good to me
10:58:38 × John20 quits (~John@82.46.59.122) (Ping timeout: 258 seconds)
11:01:08 <merijn> heh
11:01:21 <Uniaika> fendor: https://ghostbin.co/paste/r64hne2
11:01:24 <Uniaika> here is the error
11:01:25 <merijn> "maybe" is exported from Prelude?
11:01:31 bahamas joins (~lucian@unaffiliated/bahamas)
11:01:38 <Uniaika> merijn: yes, I think so
11:01:56 <Uniaika> fendor: also, I think I have a hard time expressing the fact that they may be null, but not at the same time?
11:02:17 × xelxebar quits (~xelxebar@gateway/tor-sasl/xelxebar) (Remote host closed the connection)
11:02:24 <Uniaika> I mean, if it were an object, I'd use (.:?)
11:02:31 <nshepperd> this looks like a job for Alternative
11:02:50 xelxebar joins (~xelxebar@gateway/tor-sasl/xelxebar)
11:03:00 <Uniaika> hmm
11:03:04 <Uniaika> sounds like it yeah
11:03:30 <Uniaika> but every tutorial under the sun seems to be operating on an object, and not with top-level values, so I don't know how much they apply?
11:03:33 lemmih__ joins (~lemmih@218.186.157.57)
11:03:34 <Uniaika> hmm.
11:03:41 <Uniaika> I'll try something
11:03:58 <Uniaika> (thanks for being rubber ducks, it's incredibly helpful to be able to lay down my thoughts)
11:04:28 <fendor> Uniaika, I think the type for field2 is wrong, too. Don't you need Data.UUID.fromText ?
11:04:57 <Uniaika> fendor: well, since there is already a FromJSON instance for UUID, I thought it would work out-of-the-box?
11:05:07 × chaosmasttter quits (~chaosmast@p200300c4a711b00135524723c22b3f52.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
11:05:13 <nshepperd> what exactly do you mean by a top level field
11:05:37 <nshepperd> value, whatever
11:05:41 <Uniaika> I'll add the desired JSON representation to the snippet
11:05:55 × lemmih_ quits (~lemmih@2406:3003:2072:44:9dc:f2e9:a002:8d1a) (Ping timeout: 240 seconds)
11:06:28 hackage git-mediate 1.0.8.1 - Tool to help resolving git conflicts https://hackage.haskell.org/package/git-mediate-1.0.8.1 (EyalLotem)
11:06:32 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 265 seconds)
11:06:34 <fendor> Uniaika, I don't think `withText` gives you a text and then you have to specify a value parser for that text. Doesnt use the instance automatically
11:07:04 <nshepperd> that usage of withText doesn't look right anyhow
11:07:12 <fendor> indeed
11:07:27 <nshepperd> The first argument is only used for the error message
11:08:50 <Uniaika> fendor, nshepperd : https://ghostbin.co/paste/r64hne2
11:09:04 <merijn> Uniaika: I recommend using a different pastebin, that one is terrible
11:09:09 <Uniaika> ah shit
11:09:10 <Uniaika> sorry
11:09:15 <Uniaika> dpaste?
11:09:19 <merijn> It apparently requires me enabling cookies AND solving a captcha to read things
11:09:21 <merijn> screw that
11:09:23 <Uniaika> I think hpaste is dead now, right?
11:09:25 <dminuoso> https://paste.tomsmeding.com/
11:09:32 <dminuoso> Is the spiritual hpaste successor
11:09:41 <Uniaika> https://paste.tomsmeding.com/QMFidUu1
11:09:45 <Uniaika> dminuoso: thx
11:09:49 <fendor> well, for Foo, it could be something like: `parseJSON v = Field1 <$> v .: "field1" <|> Field2 <$> v .: "field2"`
11:09:52 <merijn> tomsmeding is the hero #haskell needed ;)
11:10:04 John20 joins (~John@82.46.59.122)
11:10:10 <merijn> He resurrected ircbrowse too, so now I can be self-concious about how much time I spend here :p
11:10:18 <Uniaika> fendor: ooooh
11:10:30 <merijn> tomsmeding: oh, maybe you should send a mail to Haskell Weekly to publicize those two?
11:10:36 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
11:11:27 hackage http-conduit-downloader 1.1.0 - HTTP downloader tailored for web-crawler needs. https://hackage.haskell.org/package/http-conduit-downloader-1.1.0 (VladimirShabanov)
11:11:49 mmohammadi981266 joins (~mmohammad@188.210.103.147)
11:12:04 × mmohammadi981266 quits (~mmohammad@188.210.103.147) (Client Quit)
11:12:14 <Uniaika> fendor: but (.:) is expecting a HashMap right?
11:12:25 <tomsmeding> merijn: I'm not sure it would be a good idea to publicise ircbrowse that way, given that it's not my project... :p
11:12:53 <dminuoso> Uniaika: No.
11:12:56 <merijn> tomsmeding: It's open source, you just forked/maintained it
11:13:05 <dminuoso> (.:) :: FromJSON a => Object -> Text -> Parser a
11:13:06 <tomsmeding> true
11:13:13 <merijn> tomsmeding: I don't think Chris would mind, but you could always ping him over email and ask
11:13:13 <dminuoso> Uniaika: The interface is usually like this:
11:13:18 <fendor> Uniaika, Then you would need: `parseJSON obj = withObject "TopLevel Object" $ \v -> Field1 <$> v .: "field1" <|> Field2 <$> v .: "field2"`
11:13:36 <dminuoso> Uniaika: withObject "foo" $ \o -> F <$> o .: "some" <*> o .: "other"
11:13:41 guest35 joins (d537f42e@213.55.244.46)
11:13:58 mmohammadi981266 joins (~mmohammad@188.210.103.147)
11:14:10 <dminuoso> Or, as I prefer, with RecordWildcards:
11:14:27 × mmohammadi981266 quits (~mmohammad@188.210.103.147) (Client Quit)
11:14:43 <dminuoso> withObject "foo" $ \o -> do { field1 <- o .: "field1"; field2 <- o .: "field2"; pure F{..} }
11:14:43 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
11:14:47 <fendor> Personally, I found my library to go now is aeson-combinators. Json decoders and encoders is one thing elm got right
11:15:09 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
11:15:16 <cpressey> May I humbly propose replacing 'https://gist.github.com/' in the topic of this channel with 'https://paste.tomsmeding.com/'? :)
11:15:23 <dminuoso> fendor: waargonaut addresses most issues well
11:15:34 <dminuoso> it has a much better and flexible interface
11:15:42 <Uniaika> dminuoso: but wouldn't that mean that the expected JSON has this "foo" sub-object then?
11:15:42 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
11:15:59 <dminuoso> Uniaika: No, that's just a name that is used for debugging
11:16:13 <dminuoso> Uniaika: So when the parser fail, it will call the object (it was looking for) "foo"
11:16:13 × nados quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
11:16:23 <fendor> dminuoso, too complex for my taste
11:16:33 <dminuoso> fendor: Dunno, I find it rather simple.
11:16:38 × p8m quits (p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 272 seconds)
11:16:46 nados joins (~dan@107-190-41-58.cpe.teksavvy.com)
11:16:54 <dminuoso> Uniaika: https://hackage.haskell.org/package/aeson-1.5.4.1/docs/src/Data.Aeson.Types.FromJSON.html#withObject
11:17:13 <merijn> dminuoso: waargonaut's API is a Lovecraftian mess I wouldn't wish upon my worst enemy
11:17:41 p8m joins (p8m@gateway/vpn/protonvpn/p8m)
11:18:02 raehik joins (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net)
11:18:25 <dminuoso> merijn: It's not any less offending than say megaparsec.
11:18:48 <dminuoso> And zippers!
11:19:05 <dminuoso> When you have to deal with other peoples formats, zippers are really a blessing.
11:19:32 lucid_0x80 joins (~lucid_0x8@85.132.73.6)
11:19:44 jollygood2 joins (~bc8165ab@217.29.117.252)
11:19:49 <fendor> aeson-combinators is much less offending. But I have to admit, Currently I only have rather trivial json formats to maintain
11:19:50 <dminuoso> And waargonaut handles JSON better, since it can deal with multiple "overlapping" attributes in objects
11:19:54 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
11:19:59 <merijn> dminuoso: tbh, I think megaparsec has regressed *a lot* in that regard
11:20:10 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
11:20:18 <merijn> And it's a bad thing for Haskell and the ability to promote megaparsec to beginners
11:21:01 <dminuoso> merijn: The rudimentary interface of waargonaut is simpler than aeson by far.
11:21:04 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
11:21:42 <merijn> dminuoso: Then they need to package/document it better to hide away the clutter from the "main" user facing UI
11:21:53 <dminuoso> I agree, the documentation could be improved.
11:22:05 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
11:23:07 <nshepperd> Uniaika: the top level json you're looking at there _is_ an object, that's what withObject is for
11:23:15 mmohammadi981266 joins (~mmohammad@188.210.103.147)
11:23:27 <nshepperd> field1 and field2 being text fields of it
11:23:52 <Uniaika> nshepperd: okay, I was afraid that since I'm writing an instance for what is a secondary object, it would try and mimic that structure in the JSON, which is a flat object
11:23:53 × mmohammadi981266 quits (~mmohammad@188.210.103.147) (Client Quit)
11:24:23 <dminuoso> merijn: https://github.com/qfpl/waargonaut#example if you consider these examples, the ergonomics is quite good. :)
11:24:57 <merijn> dminuoso: the Haddocks are just 15 pages of type gobbledy-gook, though
11:24:58 hackage imm 2.0.0.0 - Execute arbitrary actions for each item from RSS/Atom feeds https://hackage.haskell.org/package/imm-2.0.0.0 (koral)
11:25:50 <dminuoso> merijn: Bringing me back to my original point, we should get rid of all that JSON nonsense.
11:25:57 <fendor> dminuoso, also, why are they using fromKey instead of atKey? atKey seems to be simpler
11:26:07 <dminuoso> Just specify and write wire protocols, like programmers have done for the past 30 years.
11:26:25 <dminuoso> a bit of `binary` works wonders
11:26:28 <merijn> dminuoso: Or use dhall :)
11:26:39 <dminuoso> Oh, for configuration sure.
11:26:46 × lucid_0x80 quits (~lucid_0x8@85.132.73.6) (Ping timeout: 272 seconds)
11:27:00 <dminuoso> For data exchange, if I had to pick a premade serialization format again, I'd go cbor.
11:27:07 <merijn> but yeah, a good BNF + wire protocol >> poorly implemented shit on top of JSON
11:27:25 <dminuoso> Indeed.
11:27:44 <nshepperd> @hackage serialize
11:27:44 <lambdabot> https://hackage.haskell.org/package/serialize
11:28:06 <dminuoso> nshepperd: I think you were looking for cereal?
11:28:06 <merijn> binary has pretty much obsoleted serialise, tbh
11:28:12 <nshepperd> oop misspelt
11:28:14 <merijn> eh, yeah cereal I mean
11:28:29 <nshepperd> @hackage serialise
11:28:29 <lambdabot> https://hackage.haskell.org/package/serialise
11:28:34 <dminuoso> I mean, cereal was made because binary was lacking support for strict bytestrings?
11:28:43 <dminuoso> binary supports both lazy and strict bytestrings now
11:28:53 <dminuoso> has good support for adding contexts
11:29:04 <nshepperd> serialise is cbor based, very nice imo
11:30:26 <dminuoso> nshepperd: serialise seems great if you want to do data exchange between two haskell systems over the network.
11:30:52 <merijn> template-haskell versions are tied to specific GHCs, right?
11:31:08 <dminuoso> https://hackage.haskell.org/package/template-haskell
11:31:13 <dminuoso> merijn: Judging from the bounds, Id say now
11:31:16 <dminuoso> *no
11:31:21 <dminuoso> base (>=4.11 && <4.15), ghc-boot-th (==8.10.1), ghc-prim, pretty (==1.1.*) [details]
11:31:25 <nshepperd> i also use it for serialising cached stuff to disk between runs of the same program
11:33:06 × chele quits (~chele@5.53.222.202) (Ping timeout: 272 seconds)
11:33:08 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 258 seconds)
11:33:19 snakemas1 joins (~snakemast@213.100.206.23)
11:33:25 Tario joins (~Tario@201.192.165.173)
11:33:42 <tomjaguarpaw> I can't help thinking that what's important is the logical structure of the wire format rather than its concrete structure.
11:34:56 <tomsmeding> merijn: https://github.com/haskellweekly/haskellweekly/pull/52
11:37:01 machinedgod joins (~machinedg@24.105.81.50)
11:37:06 polyrain joins (~polyrain@2001:8003:e501:6901:8a4:c02:960d:e633)
11:38:17 seanvert joins (~user@177.84.244.242)
11:38:46 alp joins (~alp@2a01:e0a:58b:4920:2586:865a:4e94:a66b)
11:39:25 bahamas joins (~lucian@unaffiliated/bahamas)
11:39:32 cfricke joins (~cfricke@unaffiliated/cfricke)
11:41:51 <kuribas> Uniaika: don't you need (.:?) ?
11:42:07 <kuribas> Uniaika: it returns a Maybe for a field that can be possibly null.
11:42:23 <Uniaika> I found a way, actually
11:42:50 <Uniaika> solving the issue upstream, and not deriving the instance for the type, but taking care of serde in the upstream type
11:43:00 <Uniaika> (it does work)
11:43:02 <kuribas> that's even better :)
11:43:16 <Uniaika> thank you all for your time, I love you all, you're incredible <3
11:43:48 <kuribas> Uniaika: although I think your case match is a good way BTW...
11:44:00 <kuribas> because it clearly shows you want exclusive or.
11:44:05 <merijn> Anyone know how to avoid "redundant import" warnings for "Data.Monoid ((<>))" on GHC >8.2 in a way that doesn't break GHC 8.0-8.2
11:44:22 <Uniaika> merijn: I'm going to say the bad word but…
11:44:23 <Uniaika> CPP?
11:44:30 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 272 seconds)
11:45:28 Buntspecht joins (~user@unaffiliated/siracusa)
11:48:52 × hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Quit: hekkaidekapus)
11:49:02 <kuribas> CPP :)
11:50:39 × cpressey quits (~cpressey@88.144.68.224) (Quit: wvw /o/ /o/ /o/)
11:51:15 hekkaidekapus joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
11:51:21 is_null joins (~jpic@pdpc/supporter/professional/is-null)
11:51:50 × raehik quits (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net) (Remote host closed the connection)
11:54:51 raehik joins (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net)
12:00:01 × phillip quits (~phillip@178.162.204.214) ()
12:00:27 Wuzzy joins (~Wuzzy@p549c9d2d.dip0.t-ipconnect.de)
12:01:14 ensyde joins (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253)
12:02:59 × totbwf quits (sid402332@gateway/web/irccloud.com/x-auttreoigxuilyba) (Ping timeout: 240 seconds)
12:03:37 × bradparker quits (sid262931@gateway/web/irccloud.com/x-dvycqqnustcjicgg) (Ping timeout: 246 seconds)
12:03:39 djellemah joins (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54)
12:03:47 × ebutleriv quits (sid217783@gateway/web/irccloud.com/x-zcpyidnqxtmhuisv) (Ping timeout: 240 seconds)
12:03:56 bradparker joins (sid262931@gateway/web/irccloud.com/x-kzdpaybrmmwnrdgh)
12:03:58 ebutleriv joins (sid217783@gateway/web/irccloud.com/x-cvawhvfjdshsscgr)
12:03:58 totbwf joins (sid402332@gateway/web/irccloud.com/x-ymdhjktodciveoos)
12:03:59 lally_ joins (sid388228@gateway/web/irccloud.com/x-gjvzovhllmqfgnqi)
12:03:59 wpcarro_ joins (sid397589@gateway/web/irccloud.com/x-ycncefjlbxwjrjeb)
12:04:01 natim87_ joins (sid286962@gateway/web/irccloud.com/x-hbpjyobuzuhwywke)
12:04:07 davetapley_ joins (sid666@gateway/web/irccloud.com/x-cretwjqzdceozsvl)
12:04:30 urodna joins (~urodna@unaffiliated/urodna)
12:04:57 × lally quits (sid388228@gateway/web/irccloud.com/x-lstpiuaiwaadwufc) (Ping timeout: 258 seconds)
12:04:57 lally_ is now known as lally
12:05:12 × davetapley quits (sid666@gateway/web/irccloud.com/x-djoktstvzubeecxm) (Ping timeout: 260 seconds)
12:05:13 × wpcarro quits (sid397589@gateway/web/irccloud.com/x-dhrgdbgzbcfpxeys) (Ping timeout: 260 seconds)
12:05:13 × natim87 quits (sid286962@gateway/web/irccloud.com/x-uvpnvingawevahjl) (Ping timeout: 260 seconds)
12:05:13 davetapley_ is now known as davetapley
12:05:13 natim87_ is now known as natim87
12:05:13 wpcarro_ is now known as wpcarro
12:05:55 × ensyde quits (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253) (Ping timeout: 272 seconds)
12:06:58 hackage termonad 4.0.1.1 - Terminal emulator configurable in Haskell https://hackage.haskell.org/package/termonad-4.0.1.1 (cdepillabout)
12:06:59 × Shun131 quits (sid377723@gateway/web/irccloud.com/x-qfflzmcznnjkrwrn) (Quit: Connection closed for inactivity)
12:07:09 drbean joins (~drbean@TC210-63-209-63.static.apol.com.tw)
12:08:17 Kaivo joins (~Kaivo@ec2-15-222-231-32.ca-central-1.compute.amazonaws.com)
12:09:20 <merijn> I just got rid of all the CPP :(
12:10:47 <Uniaika> I know, I know…
12:10:51 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:11:29 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
12:13:36 × lemmih__ quits (~lemmih@218.186.157.57) (Remote host closed the connection)
12:13:43 <merijn> hmm, a change in examples probably doesn't warrant a new release
12:14:04 lemmih__ joins (~lemmih@2406:3003:2072:44:9dc:f2e9:a002:8d1a)
12:14:20 × is_null quits (~jpic@pdpc/supporter/professional/is-null) (Ping timeout: 256 seconds)
12:15:24 is_null joins (~jpic@pdpc/supporter/professional/is-null)
12:15:46 bitmagie joins (~Thunderbi@200116b806d3630091dfc145cf082aaa.dip.versatel-1u1.de)
12:16:51 <kuribas> merijn: do you know a better way to deal with breaking changes?
12:16:56 <kuribas> like the semigroup stuff
12:17:08 <merijn> kuribas: There's usually a migration guide with GHC
12:17:19 <kuribas> merijn: which recommends cpp...
12:17:36 <merijn> And the rule is that backwards compat for 3 releases should be possible without CPP
12:20:08 × John20 quits (~John@82.46.59.122) (Ping timeout: 260 seconds)
12:22:56 <hekkaidekapus> dminuoso: After some light sleuthing, the OutsideIn algorithm seems to be implemented as described in the paper, more or less. I would succinctly answer this to your original question: no matter how involved a method’s constraints are, the solving will boil down to generating implicits and using them as evidence.
12:24:49 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
12:25:38 <dminuoso> hekkaidekapus: Fair enough, the reason Im asking is, Ive been staring at a mail on haskell-cafe for so long, Im starting to think there's a bug in the instance selection algorithm.
12:26:19 <dminuoso> Where GHC selects an instance despite overlapping instances existing.
12:26:53 <dminuoso> The video though I think helped, since it explained roughly how the constraint checking on instances with context works.
12:27:00 <tomjaguarpaw> dminuoso: The Wrapper (Maybe a) mail?
12:27:03 <dminuoso> tomjaguarpaw: Yeah.
12:27:09 <tomjaguarpaw> I was also puzzled by that.
12:27:27 <hekkaidekapus> dminuoso, tomjaguarpaw: link?
12:28:21 <tomjaguarpaw> https://mail.haskell.org/pipermail/haskell-cafe/2020-October/132815.html
12:28:28 <hekkaidekapus> Thanks.
12:28:58 hackage hwk 0.5 - Commandline text processing with Haskell functions https://hackage.haskell.org/package/hwk-0.5 (JensPetersen)
12:29:17 JordiGH joins (jordi@octave/developer/JordiGH)
12:30:39 st8less joins (~st8less@2603:a060:11fd:0:8a9:7e3f:adb9:77d2)
12:31:43 × st8less quits (~st8less@2603:a060:11fd:0:8a9:7e3f:adb9:77d2) (Client Quit)
12:32:02 <dminuoso> % newtype Foo = Foo Int; instance {-# OVERLAPS #-} Show (Maybe Foo) where show _ = "foo"
12:32:03 <yahb> dminuoso:
12:32:10 <dminuoso> % newtype W a = W (Maybe a); instance Show a => Show (W a) where show (W a) = show a
12:32:11 <yahb> dminuoso:
12:32:14 <dminuoso> % foo :: Show a => W a -> String; foo a = show a
12:32:14 <yahb> dminuoso:
12:32:16 <dminuoso> This should be rejected.
12:32:28 <dminuoso> (Unless IncoherentInstances was enabled)
12:32:49 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:842d:ee09:f1b5:9acd)
12:33:42 <dminuoso> % foo' :: Show a => Maybe a -> String; foo' a = show a
12:33:43 <yahb> dminuoso: ; <interactive>:9:47: error:; * Overlapping instances for Show (Maybe a) arising from a use of `show'; Matching instances:; instance Show a => Show (Maybe a) -- Defined in `GHC.Show'; instance [overlap ok] [safe] Show (Maybe Foo) -- Defined at <interactive>:5:50; instance [overlap ok] [safe] Show (Maybe Ghci4.Foo) -- Defined at <interactive>:1:50; (The choice depen
12:33:47 JordiGH parts (jordi@octave/developer/JordiGH) ()
12:34:01 <ClaudiusMaximus> % foo (W Nothing) -- just checking what happens at point of use
12:34:01 <yahb> ClaudiusMaximus: "Nothing"
12:35:37 <ClaudiusMaximus> % foo (W (Just (Foo 1))) -- just checking what happens at point of use
12:35:38 <yahb> ClaudiusMaximus: ; <interactive>:11:1: error:; * No instance for (Show Foo) arising from a use of `foo'; * In the expression: foo (W (Just (Foo 1))); In an equation for `it': it = foo (W (Just (Foo 1)))
12:35:45 <dminuoso> It seems, that the deferring the constraint `Show (Maybe a)` changes how instance is selected.
12:36:32 <dminuoso> If that was the case, it could imply that GHC falsely generates incoherent code.
12:37:12 <dminuoso> I tried debugging the type checker with a minimal program, but -ddump-tc-trace generated 5k lines of output..
12:37:20 <dminuoso> The manual did *not* lie when it said it would be real chatty.
12:37:35 × bitmagie quits (~Thunderbi@200116b806d3630091dfc145cf082aaa.dip.versatel-1u1.de) (Quit: bitmagie)
12:37:42 bahamas joins (~lucian@unaffiliated/bahamas)
12:38:23 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:842d:ee09:f1b5:9acd) (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:38:30 <dminuoso> I think, if nobody else does it, Ill file a bug report. Either the GHC manual is incorrect, or GHC is buggy. One has to be the case here.
12:38:57 <merijn> Time for everyone's daily reminder of the invaluable service of packdeps having an RSS feed when you need to bump your package bounds ;)
12:39:38 <merijn> dminuoso: pfft, you're missing an alternative
12:39:43 <merijn> dminuoso: They could *both* be wrong :p
12:40:10 <dminuoso> merijn: Im confident that its not the case, the instance selection algorithm descriped in the overlapping instances section seems rather clear.
12:40:29 mmohammadi981266 joins (~mmohammad@188.210.103.147)
12:42:30 × ralejs quits (~ralejs@2620:10d:c093:400::5:c80) (Read error: Connection reset by peer)
12:42:45 <hekkaidekapus> dminuoso: I’m looking at the corresponding Core before drawing conclusion. <https://paste.tomsmeding.com/aHILkhin>
12:42:48 ralejs joins (~ralejs@2620:10d:c093:400::5:c80)
12:42:58 <hekkaidekapus> *conclusions
12:43:40 Amras joins (~Amras@unaffiliated/amras0000)
12:43:42 <dminuoso> hekkaidekapus: Mind my asking, what is Core gonna tell you?
12:44:00 <hekkaidekapus> The dictionary passing.
12:44:52 × ralejs quits (~ralejs@2620:10d:c093:400::5:c80) (Read error: Connection reset by peer)
12:45:16 ralejs joins (~ralejs@163.114.131.1)
12:45:40 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:8576:1536:5132:aae7)
12:46:19 × mmohammadi981266 quits (~mmohammad@188.210.103.147) (Quit: I quit (╯°□°)╯︵ ┻━┻)
12:47:08 <dminuoso> $cshow1_rX8
12:47:56 <dminuoso> Internally, it picked dShow2_aV5 = $fShowMaybe $dShow1_aUS
12:49:02 <dminuoso> Despite another, equally good, dictionary, existing: $cshow_rWA
12:49:10 mmohammadi981266 joins (~mmohammad@188.210.103.147)
12:49:27 × perdent quits (~blah@101.175.82.233) (Ping timeout: 244 seconds)
12:49:28 <hekkaidekapus> Yeah, file a bug report!
12:50:01 <hekkaidekapus> Overlapping instances considered harmful anyway :0
12:50:32 perdent joins (~blah@101.175.147.239)
12:52:07 × bitmapper quits (uid464869@gateway/web/irccloud.com/x-nkhvkoypuffdqqdu) (Quit: Connection closed for inactivity)
12:52:53 × oisdk quits (~oisdk@2001:bb6:3329:d100:7c51:293a:6844:5080) (Quit: oisdk)
12:53:23 × sword865 quits (uid208942@gateway/web/irccloud.com/x-sxotpuupdfwwcwxa) (Quit: Connection closed for inactivity)
12:53:26 chaosmasttter joins (~chaosmast@p200300c4a711b0018861c787729f3b81.dip0.t-ipconnect.de)
12:53:36 × ralejs quits (~ralejs@163.114.131.1) (Read error: Connection reset by peer)
12:53:58 ralejs joins (~ralejs@2620:10d:c093:400::5:c80)
12:55:27 John20 joins (~John@82.46.59.122)
12:56:08 × jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
12:57:08 jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se)
12:58:55 <dminuoso> hekkaidekapus: The one thing Im not quite sold on, is this:
12:58:59 <dminuoso> https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#instance-overlap
12:59:25 <dminuoso> At the bottom it does mention that FlexibleInstances can lead to incoherent instance selection, but Im not immediately seeing whether this is related
13:01:31 × solonarv quits (~solonarv@anancy-651-1-202-101.w109-217.abo.wanadoo.fr) (Ping timeout: 256 seconds)
13:06:31 <hekkaidekapus> dminuoso: The bulb seems pretty related, but I would file the report still. It might be a short-lived ticket but we will have an up-to-date explanation as to “An alternative possible behaviour, not currently implemented…”.
13:07:01 × Rudd0 quits (~Rudd0@185.189.115.103) (Remote host closed the connection)
13:08:13 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 260 seconds)
13:08:30 <dminuoso> hekkaidekapus: Well, it's not really related because the incoherence arises from making a *more* specific instance in another module, and then run an instance selection in both modules.
13:09:34 <dminuoso> But yeah, I filed a bug report. At the very least the GHC manual should be improved if this is not an instance selection bug.
13:10:03 <hekkaidekapus> 👍
13:10:13 × Nik05 quits (~Nik05@85.150.134.175) (Quit: leaving)
13:15:23 ocaml427 joins (506d8558@gateway/web/cgi-irc/kiwiirc.com/ip.80.109.133.88)
13:15:32 ocaml427 parts (506d8558@gateway/web/cgi-irc/kiwiirc.com/ip.80.109.133.88) ()
13:15:45 × xff0x quits (~fox@217.110.198.158) (Ping timeout: 240 seconds)
13:16:40 Nik05 joins (~Nik05@85.150.134.175)
13:19:50 ruffy joins (~jonas@2a03:b0c0:3:d0::162e:a001)
13:20:39 × mmohammadi981266 quits (~mmohammad@188.210.103.147) (Quit: I quit (╯°□°)╯︵ ┻━┻)
13:22:05 ensyde joins (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253)
13:23:52 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
13:24:10 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
13:24:10 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
13:24:10 GyroW joins (~GyroW@unaffiliated/gyrow)
13:24:34 × rihards_ quits (~rihards@vpnlv.tilde.com) (Remote host closed the connection)
13:25:30 × ChaiTRex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Remote host closed the connection)
13:26:11 ChaiTRex joins (~ChaiTRex@gateway/tor-sasl/chaitrex)
13:26:59 × ensyde quits (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253) (Ping timeout: 272 seconds)
13:29:36 Tops2 joins (~Tobias@dyndsl-095-033-027-027.ewe-ip-backbone.de)
13:30:01 ruffy is now known as ruffy_
13:32:00 × Nik05 quits (~Nik05@85.150.134.175) (Changing host)
13:32:00 Nik05 joins (~Nik05@unaffiliated/nik05)
13:32:37 nomeata joins (~jojo@dslb-088-064-028-148.088.064.pools.vodafone-ip.de)
13:33:42 × ruffy_ quits (~jonas@2a03:b0c0:3:d0::162e:a001) (Quit: WeeChat 2.9)
13:34:00 ruffy joins (~jonas@2a03:b0c0:3:d0::162e:a001)
13:34:15 ruffy is now known as ruffy_
13:35:24 ystael joins (~ystael@209.6.50.55)
13:37:40 lowryder joins (~djlowry@web603.webfaction.com)
13:38:41 × ruffy_ quits (~jonas@2a03:b0c0:3:d0::162e:a001) (Client Quit)
13:40:55 × alp quits (~alp@2a01:e0a:58b:4920:2586:865a:4e94:a66b) (Ping timeout: 272 seconds)
13:41:31 xerox_ joins (~xerox@unaffiliated/xerox)
13:42:04 × ralejs quits (~ralejs@2620:10d:c093:400::5:c80) (Read error: Connection reset by peer)
13:42:55 ralejs joins (~ralejs@2620:10d:c093:400::5:c80)
13:43:11 knupfer joins (~Thunderbi@200116b82c814300c0110b68686b9a3e.dip.versatel-1u1.de)
13:43:14 × Sanchayan quits (~Sanchayan@106.201.37.251) (Ping timeout: 256 seconds)
13:43:43 Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas)
13:43:50 Sanchayan joins (~Sanchayan@106.201.37.251)
13:44:29 × Sanchayan quits (~Sanchayan@106.201.37.251) (Max SendQ exceeded)
13:45:08 Sanchayan joins (~Sanchayan@106.201.37.251)
13:45:44 × Sanchayan quits (~Sanchayan@106.201.37.251) (Max SendQ exceeded)
13:46:10 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 246 seconds)
13:46:14 Sanchayan joins (~Sanchayan@106.201.37.251)
13:46:54 × Sanchayan quits (~Sanchayan@106.201.37.251) (Max SendQ exceeded)
13:47:30 Sanchayan joins (~Sanchayan@106.201.37.251)
13:48:08 lemmih__ is now known as lemmih
13:48:10 × Sanchayan quits (~Sanchayan@106.201.37.251) (Max SendQ exceeded)
13:50:50 mmohammadi981266 joins (~mmohammad@188.210.103.147)
13:51:56 Sgeo joins (~Sgeo@ool-18b982ad.dyn.optonline.net)
13:52:27 hackage Z-IO 0.1.5.2 - Simple and high performance IO toolkit for Haskell https://hackage.haskell.org/package/Z-IO-0.1.5.2 (winterland)
13:53:46 ralejs_ joins (~ralejs@2620:10d:c093:400::5:c80)
13:53:46 × ralejs quits (~ralejs@2620:10d:c093:400::5:c80) (Read error: Connection reset by peer)
13:55:20 × drbean quits (~drbean@TC210-63-209-63.static.apol.com.tw) (Ping timeout: 260 seconds)
13:55:21 × ralejs_ quits (~ralejs@2620:10d:c093:400::5:c80) (Read error: Connection reset by peer)
13:55:22 ralejs joins (~ralejs@2620:10d:c093:400::5:c80)
13:55:34 cpressey joins (~cpressey@88.144.70.115)
13:57:15 xerox_ joins (~xerox@unaffiliated/xerox)
13:57:31 mdunnio joins (~mdunnio@208.59.170.5)
13:59:45 <merijn> btw, does anyone know of any working human cloning programs? >.>
13:59:46 p-core joins (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
14:01:44 <merijn> I was clicking through some dependencies and I'd like to order some backup phadej's ahead of time so the ecosystem doesn't grind to a halt without him >.>
14:02:59 <dminuoso> merijn: Well, we should get an ekmett along side. They could grow up together.
14:03:14 <phadej> dminuoso: ekmett is cloned already: RyanGlScott
14:03:28 <dminuoso> Haha. :)
14:03:29 <juri_> merijn: i've spent almost 7 years working on 3d printing in haskell. unfortunately, i'm falling apart faster than i can print.
14:03:47 <dminuoso> juri_: Hold on, 3d printing in haskell?
14:03:49 <dminuoso> tell me more.
14:04:04 <merijn> Ah, but see, edwardk is just inventing cool new stuff, plenty of volunteers for that
14:04:15 <phadej> merijn: order two copies (hopefully you can a discount) of hvr too
14:04:29 <juri_> dminuoso: implicitcad. hslice. modeling and slicing natively in haskell. badly, because there is only one of me.
14:04:29 <phadej> could get a discount*
14:04:42 <merijn> Less volunteers for turning duct tape and string into semi-solid engineering foundations :p
14:04:49 <dminuoso> juri_: How good is your slicing of human models?
14:04:52 <juri_> I don't have hslice on hackage yet.
14:05:07 <juri_> dminuoso: poor. i'm still working on simple geometric shapes.
14:05:32 <merijn> phadej: And maybe an SPJ ;)
14:05:39 alp joins (~alp@2a01:e0a:58b:4920:e961:3e4f:cf0f:6182)
14:05:43 <juri_> worse, i decided halfway through to change everything to projective geometric algebra, so hslice has a PGA engine embedded in it.
14:06:05 × shafox quits (~shafox@106.51.234.111) (Ping timeout: 240 seconds)
14:06:07 xff0x joins (~fox@217.110.198.158)
14:06:15 <dminuoso> merijn: Soon we're gonna need a clone of Stephanie Weirich as well to keep the cogs in dependent haskell going.
14:06:31 <merijn> I'm not sure I'm happy with those cogs :p
14:06:37 <phadej> isn't Richard kind of a mixture of both?
14:07:07 <dminuoso> 16:05:32 merijn | phadej: And maybe an SPJ ;)
14:07:18 <dminuoso> Luckily for us, SPJ did reproduce already.
14:08:12 <dminuoso> juri_: What is PGA?
14:08:15 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
14:08:33 <tomjaguarpaw> projective geometric algebra, presumably
14:08:33 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
14:08:33 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
14:08:33 GyroW joins (~GyroW@unaffiliated/gyrow)
14:09:11 <akegalj> &quit
14:09:18 <juri_> it's a high performance / high precision algebra system for doing geometry in. takes less operations to do stuff, and uses pure forms of objects, rather than approximations.
14:09:53 <akegalj> ;'\[]
14:09:58 <dminuoso> Does that require the input to be in some PGA format as well?
14:10:07 <dminuoso> Or can an arbitrary CAD output be fed into that?
14:10:10 × akegalj quits (~akegalj@93-138-183-8.adsl.net.t-com.hr) (Quit: leaving)
14:11:02 lemmih_ joins (~lemmih@218.186.157.57)
14:11:02 × mmohammadi981266 quits (~mmohammad@188.210.103.147) (Quit: I quit (╯°□°)╯︵ ┻━┻)
14:11:42 <juri_> it uses STLs.
14:11:57 <juri_> which coincidentally are what implicitcad outputs.
14:13:32 × lemmih quits (~lemmih@2406:3003:2072:44:9dc:f2e9:a002:8d1a) (Ping timeout: 260 seconds)
14:13:42 mmohammadi981266 joins (~mmohammad@188.210.103.147)
14:15:40 ruffy_ joins (~jonas@2a03:b0c0:3:d0::162e:a001)
14:17:47 <fendor> can I generate a module graph with some tool?
14:17:48 ddellacosta joins (~dd@86.106.121.168)
14:17:48 × Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 256 seconds)
14:17:55 <merijn> "yes"
14:18:04 <merijn> But now you're gonna ask which one, aren't you? >.>
14:18:06 <dminuoso> fendor: `cabal-plan dot --tred`
14:18:16 × knupfer quits (~Thunderbi@200116b82c814300c0110b68686b9a3e.dip.versatel-1u1.de) (Quit: knupfer)
14:18:17 <dminuoso> (the --tred is not required, but probably desirable)
14:18:26 knupfer joins (~Thunderbi@200116b82c814300c0110b68686b9a3e.dip.versatel-1u1.de)
14:18:30 <dminuoso> And then the usual graphviz tools. :)
14:18:45 <dminuoso> Oh wait. module graph
14:18:47 <dminuoso> mmm
14:18:49 × Noldorin quits (~noldorin@unaffiliated/noldorin) (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
14:18:57 <dminuoso> graphmod?
14:19:15 <fendor> merijn, :P well, preferably
14:19:40 <fendor> dminuoso, looks good
14:21:19 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 265 seconds)
14:21:43 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
14:22:28 hackage effet 0.3.0.0 - An Effect System based on Type Classes https://hackage.haskell.org/package/effet-0.3.0.0 (MichaelSzvetits)
14:23:55 <fendor> dammit, I have multiple Types modules that almost everyone depends on
14:24:09 <merijn> fendor: As always :p
14:24:11 <fendor> dminuoso, thanks, beautiful tool!
14:24:19 <merijn> I wish GHC would just get proper cyclic imports
14:25:14 <dminuoso> merijn: I recall a length discussion at dinner with a few of the GHC folks.
14:25:50 <dminuoso> Dont think it's ever gonna happen. :p
14:26:00 <merijn> Which is a travesty!
14:26:44 × mmohammadi981266 quits (~mmohammad@188.210.103.147) (Quit: Ping timeout (120 seconds))
14:27:06 <merijn> I demand my convenience! :(
14:27:27 mmohammadi981266 joins (~mmohammad@188.210.103.147)
14:28:34 seawalk joins (~seawalk@185.163.110.116)
14:30:28 hackage gi-gtksheet 4.0.1 - GtkSheet bindings https://hackage.haskell.org/package/gi-gtksheet-4.0.1 (ivanbakel)
14:34:36 spew joins (uid195861@gateway/web/irccloud.com/x-fetxtksdzgfjvjwb)
14:36:19 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
14:37:14 kupi joins (uid212005@gateway/web/irccloud.com/x-zkqelsktmjuyhxgl)
14:38:39 × lowryder quits (~djlowry@web603.webfaction.com) (Read error: Connection reset by peer)
14:40:24 × nomeata quits (~jojo@dslb-088-064-028-148.088.064.pools.vodafone-ip.de) (Quit: Client exiting)
14:42:14 × ralejs quits (~ralejs@2620:10d:c093:400::5:c80) (Read error: Connection reset by peer)
14:42:19 ralejs_ joins (~ralejs@2620:10d:c093:400::5:c80)
14:44:27 × ralejs_ quits (~ralejs@2620:10d:c093:400::5:c80) (Read error: Connection reset by peer)
14:44:51 ralejs joins (~ralejs@2620:10d:c093:400::5:c80)
14:44:53 × ericsagnes quits (~ericsagne@2405:6580:0:5100:dca2:e278:5c94:78bf) (Ping timeout: 272 seconds)
14:45:05 × Gerula quits (~Gerula@unaffiliated/gerula) (Ping timeout: 240 seconds)
14:45:16 × fendor quits (~fendor@77.119.130.38.wireless.dyn.drei.com) (Remote host closed the connection)
14:45:35 × chaosmasttter quits (~chaosmast@p200300c4a711b0018861c787729f3b81.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
14:46:49 blip joins (58823d9e@gateway/web/cgi-irc/kiwiirc.com/ip.88.130.61.158)
14:47:45 snakemas1 joins (~snakemast@213.100.206.23)
14:48:52 <blip> Is it possible to have enum on the type level? data X = A | B | C | D; foo :: Proxy [A..D]
14:49:03 <merijn> blip: Yes!
14:49:23 <blip> I've got a quite large datatype and I'd like to avoid TH and copy pasting
14:49:25 <merijn> blip: Although this is a path that *can* lead to incredibly painful code in the long term, so be warned :p
14:49:33 <merijn> oh, wait
14:49:37 <ocharles> Does anyone know if `build-tool-depends` should be putting executables in PATH for the relavant components when I use Cabal with Distribution.Simple.defaultMain? Because I'm not seeing that
14:49:37 <merijn> You mean the syntax
14:49:42 × mmohammadi981266 quits (~mmohammad@188.210.103.147) (Read error: Connection reset by peer)
14:49:58 <ocharles> The documentation for build-tool-depends writes: Cabal tries to make sure that all specified programs are atomically built and prepended on the $PATH shell variable before building the component in question, but can only do so for Nix-style builds
14:50:09 <merijn> blip: You could write a type family that computes that list?
14:50:10 <ocharles> But I don't know if a Setup.hs counts as Nix-style or old style
14:50:23 <merijn> ocharles: Setup.hs is lower level
14:50:33 <merijn> Setup.hs is Cabal (not cabal-install)
14:50:50 <blip> merjin: how would that work without writing explicitly every inhabitant?
14:51:04 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
14:51:14 GyroW joins (~GyroW@d54C03E98.access.telenet.be)
14:51:14 × GyroW quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
14:51:14 GyroW joins (~GyroW@unaffiliated/gyrow)
14:51:15 <blip> my data has about ~100 promoted constructors
14:51:22 <merijn> ocharles: And most likely no one knows the answer :p
14:51:49 chaosmasttter joins (~chaosmast@p200300c4a711b0018861c787729f3b81.dip0.t-ipconnect.de)
14:51:51 <merijn> blip: eh...I'd probably recommend "not doing that", but that's not very constructive :)
14:51:58 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
14:52:07 <merijn> blip: And now you know why the original paper was called Hasochism ;)
14:52:17 × jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
14:52:22 <merijn> blip: Maybe you can do something horrific using singletons?
14:52:33 <bahamas> ocharles: if I remember right, the nix builder for cabal relies on Setup.hs. but it's been a while
14:52:50 <merijn> <MS Clippy>Did you mean to use Idris?</MS Clippy>
14:53:15 avdb joins (~avdb@ip-62-235-189-198.dsl.scarlet.be)
14:53:22 <blip> merijn: I already contemplated screwing kind-safety and convert my constructors in a bunch of Symbol
14:53:37 × Ariakenom quits (~Ariakenom@193.254.193.1) (Ping timeout: 264 seconds)
14:53:52 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 272 seconds)
14:54:01 <merijn> blip: Once your type-safety involves "100s of type level constructors" I don't think it passes any sensible "cost-benefit analysis"
14:54:14 <merijn> Compile times will be a massive pain, as will refactoring >.>
14:54:14 × ralejs quits (~ralejs@2620:10d:c093:400::5:c80) (Read error: Connection reset by peer)
14:55:05 ralejs joins (~ralejs@2620:10d:c093:400::5:c80)
14:55:23 <blip> merijn: Yeah, it's quite a bit excessive
14:55:35 <blip> mirijn: 1000LOC type-level https://github.com/knupfer/type-of-html/blob/master/src/Html/Type/Internal.hs
14:55:57 <merijn> For *HTML*? >.>
14:55:57 hackage ad 4.4.1 - Automatic Differentiation https://hackage.haskell.org/package/ad-4.4.1 (ryanglscott)
14:56:08 <blip> merijn: better safe than sorry :)
14:56:14 <ocharles> merijn: I feared that might be the case >.<
14:56:21 <merijn> Jesus Christ
14:56:23 <ocharles> bahamas: well, it will write its own if there isn't one
14:56:25 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
14:56:35 <merijn> That module probably takes 5 million years to compile
14:56:48 ericsagnes joins (~ericsagne@2405:6580:0:5100:cc83:1c32:310e:946e)
14:57:03 <blip> It's actually not bad
14:57:30 <blip> But using the library gives ghc a sweat
14:57:39 <merijn> I wonder why >.>
14:57:58 <blip> not because of the type checker
14:58:09 <blip> the simplifier goes absolutely nuts
14:59:44 oisdk joins (~oisdk@2001:bb6:3329:d100:a9e4:32d1:231e:16a5)
14:59:44 <blip> Or is there a type level function which does something like type family ToSymbol x where ToSymbol Banana = "Banana"
14:59:55 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
15:00:01 × seawalk quits (~seawalk@185.163.110.116) ()
15:00:16 <blip> Like show, but with symbols
15:03:49 × ChaiTRex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Remote host closed the connection)
15:04:29 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
15:04:40 ChaiTRex joins (~ChaiTRex@gateway/tor-sasl/chaitrex)
15:06:09 macrover joins (~macrover@ip70-189-231-35.lv.lv.cox.net)
15:08:20 ralejs_ joins (~ralejs@2620:10d:c093:400::5:c80)
15:08:21 × ralejs quits (~ralejs@2620:10d:c093:400::5:c80) (Read error: Connection reset by peer)
15:09:08 bitmapper joins (uid464869@gateway/web/irccloud.com/x-ezaxzpcxhniaxecp)
15:09:23 Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas)
15:09:46 Neuromancer joins (~Neuromanc@unaffiliated/neuromancer)
15:09:54 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-aprzkzvsxxeylcyp)
15:10:00 <blip> Perhaps it would be possible with generics? I'm recalling vaguely that it's possible to retrieve the constructors at the type level
15:10:01 × aqd quits (~aqd@87-92-145-87.rev.dnainternet.fi) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:10:12 <blip> constructor names
15:10:40 <merijn> blip: Out of curiosity, have you ever read any Lovecraft novels/stories?
15:11:00 <blip> merijn: No, why do you ask?
15:11:08 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
15:11:29 <merijn> Because this path will lead you to the same fate as any of his protoganists :p
15:11:56 <merijn> i.e. gibberingly mad and insane after staring into the Eldritch horrors of the universe :)
15:12:08 <Taneb> merijn: sometimes that can be very fun
15:12:44 <blip> Well, considering that haskell is just a little hobby of mine I can only gibber mad and insane in my free time
15:13:02 <blip> At work, I'm at the receiving end (music teacher)
15:13:19 conal joins (~conal@64.71.133.70)
15:13:41 <merijn> Sounds like "The Music of Erich Zann" would be an appropriate recommendation :p
15:14:11 <blip> I like Dr Faustus and The Expanse
15:14:25 × acidjnk_new quits (~acidjnk@p200300d0c723782835a5fda97218b164.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
15:14:27 × CindyLinz quits (~cindy_utf@112.121.78.20) (Ping timeout: 240 seconds)
15:14:27 <blip> And mediaeval treaties about music theory
15:15:46 <blip> I.E. : (3/2)^12 /= 2^7 ==> modern music sucks
15:16:32 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
15:17:24 supaplex1 joins (~supaplex1@185.163.110.116)
15:17:26 Bakun joins (~bakun@51.15.0.88)
15:17:34 × cpressey quits (~cpressey@88.144.70.115) (Quit: WeeChat 1.9.1)
15:17:43 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 260 seconds)
15:19:17 <c_wraith> of course, for m, n > 0, (3/2)^m /= 2^n
15:19:38 <blip> yeah, but these numbers are quite special
15:19:47 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
15:19:49 <c_wraith> You can't have perfect fifths and perfect octaves uniformly across the scale. You have to decide what to give up.
15:20:17 <blip> yes, that's the point
15:20:28 <c_wraith> that's not "modern music sucks" that's math.
15:20:57 CindyLinz joins (~cindy_utf@112.121.78.20)
15:21:03 <blip> Well, Pythagoras at least claims that beautiful interval are simple rationals
15:21:35 <blip> so the modern fith (2^(5/12)) wouldn't please him
15:21:52 <merijn> But Pythagoras is dead, so we win!
15:22:26 <blip> I don't claim that I use exclusively Pythagoras taste to determine my taste
15:22:45 wroathe joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
15:22:46 <blip> But it's interesting to change ones point of view
15:22:56 ensyde joins (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253)
15:22:58 × xff0x quits (~fox@217.110.198.158) (Ping timeout: 260 seconds)
15:23:04 Ariakenom joins (~Ariakenom@h-155-4-221-50.NA.cust.bahnhof.se)
15:23:12 bahamas joins (~lucian@unaffiliated/bahamas)
15:23:24 <blip> oops: not 2^(5/12), it's 2^(7/12)
15:24:24 jil joins (~user@45.86.162.6)
15:24:26 <jil> hi
15:24:43 <blip> hi jil
15:25:18 <blip> jil: do you prefer perfect fiths or equidistant semitones?
15:25:22 <blip> :)
15:25:55 <monochrom> 2^(1/2) wouldn't please him either. It's still irrational.
15:25:56 <jil> I'm learning Haskell with "Programming in Haskell" 2nd edition..
15:26:16 <blip> Nice, can we help you?
15:26:39 <blip> monochrom: Yes
15:26:41 <monochrom> You know what, s/It's still/He's/ >:)
15:26:42 <jil> what a perfect fith or an equidistant semitone ?
15:26:43 × Bakun quits (~bakun@51.15.0.88) (Read error: Connection reset by peer)
15:27:25 × ensyde quits (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253) (Ping timeout: 240 seconds)
15:27:39 <jil> It would bother me If I was rational, not you ?
15:27:49 <blip> monochrom: He'd use (3/2)^7 minus some octaves for a semitone
15:29:28 <blip> jil: that is a quite modern stance
15:30:19 × kritzefitz quits (~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
15:30:35 <blip> jil: don't be confused, we're just smalltalking about historic music theory
15:30:56 <gentauro> kindaro: Torben wrote back and it is Jon Sporing who currently is wrote/maintain the material. Torben say that you should write Jon an e-mail and ask (nicely) if you can have a copy :-)
15:31:49 Bakun joins (~bakun@51.15.0.88)
15:32:08 <jil> blip: I was confused. Thank you.
15:33:11 <blip> jil: So, can we help you on your journey to enlightenment?
15:33:32 <blip> (regarding haskell)
15:34:23 <blip> merijn: Thanks for the recommendation, that's quite intresting
15:34:45 × CindyLinz quits (~cindy_utf@112.121.78.20) (Ping timeout: 240 seconds)
15:34:49 × Bakun quits (~bakun@51.15.0.88) (Read error: Connection reset by peer)
15:34:53 <blip> merijn: The descriptions of this literature reminds me of Kafka
15:37:45 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 240 seconds)
15:37:57 mdunnio_ joins (~mdunnio@208.59.170.5)
15:38:17 Bakun joins (~bakun@51.15.0.88)
15:39:42 fendor joins (~fendor@e237-037.eduroam.tuwien.ac.at)
15:39:58 jgt joins (~jgt@77-255-14-254.adsl.inetia.pl)
15:40:16 × mdunnio quits (~mdunnio@208.59.170.5) (Ping timeout: 246 seconds)
15:40:27 <jil> I think listing your smalltalking is already helping me a lot. But I was also wondering if the construct `add x = x :: Int` with the type coercing at the end, was recent because I don't see it in my manual (from 2016) but it work in GHCi 8.6.5
15:40:52 kritzefitz joins (~kritzefit@212.86.56.80)
15:40:56 <ski> it's not a coercion, but a type ascription
15:41:10 <blip> Ah, yes. In the MetaData of Generic Rep are the constructor names as Symbols. All I need now, is a type level function which converts camel case Symbols into hyphenated lowercase Symbols. That's a challenge but possible :)
15:41:13 × polyrain quits (~polyrain@2001:8003:e501:6901:8a4:c02:960d:e633) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:41:18 <ski> (it doesn't change the type of anything, it just specifies (pins down) what the type should be)
15:41:18 <monochrom> It is not recent. Just unidiomatic.
15:41:30 <ski> and yes, it's standard Haskell. was in Haskell98 already
15:41:38 <jil> thank you for the correction ski I wasn't sure about the vocabulary indeed.
15:42:22 <blip> jil: normally, you would write:
15:42:30 <ski> no worry, clearing up terminological (and sometimes conceptual) misalignments can often be useful, when communicating
15:42:37 <blip> `add x :: Int -> Int`
15:42:47 <ski> (without the `x')
15:42:58 <blip> oops
15:43:28 <blip> and propably `add :: Int -> Int -> Int`, magmas are cool
15:43:54 <jil> what are magmas ?
15:44:04 <ski> jil : it can sometimes be useful to have them, if there's a type ambiguity problem (the system has trouble figuring out which specific type you intend, somewhere in your code)
15:44:17 <blip> all functions which take two arguments of the same type and return something of that type
15:44:25 <blip> `magma :: a -> a -> a`
15:44:35 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:44:36 <blip> addition or multiplication for example
15:44:41 <ski> "magma" is a concept in math (abstract algebra) for a binary operation on a set/type
15:45:58 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
15:46:00 <ski> blip : why're they cool ?
15:46:23 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Client Quit)
15:46:50 <jil> I see.
15:46:52 <blip> ski: I like them a lot; you can define nice operators and a lot of things are magmas
15:47:08 <blip> ski: Or would you prefer them described as hot?
15:47:14 <blip> :)
15:47:15 <ski> usually you'd want a few laws, i think
15:47:41 LKoen joins (~LKoen@lstlambert-657-1-123-43.w92-154.abo.wanadoo.fr)
15:47:47 <ski> sure, if you have a magma, you automatically gets an operation taking a binary tree with leaves being elements in the magma, to an element in the magma
15:47:49 × LKoen quits (~LKoen@lstlambert-657-1-123-43.w92-154.abo.wanadoo.fr) (Read error: Connection reset by peer)
15:48:02 <blip> and that is nice
15:48:10 LKoen joins (~LKoen@81.255.219.130)
15:48:49 <blip> for example (<>) is quite nice, obviously it's even a monoid, but a lot of the niceness comes from the magma part
15:48:53 fresheyeball joins (~isaac@c-71-237-105-37.hsd1.co.comcast.net)
15:49:01 <blip> or semigroup
15:50:10 × knupfer quits (~Thunderbi@200116b82c814300c0110b68686b9a3e.dip.versatel-1u1.de) (Quit: knupfer)
15:50:18 knupfer joins (~Thunderbi@200116b82c814300159e9cdeac30c350.dip.versatel-1u1.de)
15:50:20 × blip quits (58823d9e@gateway/web/cgi-irc/kiwiirc.com/ip.88.130.61.158) (Quit: Connection closed)
15:50:27 × Bakun quits (~bakun@51.15.0.88) (Read error: Connection reset by peer)
15:50:38 blip joins (58823d9e@gateway/web/cgi-irc/kiwiirc.com/ip.88.130.61.158)
15:50:44 xff0x joins (~fox@217.110.198.158)
15:50:58 CindyLinz joins (~cindy_utf@112.121.78.20)
15:51:09 <ski> with semigroup, you have associativity, so you can combine a sequence of elements into a single element, and get the same result, regardless of how you group the elements in the sequence
15:51:46 <monochrom> That means magmas are freer than semigroups. :)
15:52:10 <blip> jil: How would you implement this signature: `slurp :: (a, b) -> a`
15:52:24 <blip> monochrom: :)
15:52:34 <ski> i guess you have a free functor from magmas to semigroups
15:52:36 × ubert quits (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Quit: ubert)
15:52:39 × alp quits (~alp@2a01:e0a:58b:4920:e961:3e4f:cf0f:6182) (Ping timeout: 272 seconds)
15:54:21 <jil> as `slurp (x,y) = x` blip
15:54:45 <blip> jil: cool, and what about: barf :: a -> (a, b)
15:54:50 Bakun joins (~bakun@51.15.0.88)
15:55:11 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
15:55:19 GyroW_ joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
15:55:20 × GyroW_ quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
15:55:20 GyroW_ joins (~GyroW@unaffiliated/gyrow)
15:56:34 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 272 seconds)
15:57:47 <jil> I'm looking for a definition with the flowing type `add :: Int -> Int -> Int -> Int` and I come up with this https://paste.debian.net/1166987 but I feel something is correct.
15:57:53 <jil> or not necessary
15:59:10 <ski> what do you mean by "flowing type" ?
15:59:13 × knupfer quits (~Thunderbi@200116b82c814300159e9cdeac30c350.dip.versatel-1u1.de) (Read error: Connection reset by peer)
15:59:16 <jil> more precisely I don't understand why removing the first `:: Int` make a fucntion returning `Num a` also I have x, y z Ints
15:59:17 <ski> @type let add x y z = x+y+z::Int where x :: Int; y :: Int; z :: Int in add
15:59:17 <monochrom> Write "add :: Int -> Int -> Int -> Int" instead of the "where x::Int etc" block. That block means something else.
15:59:19 <lambdabot> error:
15:59:19 <lambdabot> The type signature for ‘x’ lacks an accompanying binding
15:59:19 <lambdabot> (The type signature must be given where ‘x’ is declared)
15:59:20 knupfer joins (~Thunderbi@200116b82c814300f1e41d34f9bff3a4.dip.versatel-1u1.de)
15:59:22 × blip quits (58823d9e@gateway/web/cgi-irc/kiwiirc.com/ip.88.130.61.158) (Quit: Connection closed)
15:59:29 blip joins (58823d9e@gateway/web/cgi-irc/kiwiirc.com/ip.88.130.61.158)
15:59:40 <blip> jil: it's correct, albeit unusual
15:59:45 <monochrom> ski, I think s/flowing/following/
15:59:51 <ski> oh
16:00:01 ski sometimes fails to read typo :/
16:00:15 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
16:00:25 <blip> jil: you'd need only the top level type signature, all the other types are infered
16:00:27 chenshen joins (~chenshen@2620:10d:c090:400::5:1dbd)
16:00:46 × is_null quits (~jpic@pdpc/supporter/professional/is-null) (Read error: Connection reset by peer)
16:00:54 <ski> @let add x y z = (x :: Int) + (y :: Int) + (z :: Int) :: Int
16:00:55 <jil> sorry ski, I'm unfortunately very good at writting typos.
16:00:57 <lambdabot> Defined.
16:01:08 <monochrom> I trained myself to guess meanings from very large contexts when I was a child. Because I was too lazy to look up a word in a dictionary, I would rather guess an approximation from context.
16:01:18 <ski> is possible, if you really want to write it like that (but it's not idiomatic, as noted)
16:01:18 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
16:01:21 Rudd0 joins (~Rudd0@185.189.115.103)
16:01:34 × chenshen quits (~chenshen@2620:10d:c090:400::5:1dbd) (Client Quit)
16:01:53 <jil> ok. Thank you.
16:02:04 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
16:02:06 <ski> @let add (x :: Int) (y :: Int) (z :: Int) = x + y + z :: Int
16:02:08 <lambdabot> Defined.
16:02:09 <merijn> blip: Eh, the top level is inferred too
16:02:13 <merijn> blip: Everything is inferred
16:02:35 <merijn> You'll just get lynched by angry programmers if you don't annotate the top level :p
16:02:40 <ski> is another, similar, way (imho looks better). but it's still unidiomatic. and this one requires a language extension (`ScopedTypeVariables')
16:02:54 AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl)
16:03:06 <ski> add :: Int -> Int -> Int -> Int
16:03:10 <ski> add x y z = x + y + z
16:03:12 <jil> @let add (x :: Int) (y :: Int) = x + y
16:03:14 <lambdabot> .L.hs:157:1: error:
16:03:14 <lambdabot> Equations for ‘add’ have different numbers of arguments
16:03:14 <lambdabot> .L.hs:157:1-55
16:03:15 <ski> is the usual way to write it
16:03:26 <blip> @pl \x y z -> x + y + z
16:03:26 <lambdabot> ((+) .) . (+)
16:03:32 <dolio> If you don't annotate the top level you're probably going to end up hating yourself, eventually.
16:03:33 <ski> sorry, let me remove the earlier definition for you
16:03:36 <ski> @undefine
16:03:37 <lambdabot> Undefined.
16:03:45 <ski> @let add (x :: Int) (y :: Int) = x + y
16:03:46 <lambdabot> Defined.
16:03:48 <ski> @type add
16:03:49 <lambdabot> Int -> Int -> Int
16:04:14 <blip> add = ((+) .) . (+) :: Int -> Int -> Int -> Int
16:04:16 <blip> :P
16:04:17 <jil> I see. It's clearer like that. Thank you.
16:04:38 <dolio> At least if you write anything non-trivial.
16:04:45 <jil> :)
16:05:28 × nyd quits (~lpy@unaffiliated/elysian) (Ping timeout: 256 seconds)
16:06:01 <ski> @let add (x :: Int) (y :: Int) (z :: Int) :: Int = x + y + z -- too bad this doesn't work, anymore ..
16:06:01 <lambdabot> Parse failed: Cannot give an explicit type signature to a function binding
16:06:40 bahamas joins (~lucian@unaffiliated/bahamas)
16:07:51 <ski> jil : "more precisely I don't understand why removing the first `:: Int` make a fucntion returning `Num a` also I have x, y z Ints" -- i suppose you mean the (first) `:: Int', in the paste
16:09:00 <jil> yes
16:09:04 <ski> if you just say `add x y z = x + y + z', then it infers that `x',`y',`z' (and the result `x+y+z') must be of "numeric type", meaning some type that supports `+' (and a few other operations). that is what the `Num a =>' part means : works for all types `a', provided that `a' supports the `Num' operations
16:09:20 <ski> @src Num
16:09:20 <lambdabot> class Num a where
16:09:20 <lambdabot> (+), (-), (*) :: a -> a -> a
16:09:20 <lambdabot> negate, abs, signum :: a -> a
16:09:20 <lambdabot> fromInteger :: Integer -> a
16:10:15 aaaaaa joins (~ArthurStr@host-91-90-11-13.soborka.net)
16:10:33 <jil> sure but I was understanding the `where x :: Int...` as a restriction or condition on my arguments' type
16:10:34 <ski> (note that this doesn't include division. if you (also) want division, you'll have to say whether you want integral (with remainder) division, or fractional division. instead of `Num', you'd then use `Integral' or `Fractional')
16:11:25 <blip> these arguments are restricted by the top level type signature
16:11:37 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 264 seconds)
16:11:38 pera joins (~pera@unaffiliated/pera)
16:11:54 <blip> or by the return type, because the (+) forces the same type on both sides and for the result
16:11:54 lucid_0x80 joins (~lucid_0x8@188.253.234.40)
16:12:15 aaaaaa parts (~ArthurStr@host-91-90-11-13.soborka.net) ()
16:12:18 <ski> jil : when i try the first section of code in the paste (inbetween the `{:' and the `:}'), i get errors for missing bindings (definitions) for `x',`y',`z'
16:12:31 glguy is now known as ghoulguy
16:12:37 <ski> (i'm not sure how you're trying this piece of code, without getting errors)
16:13:22 <kuribas> is there an applicative for records? Positional arguments can be come quite unwieldy and unreadable...
16:13:30 <jil> I evaluate in from org-mode in emacs that sends it to ghci
16:13:38 <ski> jil : generally, if you put `someName :: SomeType', e.g. in a `where'-clause attaching to a definition, there should also be a definition of `someName' in there
16:13:48 <kuribas> hmm, maybe applicative-do...
16:13:49 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
16:14:01 alp joins (~alp@2a01:e0a:58b:4920:c582:5c02:4169:5973)
16:14:14 <blip> kuribas: perhaps you'd like to use lensesd
16:14:17 <blip> lenses?
16:14:29 <kuribas> blip: how do lenses help with applicative?
16:14:39 <ski> so, i'm getting complaints, because there's no definition of `x',`y',`z', accompanying those type signatures for them, inside that `where'
16:15:05 <blip> blip: to select which part of the record you'd like to act upon
16:15:08 <ski> (since `x',`y',`z' are not bound in the `where', but rather in the patterns / formal parameters, to the left of the `=', in the defining equation)
16:15:13 geekosaur joins (82659a0e@host154-014.vpn.uakron.edu)
16:15:26 <kuribas> blip: but I need to act on all parts
16:15:36 <ski> jil : hm. maybe it does something unexpected, not sure
16:15:50 <blip> kuribas: well, if they are all of the same type, you can derive a functor instance
16:15:57 <ski> (it being `org-mode', or perhaps some more particular mechanism invoked by it)
16:16:00 <kuribas> blip: like MyRecord <$> field1 <*> field2 <*> field3
16:16:07 <kuribas> but with field names instead of positions
16:16:18 × xff0x quits (~fox@217.110.198.158) (Ping timeout: 256 seconds)
16:16:43 <blip> kuribas: well, what about record updates?
16:16:53 <kuribas> perhaps applicative do: do a <- field1; b <- field2; c <- field3; MyRecord {..}
16:17:15 <kuribas> blip: record updates aren't a problem
16:17:37 <kuribas> blip: my question isn't about record updates.
16:17:50 <kuribas> it's about doing an applicative on a record.
16:18:01 conal joins (~conal@64.71.133.70)
16:18:25 <blip> well, what you propose would work (adding a pure to the last line)
16:18:30 <kuribas> yeah
16:18:34 <ski> jil : in any case, the normal way to specify the types of function arguments is to provide a type signature for the whole function (normally before the function definition), like `add :: Int -> Int -> Int -> Int' (also specifying the result type)
16:18:48 <jil> also when I :load a script with `add (x :: Int) (y :: Int) (z :: Int) = x + y + z :: Int` directly from ghci I get an error. https://paste.debian.net/1166990/ illegal type signature 'Int'
16:19:38 <geekosaur> because it's trying to do a pattern signature which is an extension (it should have said something about ScopedTypeVariables)
16:19:39 <jil> why is that ?
16:19:46 <blip> kuribas: but also quite dangerous, you can easily construct an incomplete record
16:19:47 <ski> jil : yes. as i mentioned (in brief) above, using that style (having `:: Int' in the formal parameters / patterns) is a language extension. try placing the following line as the first line in your script :
16:19:48 <jil> yes it does.
16:19:56 <ski> {-# LANGUAGE ScopedTypeVariables #-}
16:19:59 <geekosaur> ski just told you the correct way to specify a function signature
16:20:10 <jil> ok.
16:20:13 <kuribas> blip: wouldn't that generate a warning?
16:20:36 <ski> (if you want to play around with this style of ascribing types also to patterns, not just to expressions, that is)
16:20:40 <blip> kuribas: I think yes with -Wall
16:21:20 <kuribas> blip: I can turn a warning in an error, can't I?
16:21:20 × nados quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
16:21:34 <blip> kuribas: yes, -Werr
16:21:47 nados joins (~dan@107-190-41-58.cpe.teksavvy.com)
16:22:15 <kuribas> ah -Werror=⟨wflag⟩
16:22:27 <blip> yep
16:22:30 <jil> ski geekosaur ok. I had not understood what you meant by `a language extension`. It's clear know and my script works.
16:22:53 <kuribas> strange haskell is so loose with undefined fields
16:23:00 × Sgeo quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
16:23:02 <kuribas> IMO it should be an error
16:23:24 fendor_ joins (~fendor@t204-126.demo.tuwien.ac.at)
16:23:24 <ski> ditto for missing methods ?
16:23:29 <blip> there is a lot of undefined
16:23:35 <blip> what about head?
16:23:39 <kuribas> ski: that's an error right?
16:23:41 nyd joins (~lpy@unaffiliated/elysian)
16:23:46 <dolio> No.
16:23:52 <ski> @let data Foo = MkFoo; instance Num Foo
16:23:54 <lambdabot> .L.hs:160:10: error: [-Wmissing-methods, -Werror=missing-methods]
16:23:54 <lambdabot> • No explicit implementation for
16:23:54 <lambdabot> ‘+’, ‘*’, ‘abs’, ‘signum’, ‘fromInteger’, and (either ‘negate’
16:24:06 <blip> :)
16:24:07 <monochrom> missing methods and undefined values are dynamic errors, not static errors.
16:24:16 <ski> lambdabot doesn't like it, since it has `-Werror=missing-methods'
16:24:17 <kuribas> ah you mean missing instance methods...
16:24:29 <kuribas> indeed, that should be an error IMO
16:24:50 <blip> > head []
16:24:52 <lambdabot> *Exception: Prelude.head: empty list
16:25:48 Reiser2 joins (~0a2a0001@static.210.242.216.95.clients.your-server.de)
16:25:52 <blip> we need `-Werror=undefined`
16:25:57 <ski> jil : you understand how to "line up" the arguments in `add x y z = x + y + z' with the types in `add :: Int -> Int -> Int -> Int' (or even `add :: Num a => a -> a -> a -> a'), yes ?
16:26:01 × dustinm- quits (~dustinm@static.38.6.217.95.clients.your-server.de) (Ping timeout: 264 seconds)
16:26:23 × fendor quits (~fendor@e237-037.eduroam.tuwien.ac.at) (Ping timeout: 258 seconds)
16:26:43 <kuribas> I find partial functions are always a mistake, because you don't get a good error message.
16:26:49 × Reiser quits (~0a2a0001@unaffiliated/reisen) (Ping timeout: 246 seconds)
16:26:55 lowryder joins (~djlowry@web603.webfaction.com)
16:26:59 <blip> like (/)
16:27:25 × chrpape quits (~user@2a01:4f9:c010:632d::1) (Ping timeout: 240 seconds)
16:27:28 <blip> :: Rational
16:27:53 noteness_ joins (noteness@unaffiliated/nessessary129)
16:27:59 jhuizy3 joins (~jhuizy@static.241.188.216.95.clients.your-server.de)
16:28:02 × fl0_id quits (~fl0_id@2a01:4f8:171:4de::40:2) (Quit: ZNC)
16:28:02 <kuribas> yeah
16:28:03 × Unhammer quits (~Unhammer@gateway/tor-sasl/unhammer) (Ping timeout: 240 seconds)
16:28:07 × M2tias quits (m2@seri.fi) (Ping timeout: 240 seconds)
16:28:19 uwap_ joins (~uwap@genja.uwap.name)
16:28:33 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
16:28:34 fl0_id joins (~fl0_id@claudia.s7t.de)
16:29:06 <monochrom> Perhaps you can accept a compromise? Partial functions/values with the HasCallStack constraint are not static errors; without, are static errors.
16:29:12 × uwap quits (~uwap@genja.uwap.name) (Read error: Connection reset by peer)
16:29:21 M2tias joins (m2@seri.fi)
16:29:47 × jhuizy quits (~jhuizy@static.241.188.216.95.clients.your-server.de) (Ping timeout: 260 seconds)
16:29:47 jhuizy3 is now known as jhuizy
16:29:55 Lycurgus joins (~niemand@98.4.96.235)
16:30:06 <blip> I have to go, the abyss of promoted constructors is calling my name
16:30:29 <dolio> I write good errors in my partial functions. :)
16:30:35 × noteness quits (~noteness@unaffiliated/nessessary129) (Ping timeout: 244 seconds)
16:30:57 dustinm joins (~dustinm@static.38.6.217.95.clients.your-server.de)
16:32:00 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
16:32:05 Unhammer joins (~Unhammer@gateway/tor-sasl/unhammer)
16:34:20 howdoi joins (uid224@gateway/web/irccloud.com/x-llljiaghhgnypdze)
16:35:09 × blip quits (58823d9e@gateway/web/cgi-irc/kiwiirc.com/ip.88.130.61.158) (Quit: Connection closed)
16:35:27 hackage prolens 0.0.0.0 - Profunctor-based lightweight implementation of optics https://hackage.haskell.org/package/prolens-0.0.0.0 (shersh)
16:40:43 Sgeo joins (~Sgeo@ool-18b982ad.dyn.optonline.net)
16:41:22 × uwap_ quits (~uwap@genja.uwap.name) (Remote host closed the connection)
16:41:34 uwap joins (~uwap@genja.uwap.name)
16:42:05 × pgib quits (~textual@lmms/pgib) (Ping timeout: 240 seconds)
16:43:51 <maerwald> A language with no partial functions seems like a pain in the *ss. You don't really care about partial functions, you care about your program being total.
16:45:28 ski . o O ( preconditions & postconditions )
16:46:14 <monochrom> inb4 Sapir-Whorf
16:46:16 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 256 seconds)
16:47:09 × nineonin_ quits (~nineonine@216-19-190-182.dyn.novuscom.net) (Remote host closed the connection)
16:49:56 × jollygood2 quits (~bc8165ab@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
16:51:17 tzh joins (~tzh@2601:448:c500:5300::d90)
16:53:58 × fendor_ quits (~fendor@t204-126.demo.tuwien.ac.at) (Remote host closed the connection)
16:54:45 × taurux quits (~taurux@net-109-115-33-170.cust.vodafonedsl.it) (Ping timeout: 240 seconds)
16:55:18 taurux joins (~taurux@net-109-115-33-211.cust.vodafonedsl.it)
16:56:34 <Cheery> bucklescript translates the partial functions away.
16:57:48 <Cheery> I'm curious about that because it means that on partial parameters they're constructing a closure that fills in the partial.
16:58:53 <Cheery> also if you have function like a → b, if the 'b' turns out to be a function, then the parameters cannot be fused anyway.
16:59:42 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:59:54 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 272 seconds)
17:00:45 <Cheery> nobody cares as long as they're not exposed in a library interface. That'd be interesting subject on its own.
17:00:58 × Bakun quits (~bakun@51.15.0.88) (Ping timeout: 260 seconds)
17:01:00 bahamas joins (~lucian@unaffiliated/bahamas)
17:01:26 nineonine joins (~nineonine@216.81.48.202)
17:01:51 × nineonine quits (~nineonine@216.81.48.202) (Remote host closed the connection)
17:02:03 nineonine joins (~nineonine@216.81.48.202)
17:02:54 Bakun joins (~bakun@51.15.0.88)
17:05:52 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 258 seconds)
17:05:54 × guest35 quits (d537f42e@213.55.244.46) (Remote host closed the connection)
17:08:56 <monochrom> That sounds like you mistook partial function for partial application.
17:09:29 <Cheery> you're right.
17:12:08 <Cheery> But then got opinion on that as well. I think I like the approach where you tag the partial functions.
17:12:31 mdunnio joins (~mdunnio@208.59.170.5)
17:14:33 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
17:14:46 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
17:14:46 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
17:14:46 GyroW joins (~GyroW@unaffiliated/gyrow)
17:15:05 × mdunnio_ quits (~mdunnio@208.59.170.5) (Ping timeout: 240 seconds)
17:15:38 Gerula joins (~Gerula@unaffiliated/gerula)
17:16:04 <Cheery> I might also do that for recursive functions.
17:16:32 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
17:16:52 xff0x joins (~fox@2001:1a81:52e4:2a00:a0c7:cc77:f7d4:2372)
17:18:11 GyroW_ joins (~GyroW@d54C03E98.access.telenet.be)
17:18:11 × GyroW_ quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
17:18:11 GyroW_ joins (~GyroW@unaffiliated/gyrow)
17:19:25 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 240 seconds)
17:20:38 × DavidEichmann quits (~david@43.240.198.146.dyn.plus.net) (Ping timeout: 265 seconds)
17:21:31 mdunnio_ joins (~mdunnio@208.59.170.5)
17:22:24 <Cheery> fix :: Fix a => (a → a) → a
17:22:32 × xff0x quits (~fox@2001:1a81:52e4:2a00:a0c7:cc77:f7d4:2372) (Ping timeout: 260 seconds)
17:22:48 × raichoo quits (~raichoo@213.240.178.58) (Quit: Lost terminal)
17:23:49 ensyde joins (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253)
17:24:24 xff0x joins (~fox@2001:1a81:52e4:2a00:a0c7:cc77:f7d4:2372)
17:24:45 × mdunnio quits (~mdunnio@208.59.170.5) (Ping timeout: 240 seconds)
17:24:47 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
17:25:51 × p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
17:26:07 conal joins (~conal@64.71.133.70)
17:26:20 xerox_ joins (~xerox@unaffiliated/xerox)
17:27:21 dopplergange joins (~dop@titan.pathogen.is)
17:27:53 × wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
17:28:22 × ensyde quits (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253) (Ping timeout: 260 seconds)
17:29:07 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
17:29:17 × oisdk quits (~oisdk@2001:bb6:3329:d100:a9e4:32d1:231e:16a5) (Quit: oisdk)
17:32:21 chenshen joins (~chenshen@2620:10d:c090:400::5:1dbd)
17:32:35 amx joins (amx@percival.namespace.at)
17:34:16 sand_dull joins (~theuser@104.140.53.43)
17:34:52 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye)
17:35:27 hackage matterhorn 50200.10.3 - Terminal client for the Mattermost chat system https://hackage.haskell.org/package/matterhorn-50200.10.3 (JonathanDaugherty)
17:35:47 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
17:38:07 × pera quits (~pera@unaffiliated/pera) (Quit: leaving)
17:38:48 isovector1 joins (~isovector@172.103.216.166.cable.tpia.cipherkey.com)
17:44:00 winircuser-559 joins (~winircuse@208.65.191.38)
17:44:30 leungbk joins (~user@2605:e000:1315:706:cc8c:f2b3:1a5a:360)
17:46:10 × kupi quits (uid212005@gateway/web/irccloud.com/x-zkqelsktmjuyhxgl) (Quit: Connection closed for inactivity)
17:48:16 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
17:48:32 snakemas1 joins (~snakemast@213.100.206.23)
17:49:58 × John20 quits (~John@82.46.59.122) (Ping timeout: 260 seconds)
17:52:52 × chenshen quits (~chenshen@2620:10d:c090:400::5:1dbd) (Ping timeout: 260 seconds)
17:53:05 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 240 seconds)
17:53:44 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 272 seconds)
17:56:20 L29Ah joins (~L29Ah@unaffiliated/l29ah)
17:58:52 elliott_ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
17:59:14 ashbreeze joins (~mark@72-161-254-60.dyn.centurytel.net)
18:00:01 × supaplex1 quits (~supaplex1@185.163.110.116) ()
18:00:04 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
18:00:07 × dyeplexer quits (~lol@unaffiliated/terpin) (Remote host closed the connection)
18:00:15 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
18:00:25 × L29Ah quits (~L29Ah@unaffiliated/l29ah) (Ping timeout: 240 seconds)
18:00:25 × knupfer quits (~Thunderbi@200116b82c814300f1e41d34f9bff3a4.dip.versatel-1u1.de) (Remote host closed the connection)
18:00:34 knupfer joins (~Thunderbi@200116b82c81430000cc9ce4231ed805.dip.versatel-1u1.de)
18:00:52 × avdb quits (~avdb@ip-62-235-189-198.dsl.scarlet.be) (Quit: WeeChat 2.9)
18:01:31 Zetagon joins (~leo@c151-177-52-233.bredband.comhem.se)
18:01:42 × _ashbreeze_ quits (~mark@72-161-254-60.dyn.centurytel.net) (Ping timeout: 256 seconds)
18:02:09 × lowryder quits (~djlowry@web603.webfaction.com) (Remote host closed the connection)
18:02:27 hackage rescue 0.3.0 - More understandable exceptions https://hackage.haskell.org/package/rescue-0.3.0 (expede)
18:03:49 × geekosaur quits (82659a0e@host154-014.vpn.uakron.edu) (Ping timeout: 245 seconds)
18:04:24 L29Ah joins (~L29Ah@unaffiliated/l29ah)
18:05:08 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
18:08:37 × chaosmasttter quits (~chaosmast@p200300c4a711b0018861c787729f3b81.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
18:08:40 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 246 seconds)
18:08:52 mdickens joins (~mdickens@2600:1700:100:6510:a0bd:f978:b47f:a64d)
18:09:23 snakemas1 joins (~snakemast@213.100.206.23)
18:10:23 × elliott_ quits (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
18:11:47 × alp quits (~alp@2a01:e0a:58b:4920:c582:5c02:4169:5973) (Remote host closed the connection)
18:12:25 alp joins (~alp@2a01:e0a:58b:4920:5926:20e4:5d7e:7879)
18:13:27 × alp quits (~alp@2a01:e0a:58b:4920:5926:20e4:5d7e:7879) (Remote host closed the connection)
18:14:03 alp joins (~alp@2a01:e0a:58b:4920:ed0b:3d12:34d1:634d)
18:15:08 × alp quits (~alp@2a01:e0a:58b:4920:ed0b:3d12:34d1:634d) (Remote host closed the connection)
18:15:28 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
18:15:45 alp joins (~alp@2a01:e0a:58b:4920:8d39:25bb:b9fc:ab4b)
18:16:32 × sand_dull quits (~theuser@104.140.53.43) (Ping timeout: 272 seconds)
18:16:48 × alp quits (~alp@2a01:e0a:58b:4920:8d39:25bb:b9fc:ab4b) (Remote host closed the connection)
18:17:26 alp joins (~alp@2a01:e0a:58b:4920:b0eb:85d7:8e70:cf02)
18:17:35 pera joins (~pera@unaffiliated/pera)
18:17:36 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
18:18:07 Mouse34 joins (8137c814@LLPROXY.LL.MIT.EDU)
18:18:29 × alp quits (~alp@2a01:e0a:58b:4920:b0eb:85d7:8e70:cf02) (Remote host closed the connection)
18:19:04 alp joins (~alp@2a01:e0a:58b:4920:8c3b:f2ef:189e:7b1f)
18:19:51 _ashbreeze_ joins (~mark@72-161-254-60.dyn.centurytel.net)
18:20:10 Ahmuck joins (~Ahmuck@178.162.204.214)
18:20:43 × alp quits (~alp@2a01:e0a:58b:4920:8c3b:f2ef:189e:7b1f) (Remote host closed the connection)
18:21:07 × ashbreeze quits (~mark@72-161-254-60.dyn.centurytel.net) (Ping timeout: 256 seconds)
18:22:20 alp joins (~alp@2a01:e0a:58b:4920:6ddd:c2d0:4761:63bc)
18:23:00 romildo joins (~Romildo@ip-187-73-5-249.isp.valenet.com.br)
18:23:59 elliott_ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
18:24:02 <romildo> Is there an irc channel for haskell-mode/lsp-haskell with emacs?
18:24:04 × alp quits (~alp@2a01:e0a:58b:4920:6ddd:c2d0:4761:63bc) (Remote host closed the connection)
18:24:04 geekosaur joins (82659a0e@host154-014.vpn.uakron.edu)
18:24:39 alp joins (~alp@2a01:e0a:58b:4920:45ee:7400:a0c1:b755)
18:25:59 DavidEichmann joins (~david@43.240.198.146.dyn.plus.net)
18:26:13 × raehik quits (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
18:26:18 × alp quits (~alp@2a01:e0a:58b:4920:45ee:7400:a0c1:b755) (Remote host closed the connection)
18:26:34 × DavidEichmann quits (~david@43.240.198.146.dyn.plus.net) (Remote host closed the connection)
18:26:47 × Zetagon quits (~leo@c151-177-52-233.bredband.comhem.se) (Ping timeout: 256 seconds)
18:26:56 alp joins (~alp@2a01:e0a:58b:4920:2979:fa8:1325:3fdc)
18:27:34 DavidEichmann joins (~david@43.240.198.146.dyn.plus.net)
18:27:45 Zetagon joins (~leo@c151-177-52-233.bredband.comhem.se)
18:28:29 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Remote host closed the connection)
18:28:32 × alp quits (~alp@2a01:e0a:58b:4920:2979:fa8:1325:3fdc) (Remote host closed the connection)
18:28:48 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
18:29:13 alp joins (~alp@2a01:e0a:58b:4920:b89e:6fed:34a9:922c)
18:29:49 wroathe joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
18:30:01 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
18:30:07 chaosmasttter joins (~chaosmast@p200300c4a711b0018861c787729f3b81.dip0.t-ipconnect.de)
18:30:46 × alp quits (~alp@2a01:e0a:58b:4920:b89e:6fed:34a9:922c) (Remote host closed the connection)
18:31:04 alp joins (~alp@2a01:e0a:58b:4920:e5d4:e452:52c9:d16a)
18:31:35 <ski> romildo : try here or maybe in #emacs ?
18:32:18 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
18:32:42 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
18:33:26 <romildo> Is there a key binding to insert in the text the inferred type of a variable in a equation?
18:34:16 × carlomagno quits (~cararell@inet-hqmc02-o.oracle.com) (Remote host closed the connection)
18:34:25 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
18:34:37 carlomagno joins (~cararell@inet-hqmc02-o.oracle.com)
18:36:30 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
18:36:33 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
18:36:33 GyroW joins (~GyroW@unaffiliated/gyrow)
18:36:41 × alp quits (~alp@2a01:e0a:58b:4920:e5d4:e452:52c9:d16a) (Ping timeout: 272 seconds)
18:37:26 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 272 seconds)
18:38:16 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:41:53 × jespada quits (~jespada@90.254.245.15) (Ping timeout: 260 seconds)
18:43:35 jespada joins (~jespada@90.254.245.15)
18:44:45 sand_dull joins (~theuser@104.140.53.43)
18:46:38 raehik joins (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net)
18:47:45 × clog quits (~nef@bespin.org) (Ping timeout: 240 seconds)
18:51:09 × sand_dull quits (~theuser@104.140.53.43) (Ping timeout: 256 seconds)
18:52:39 × TimWolla quits (~timwolla@2a01:4f8:150:6153:beef::6667) (Quit: Bye)
18:54:24 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 265 seconds)
18:56:12 × mdickens quits (~mdickens@2600:1700:100:6510:a0bd:f978:b47f:a64d) ()
18:56:39 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 258 seconds)
18:56:41 xerox_ joins (~xerox@unaffiliated/xerox)
18:59:15 <koz_> Am I right in that the kind of f here is Type -> Type? https://hackage.haskell.org/package/free-5.1.4/docs/Control-Monad-Free-Church.html#t:F
18:59:44 × Lycurgus quits (~niemand@98.4.96.235) (Quit: Exeunt)
19:00:00 <ghoulguy> koz_: no
19:00:02 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
19:00:08 <ghoulguy> Look at runF :: forall r. (a -> r) -> (f r -> r) -> r
19:00:19 <koz_> Ah, so k -> Type?
19:00:21 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
19:00:21 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
19:00:21 GyroW joins (~GyroW@unaffiliated/gyrow)
19:00:25 <ghoulguy> nuh uh
19:00:28 × winircuser-559 quits (~winircuse@208.65.191.38) (Read error: Connection reset by peer)
19:00:35 <ghoulguy> OOH,
19:00:40 <ghoulguy> sorry, let me reassess
19:00:41 <ski> `f' vs. `F' ?
19:00:44 <ghoulguy> I thought you asked the kind of F
19:00:53 <koz_> ski: I meant the type parameter 'f'.
19:00:58 <ski> yes, i assumed so
19:01:03 <ghoulguy> yeah, Type -> Type then
19:01:11 <koz_> OK, good to know.
19:01:13 <ghoulguy> f is applied to r, and r has to have kind Type
19:02:21 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
19:03:33 berberman_ joins (~berberman@unaffiliated/berberman)
19:03:59 lowryder joins (~djlowry@web603.webfaction.com)
19:04:02 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
19:05:13 × ggole quits (~ggole@2001:8003:8119:7200:dcc4:683f:59f7:9d48) (Quit: Leaving)
19:06:14 × supercoven quits (~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi) (Ping timeout: 258 seconds)
19:06:27 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
19:07:13 TimWolla joins (~timwolla@2a01:4f8:150:6153:beef::6667)
19:08:45 × wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
19:08:58 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
19:09:13 × lucid_0x80 quits (~lucid_0x8@188.253.234.40) (Ping timeout: 264 seconds)
19:09:20 × macrover quits (~macrover@ip70-189-231-35.lv.lv.cox.net) (Remote host closed the connection)
19:10:21 wroathe joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
19:12:20 × romildo quits (~Romildo@ip-187-73-5-249.isp.valenet.com.br) (Quit: Leaving)
19:13:32 conal joins (~conal@64.71.133.70)
19:14:40 × conal quits (~conal@64.71.133.70) (Client Quit)
19:15:07 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
19:16:03 oisdk joins (~oisdk@2001:bb6:3329:d100:a9e4:32d1:231e:16a5)
19:23:46 conal joins (~conal@64.71.133.70)
19:24:39 ensyde joins (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253)
19:24:45 acidjnk_new joins (~acidjnk@p200300d0c723782849be01692612d250.dip0.t-ipconnect.de)
19:26:34 snakemas1 joins (~snakemast@213.100.206.23)
19:27:36 × xerox_ quits (~xerox@unaffiliated/xerox) (Quit: leaving)
19:28:39 <Zetagon> Is there a difference between algebraic effects and extensible effects?
19:29:41 <dolio> Maybe.
19:29:42 × ensyde quits (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253) (Ping timeout: 260 seconds)
19:29:56 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
19:30:15 <monochrom> :)
19:30:25 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
19:30:58 × styledash quits (~styledash@157.230.173.136) (Quit: The Lounge - https://thelounge.chat)
19:31:34 styledash joins (~styledash@157.230.173.136)
19:32:30 <Zetagon> I guess they are similar enough that I can say they are basically the same
19:33:22 × Bakun quits (~bakun@51.15.0.88) (Ping timeout: 246 seconds)
19:33:32 <dminuoso> Zetagon: You'd have to say what the terms precisely refer to.
19:33:42 <dminuoso> Or, where you picked them up.
19:34:16 <dolio> Well, I would technically say they are two different things. "Algebraic" is about what things count as 'effects', and "extensible" is about tracking and combining individual effect specifications.
19:35:31 Bakun joins (~bakun@51.15.0.88)
19:35:38 xerox_ joins (~xerox@unaffiliated/xerox)
19:35:39 <dolio> However, any effect system that isn't "extensible" will probably be rejected immediately as not being practical.
19:36:20 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
19:36:46 <Zetagon> Things like polysemy and fused effects, or things like Microsoft Research's Koka
19:37:10 <Zetagon> I just stumbled upon these stuff and thought they sound very interesting but don't know what to call them
19:37:13 bahamas joins (~lucian@188.24.181.166)
19:37:13 × bahamas quits (~lucian@188.24.181.166) (Changing host)
19:37:13 bahamas joins (~lucian@unaffiliated/bahamas)
19:37:20 <dolio> Because you'd have to manually write the State effect and the State+Exception effect, and the Exception effect and mediate between them by hand.
19:37:43 conal joins (~conal@64.71.133.70)
19:41:59 untseac joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
19:42:30 <untseac> regarding yesterday questions, looks like mongodb yesod template is the one that is archaic. the default sqlite is okay.
19:42:50 <dolio> I guess I could be wrong about that, though, because people actually work that way in Haskell sometimes.
19:43:24 <dolio> Although not to quite that extreme a degree.
19:46:23 × Bakun quits (~bakun@51.15.0.88) (Read error: Connection reset by peer)
19:47:09 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
19:49:26 × dftxbs3e quits (~dftxbs3e@unaffiliated/dftxbs3e) (Remote host closed the connection)
19:49:40 dftxbs3e joins (~dftxbs3e@unaffiliated/dftxbs3e)
19:51:06 Bakun joins (~bakun@51.15.0.88)
19:51:53 × oxide quits (~lambda@unaffiliated/mclaren) (Ping timeout: 260 seconds)
19:52:39 × m0rphism quits (~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de) (Quit: WeeChat 2.7.1)
19:52:48 × nyd quits (~lpy@unaffiliated/elysian) (Ping timeout: 260 seconds)
19:53:24 oxide joins (~lambda@unaffiliated/mclaren)
19:58:22 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 256 seconds)
20:05:13 winircuser-559 joins (~winircuse@208.65.191.38)
20:05:18 × AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
20:06:47 × winircuser-559 quits (~winircuse@208.65.191.38) (Client Quit)
20:06:52 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 256 seconds)
20:08:15 aarvar joins (~foewfoiew@c.24.56.239.179.static.broadstripe.net)
20:09:36 × wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Quit: leaving)
20:18:08 aarvar parts (~foewfoiew@c.24.56.239.179.static.broadstripe.net) ()
20:18:13 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
20:18:23 GyroW joins (~GyroW@d54C03E98.access.telenet.be)
20:18:23 × GyroW quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
20:18:23 GyroW joins (~GyroW@unaffiliated/gyrow)
20:18:37 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
20:19:16 conal joins (~conal@64.71.133.70)
20:21:21 × conal quits (~conal@64.71.133.70) (Client Quit)
20:23:55 conal joins (~conal@64.71.133.70)
20:25:05 × elliott_ quits (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
20:27:14 × conal quits (~conal@64.71.133.70) (Client Quit)
20:27:23 rprije joins (~rprije@203.214.95.251)
20:29:32 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 272 seconds)
20:29:54 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
20:30:36 × Bakun quits (~bakun@51.15.0.88) (Read error: Connection reset by peer)
20:30:37 daenth joins (~daenth@136.36.157.210)
20:31:07 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
20:34:27 × knupfer quits (~Thunderbi@200116b82c81430000cc9ce4231ed805.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
20:35:37 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
20:36:50 conal joins (~conal@64.71.133.70)
20:37:29 × geekosaur quits (82659a0e@host154-014.vpn.uakron.edu) (Remote host closed the connection)
20:39:42 ashbreeze joins (~mark@72-161-254-60.dyn.centurytel.net)
20:41:58 × _ashbreeze_ quits (~mark@72-161-254-60.dyn.centurytel.net) (Ping timeout: 246 seconds)
20:42:02 × leungbk quits (~user@2605:e000:1315:706:cc8c:f2b3:1a5a:360) (Ping timeout: 260 seconds)
20:43:16 machinedgod joins (~machinedg@24.105.81.50)
20:43:25 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 264 seconds)
20:43:33 GyroW_ joins (~GyroW@d54C03E98.access.telenet.be)
20:43:33 × GyroW_ quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
20:43:33 GyroW_ joins (~GyroW@unaffiliated/gyrow)
20:44:29 aarvar joins (~foewfoiew@c.24.56.239.179.static.broadstripe.net)
20:45:08 × ashbreeze quits (~mark@72-161-254-60.dyn.centurytel.net) (Ping timeout: 258 seconds)
20:46:26 aarvar parts (~foewfoiew@c.24.56.239.179.static.broadstripe.net) ()
20:53:33 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
20:55:12 × lowryder quits (~djlowry@web603.webfaction.com) (Remote host closed the connection)
20:58:47 × kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection)
21:00:01 × Ahmuck quits (~Ahmuck@178.162.204.214) ()
21:00:17 ensyde joins (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253)
21:00:53 × DataComputist quits (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...)
21:02:42 × coot quits (~coot@37.30.50.102.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
21:02:58 hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
21:03:46 DataComputist joins (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
21:05:03 × hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
21:05:40 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
21:06:18 × hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
21:06:43 × ChaiTRex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Ping timeout: 240 seconds)
21:06:44 hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
21:07:39 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
21:09:33 conal joins (~conal@64.71.133.70)
21:10:02 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
21:11:31 ChaiTRex joins (~ChaiTRex@gateway/tor-sasl/chaitrex)
21:12:08 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
21:17:44 × ChaiTRex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Remote host closed the connection)
21:18:16 ChaiTRex joins (~ChaiTRex@gateway/tor-sasl/chaitrex)
21:19:02 GyroW joins (~GyroW@d54C03E98.access.telenet.be)
21:19:02 × GyroW quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
21:19:02 GyroW joins (~GyroW@unaffiliated/gyrow)
21:19:20 solonarv joins (~solonarv@anancy-651-1-202-101.w109-217.abo.wanadoo.fr)
21:19:34 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 272 seconds)
21:21:24 BusError1 joins (~BusError@185.163.110.116)
21:24:52 × chaosmasttter quits (~chaosmast@p200300c4a711b0018861c787729f3b81.dip0.t-ipconnect.de) (Quit: WeeChat 2.9)
21:26:42 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
21:30:36 × LKoen quits (~LKoen@81.255.219.130) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
21:30:37 <proofofme> Can you define types from operations done on other types? For example, there's `data Financial = Financial double -- units in '$'`, `data Rate = Rate double --units in '$/lb'`, and `data Weight = Weight double -- units in lbs`. Can you do something like `amount (a Financial type) = rate * weight`? I am getting some mismatched type errors from this.
21:33:13 <ski> the normal `*' only takes two things of the same type
21:38:04 snakemas1 joins (~snakemast@213.100.206.23)
21:38:25 hseg joins (~gesh@185.120.126.55)
21:38:50 <monochrom> If you bothered to use types to distinguish between money, weight, and money-per-weight, it stands to reason to also define your own Rate -> Weight -> Financial so you don't accidentally do "multiply money money-per-weight"
21:39:03 <hseg> is there a way to use @-patterns along with view patterns to bind intermediate values?
21:39:23 <hseg> i.e. would like sth like (map Just -> ls@(pad n -> pls))
21:39:49 m0rphism joins (~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de)
21:41:57 <ski> > let (negate -> x@((^ 2) -> y)) = 2 in (x,y)
21:42:00 <lambdabot> (-2,4)
21:42:17 <hseg> huh. it works
21:42:26 <hseg> happy surprise
21:42:56 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
21:43:22 × Gerula quits (~Gerula@unaffiliated/gerula) (Remote host closed the connection)
21:43:35 × xintron quits (~xintron@unaffiliated/xintron) (Quit: Ping timeout (120 seconds))
21:43:56 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:44:01 xintron joins (~xintron@unaffiliated/xintron)
21:44:37 × Zetagon quits (~leo@c151-177-52-233.bredband.comhem.se) (Remote host closed the connection)
21:45:23 <hseg> hrmph. unfortunately, i can't use where-bound variables in view patterns.
21:45:31 <hseg> meh. was a bit of golfing anyway
21:45:46 Sheilong joins (uid293653@gateway/web/irccloud.com/x-ufuazzkmfwuyelkh)
21:46:28 <hseg> (use case was c (map Just -> ls@(pad n -> pls)) (map Just -> ms@(pad n -> pms)) (map Just -> sort -> ns) = ... where n = length ns)
21:49:08 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
21:49:17 mdunnio joins (~mdunnio@208.59.170.5)
21:49:30 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:8576:1536:5132:aae7) (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:52:21 × eedgit2 quits (~chat.free@95.179.237.21) (Remote host closed the connection)
21:52:41 eedgit2 joins (~chat.free@95.179.237.21)
21:52:45 × mdunnio_ quits (~mdunnio@208.59.170.5) (Ping timeout: 240 seconds)
21:56:00 × mdunnio quits (~mdunnio@208.59.170.5) (Read error: Connection reset by peer)
21:56:37 mdunnio joins (~mdunnio@208.59.170.5)
21:57:13 mav1 joins (~mav@ipservice-092-217-043-250.092.217.pools.vodafone-ip.de)
21:58:20 × Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds)
21:58:44 × mav1 quits (~mav@ipservice-092-217-043-250.092.217.pools.vodafone-ip.de) (Client Quit)
22:01:24 × Mouse34 quits (8137c814@LLPROXY.LL.MIT.EDU) (Remote host closed the connection)
22:01:25 mav1 joins (~mav@ipservice-092-217-043-250.092.217.pools.vodafone-ip.de)
22:01:27 × hseg quits (~gesh@185.120.126.55) (Quit: WeeChat 2.9)
22:02:08 <proofofme> interesting ... playing around with some of these concepts shortly
22:02:25 × untseac quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 240 seconds)
22:03:13 × xsperry quits (~as@unaffiliated/xsperry) (Ping timeout: 264 seconds)
22:03:14 <int-e> hseg: you can have some fun with pattern guards whose patterns are plain variables: c (map Just -> ls) (map Just -> ms) (map Just -> sort -> ns) | n <- length ns, pls <- pad n ls, pms <- pad n ms = ...
22:03:26 × ensyde quits (~ensyde@2600:1702:2e30:1a40:f09c:a012:516e:b253) (Ping timeout: 246 seconds)
22:03:49 xsperry joins (~as@unaffiliated/xsperry)
22:05:32 Gerula joins (~Gerula@unaffiliated/gerula)
22:05:32 × jgt quits (~jgt@77-255-14-254.adsl.inetia.pl) (Read error: Connection reset by peer)
22:06:12 jgt joins (~jgt@77-255-14-254.adsl.inetia.pl)
22:07:36 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
22:08:04 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
22:08:13 clog joins (~nef@bespin.org)
22:10:59 kupi joins (uid212005@gateway/web/irccloud.com/x-fmxlaxhuszjyrjhy)
22:11:48 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
22:12:01 <kupi> hi. in ghci ":module + Data.Ratio" and "import Data.Ratio" are equivalent?
22:12:15 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
22:12:37 × taurux quits (~taurux@net-109-115-33-211.cust.vodafonedsl.it) (Ping timeout: 246 seconds)
22:13:02 <monochrom> Yes
22:13:48 taurux joins (~taurux@net-93-151-195-211.cust.vodafonedsl.it)
22:16:43 × __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving)
22:16:57 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
22:17:48 × nados quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
22:18:19 nados joins (~dan@107-190-41-58.cpe.teksavvy.com)
22:19:09 × ralejs_ quits (~ralejs@2620:10d:c093:400::5:c80) (Quit: Textual IRC Client: www.textualapp.com)
22:23:10 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:28:10 lucasb joins (uid333435@gateway/web/irccloud.com/x-rbuougcnirltldfu)
22:31:06 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
22:31:13 fryguybob joins (~fryguybob@cpe-74-65-31-113.rochester.res.rr.com)
22:33:58 hackage fourmolu 0.3.0.0 - A formatter for Haskell source code https://hackage.haskell.org/package/fourmolu-0.3.0.0 (GeorgeThomas)
22:34:50 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
22:36:37 × Ariakenom quits (~Ariakenom@h-155-4-221-50.NA.cust.bahnhof.se) (Quit: Leaving)
22:36:39 conal joins (~conal@64.71.133.70)
22:40:26 × mav1 quits (~mav@ipservice-092-217-043-250.092.217.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
22:42:25 × danvet_ quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
22:46:06 × DavidEichmann quits (~david@43.240.198.146.dyn.plus.net) (Ping timeout: 256 seconds)
22:46:20 _ashbreeze_ joins (~mark@72-161-51-235.dyn.centurytel.net)
22:46:29 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
22:48:31 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
22:49:16 × dhouthoo_ quits (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
22:53:39 × jespada quits (~jespada@90.254.245.15) (Ping timeout: 265 seconds)
22:54:24 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Quit: WeeChat 2.7.1)
22:56:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
22:57:05 jespada joins (~jespada@90.254.245.15)
23:00:55 × revprez_anzio quits (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) (Read error: Connection reset by peer)
23:01:19 × nineonine quits (~nineonine@216.81.48.202) (Read error: Connection reset by peer)
23:01:19 revprez_1nzio joins (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net)
23:01:37 nineonine joins (~nineonine@216.81.48.202)
23:02:05 × iteratee quits (~kyle@162.211.154.4) (Read error: Connection reset by peer)
23:02:11 iteratee joins (~kyle@162.211.154.4)
23:02:19 <kupi> in ghci how to undo ":set +t"?
23:02:47 <hpc> use :unset
23:02:55 <hpc> see also, :help
23:04:17 × fre quits (~freusque@104.238.190.229) (Ping timeout: 265 seconds)
23:04:46 × iomonad quits (~iomonad@unaffiliated/iomonad) (Ping timeout: 265 seconds)
23:05:15 fre joins (~freusque@104.238.190.229)
23:05:28 hackage formatting 7.1.0 - Combinator-based type-safe formatting (like printf() or FORMAT) https://hackage.haskell.org/package/formatting-7.1.0 (AlexChapman)
23:08:09 wildlander joins (~wildlande@unaffiliated/wildlander)
23:08:11 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
23:09:31 iomonad joins (~iomonad@unaffiliated/iomonad)
23:10:28 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
23:13:12 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
23:15:17 crestfallen joins (~jvw@135-180-15-188.fiber.dynamic.sonic.net)
23:16:33 × cgfbee quits (~bot@oc1.itim-cj.ro) (Ping timeout: 258 seconds)
23:18:50 <crestfallen> hi please assist me going through this unification exercise. It's from SO and someone here helped me earlier though I still don't understand a few things, for starters: how g is both g :: c -> b -> a and g :: d -> c
23:18:56 <crestfallen> https://github.com/varreli/haskell/blob/master/handEval/unify_f_g_h.txt
23:20:12 <hpc> type variables can unify with other type variables
23:20:19 <hpc> they're placeholders with names
23:20:35 × natechan quits (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
23:20:35 <hpc> imagine (+) :: Num a => a -> a, and (+) :: Num b => b -> b
23:20:49 × justache quits (~justache@unaffiliated/justache) (Quit: Ping timeout (120 seconds))
23:20:52 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
23:20:52 <Axman6> unary plus++
23:21:02 × mdunnio quits (~mdunnio@208.59.170.5) (Read error: Connection reset by peer)
23:21:04 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
23:21:08 natechan joins (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
23:21:13 <hpc> whoops, you know what i mean
23:21:25 <hpc> anyhoo
23:21:35 mdunnio joins (~mdunnio@208.59.170.5)
23:21:50 <hpc> when you look at g :: c -> b -> a, it's actually g :: c -> (b -> a)
23:21:55 × __skn- quits (~sunil@sec.nimmagadda.net) (Quit: ZNC 1.8.2 - https://znc.in)
23:21:57 × incertia quits (~incertia@d60-65-215-180.col.wideopenwest.com) (Quit: ZNC 1.7.5 - https://znc.in)
23:21:58 × quinn quits (~quinn@c-73-223-224-163.hsd1.ca.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
23:21:59 × mrus quits (~mrus@128.199.6.232) (Quit: Surfing the great wave off Kanagawa)
23:22:06 justache joins (~justache@unaffiliated/justache)
23:22:10 <hpc> and if you put that side by side with g :: d -> c
23:22:11 __skn joins (~sunil@sec.nimmagadda.net)
23:22:17 quinn joins (~quinn@c-73-223-224-163.hsd1.ca.comcast.net)
23:22:17 mrus joins (~mrus@128.199.6.232)
23:22:19 incertia joins (~incertia@d60-65-215-180.col.wideopenwest.com)
23:22:31 <hpc> then you have the left (->) lining up with the only (->)
23:22:39 × urdh quits (~urdh@unaffiliated/urdh) (Ping timeout: 265 seconds)
23:22:40 <hpc> and c = d, and c = (b -> a)
23:23:11 <hpc> or well, upper c = lower d, upper (b -> a) = lower c
23:23:14 <crestfallen> hpc thanks one moment
23:23:38 × perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 260 seconds)
23:23:38 × nyaomi quits (~naomi@cpe-74-75-6-125.maine.res.rr.com) (Ping timeout: 260 seconds)
23:23:38 × gareth__ quits (~gareth__@104.236.161.134) (Ping timeout: 260 seconds)
23:23:51 × nineonine quits (~nineonine@216.81.48.202) (Remote host closed the connection)
23:24:13 × CindyLinz quits (~cindy_utf@112.121.78.20) (Ping timeout: 260 seconds)
23:24:13 × mnrmnaugh quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 260 seconds)
23:24:13 × jameekim1 quits (~jameekim@mx.nodaplife.me) (Ping timeout: 260 seconds)
23:24:41 × AWizzArd quits (~code@unaffiliated/awizzard) (Ping timeout: 260 seconds)
23:24:44 urdh joins (~urdh@unaffiliated/urdh)
23:24:46 CindyLinz joins (~cindy_utf@112.121.78.20)
23:24:48 <crestfallen> hpc what is the logic behind assigning the whole expression to a on line 3
23:24:56 jameekim1 joins (~jameekim@mx.nodaplife.me)
23:25:23 × tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Ping timeout: 240 seconds)
23:25:23 × ystael quits (~ystael@209.6.50.55) (Ping timeout: 260 seconds)
23:25:25 × jgt quits (~jgt@77-255-14-254.adsl.inetia.pl) (Ping timeout: 246 seconds)
23:25:28 cgfbee joins (~bot@oc1.itim-cj.ro)
23:25:29 <Axman6> you just need a name for the result of the whole expression, and that type will be the ultimate return type of f
23:25:45 × esg quits (~emil@esg.xen.prgmr.com) (Ping timeout: 258 seconds)
23:25:53 <hpc> ^ that
23:26:04 <hpc> the expression has a type, you just haven't figured out what it is yet
23:26:04 <Axman6> f :: ? -> ?? -> ??? -> ???? -> a
23:26:07 <hpc> but you can give it a name
23:26:13 tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64)
23:26:17 <hpc> and that name is a, because why not
23:26:30 esg joins (~emil@esg.xen.prgmr.com)
23:27:27 <hpc> as you dig deeper into the expression you build constraints on what a can actually be
23:27:31 <hpc> and then you unify those constraints
23:27:54 <hpc> it's essentially solving a system of equations
23:28:21 <crestfallen> yeah thanks ok so the g on line 11 is the g in (g x) getting expanded, right?
23:28:35 snakemas1 joins (~snakemast@213.100.206.23)
23:28:47 gareth__ joins (~gareth__@104.236.161.134)
23:29:25 nyaomi joins (~naomi@cpe-74-75-6-125.maine.res.rr.com)
23:29:30 <crestfallen> then the g on line 14 is the leftmost g in the expression
23:29:37 × mdunnio quits (~mdunnio@208.59.170.5) (Read error: Connection reset by peer)
23:30:12 mdunnio joins (~mdunnio@208.59.170.5)
23:30:17 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:30:54 ystael joins (~ystael@209.6.50.55)
23:31:08 <hpc> something like that, that part's weirdly written
23:31:17 <hpc> but yeah, you're building constraints from two different applciations of g
23:31:18 × pera quits (~pera@unaffiliated/pera) (Ping timeout: 272 seconds)
23:31:51 <crestfallen> hpc which part? pls explain why it's weird and better alternative
23:33:08 perrier-jouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
23:33:08 mnrmnaugh joins (~mnrmnaugh@unaffiliated/mnrmnaugh)
23:33:13 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 264 seconds)
23:33:15 AWizzArd joins (~code@gehrels.uberspace.de)
23:33:22 <crestfallen> There's this algorithm W in ghci, I'd like to understand this aspect of haskell
23:35:01 <hpc> just that i can't tell which g is which, but to be fair, i am not reading this paste very carefully, most of explaining this is kind of autopilot for me at this point :P
23:35:53 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
23:39:37 <crestfallen> hpc it came from this SO : https://stackoverflow.com/questions/50777884/manual-type-inference-in-haskell/50778324
23:40:03 <crestfallen> it goes on to assign y :: e
23:40:32 × raehik quits (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
23:41:40 <crestfallen> I see e in these unifying exercises: does that mean partial application like (-> e) or something?
23:46:02 elliott_ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
23:46:54 macrover joins (~macrover@ip70-189-231-35.lv.lv.cox.net)
23:48:11 × oisdk quits (~oisdk@2001:bb6:3329:d100:a9e4:32d1:231e:16a5) (Quit: oisdk)
23:53:00 × macrover quits (~macrover@ip70-189-231-35.lv.lv.cox.net) (Remote host closed the connection)
23:54:32 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
23:54:33 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
23:55:02 conal joins (~conal@64.71.133.70)
23:55:28 × dcoutts_ quits (~duncan@33.14.75.194.dyn.plus.net) (Ping timeout: 260 seconds)
23:55:42 × mdunnio quits (~mdunnio@208.59.170.5) (Remote host closed the connection)
23:57:46 <proofofme> do y'all know any good Haskell bindings for MapBox?
23:59:07 mirrorbird joins (~psutcliff@2a00:801:42b:7891:16b1:e53f:55b2:15e1)
23:59:08 × ystael quits (~ystael@209.6.50.55) (Read error: Connection reset by peer)
23:59:35 pera joins (~pera@unaffiliated/pera)

All times are in UTC on 2020-10-13.