Home freenode/#haskell: Logs Calendar

Logs on 2021-02-24 (freenode/#haskell)

00:00:03 × shs3g32f quits (~g433@89.238.176.169) (Quit: freenode gave me aids)
00:01:20 Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net)
00:02:09 × ski quits (~ski@ed-3358-10.studat.chalmers.se) (Killed (Sigyn (Spam is off topic on freenode.)))
00:02:17 × usr25 quits (~usr25@unaffiliated/usr25) (Quit: Leaving)
00:04:56 × totte_ quits (~totte@chakra/totte) (Ping timeout: 240 seconds)
00:06:19 robwebbjr joins (6bb893db@cpe-107-184-147-219.socal.res.rr.com)
00:07:09 × oisdk quits (~oisdk@2001:bb6:3329:d100:542a:c580:da44:2b5b) (Quit: oisdk)
00:07:12 notzmv joins (~user@unaffiliated/zmv)
00:09:09 × notzmv quits (~user@unaffiliated/zmv) (Remote host closed the connection)
00:09:09 × robwebbjr quits (6bb893db@cpe-107-184-147-219.socal.res.rr.com) (Killed (Sigyn (Spam is off topic on freenode.)))
00:09:32 <glguy> fixed^
00:09:33 robwebbjr joins (6bb893db@cpe-107-184-147-219.socal.res.rr.com)
00:09:57 notzmv joins (~user@unaffiliated/zmv)
00:11:27 oisdk joins (~oisdk@2001:bb6:3329:d100:542a:c580:da44:2b5b)
00:11:28 bergey` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net)
00:12:42 ski joins (~ski@ed-3358-10.studat.chalmers.se)
00:12:54 × notzmv quits (~user@unaffiliated/zmv) (Remote host closed the connection)
00:15:43 totte joins (~totte@chakra/totte)
00:16:09 × bergey` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 264 seconds)
00:19:04 × robwebbjr quits (6bb893db@cpe-107-184-147-219.socal.res.rr.com) (Quit: Connection closed)
00:24:22 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:c8ae:9550:f699:380:13be)
00:26:35 × mnrmnaugh quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Remote host closed the connection)
00:26:48 × ddellacosta quits (~ddellacos@86.106.143.189) (Remote host closed the connection)
00:27:16 × m0rphism1 quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 240 seconds)
00:28:27 mnrmnaugh joins (~mnrmnaugh@unaffiliated/mnrmnaugh)
00:30:15 × seanparsons quits (~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net) (Ping timeout: 246 seconds)
00:30:32 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
00:30:36 × Tesseraction quits (~Tesseract@unaffiliated/tesseraction) (Ping timeout: 246 seconds)
00:30:44 × Katarushisu quits (~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net) (Ping timeout: 256 seconds)
00:30:50 × Foritus quits (~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net) (Ping timeout: 272 seconds)
00:32:31 Tesseraction joins (~Tesseract@unaffiliated/tesseraction)
00:32:45 Foritus joins (~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net)
00:33:34 × awk quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 265 seconds)
00:34:40 Katarushisu joins (~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net)
00:36:05 seanparsons joins (~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net)
00:36:20 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
00:37:50 × borne quits (~fritjof@2a06:8782:ffbb:1337:2133:4ed6:e22f:c3eb) (Ping timeout: 264 seconds)
00:38:48 × oisdk quits (~oisdk@2001:bb6:3329:d100:542a:c580:da44:2b5b) (Quit: oisdk)
00:39:55 d34df00d parts (~d34df00d@104-14-27-213.lightspeed.austtx.sbcglobal.net) ()
00:40:45 × infinisil quits (~infinisil@NixOS/user/infinisil) (Quit: Configuring ZNC, sorry for the joins/quits!)
00:44:10 × average quits (uid473595@gateway/web/irccloud.com/x-kzhkwxghknoixhmk) (Quit: Connection closed for inactivity)
00:47:03 × noecho quits (~noecho@2a01:4f8:1c0c:80ee::4223) (Quit: ZNC - http://znc.in)
00:47:34 noecho joins (~noecho@2a01:4f8:1c0c:80ee::4223)
00:47:50 × loli quits (~loli@024-171-017-003.res.spectrum.com) (Quit: WeeChat 3.0)
00:49:04 × fengh quits (~haskeller@ip72-205-40-121.dc.dc.cox.net) (Quit: WeeChat 3.0.1)
00:49:27 fengh joins (~haskeller@ip72-205-40-121.dc.dc.cox.net)
00:49:28 × frozenErebus quits (~frozenEre@94.128.219.166) (Quit: leaving)
00:49:45 × monochrom quits (trebla@216.138.220.146) (Ping timeout: 240 seconds)
00:49:58 loli joins (~loli@024-171-017-003.res.spectrum.com)
00:50:36 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
00:50:45 × sim590 quits (~sim590@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 240 seconds)
00:50:58 sim590 joins (~sim590@modemcable090.207-203-24.mc.videotron.ca)
00:51:58 monochrom joins (trebla@216.138.220.146)
00:52:00 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
00:52:18 × danso quits (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 260 seconds)
00:52:56 × verement quits (~anonymous@cpe-76-167-229-223.san.res.rr.com) (Quit: verement)
00:53:18 danso joins (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009)
00:57:43 × noecho quits (~noecho@2a01:4f8:1c0c:80ee::4223) (Quit: ZNC - http://znc.in)
00:58:10 noecho joins (~noecho@2a01:4f8:1c0c:80ee::4223)
00:58:37 seneca joins (~epictetus@ip72-194-215-136.sb.sd.cox.net)
00:58:44 justan0theruser joins (~justanoth@unaffiliated/justanotheruser)
00:58:56 × Bigcheese quits (~quassel@unaffiliated/bigcheese) (Quit: No Ping reply in 180 seconds.)
00:59:11 × DavidEichmann quits (~david@234.109.45.217.dyn.plus.net) (Ping timeout: 265 seconds)
00:59:39 afidegnum joins (~afidegnum@102.176.65.172)
01:00:04 × heatsink quits (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5) (Remote host closed the connection)
01:00:14 Bigcheese joins (~quassel@unaffiliated/bigcheese)
01:01:51 × epicte7us quits (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 256 seconds)
01:02:48 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
01:03:06 <afidegnum> hi, anyone online ?
01:03:21 ghais joins (4c616ae2@gateway/web/cgi-irc/kiwiirc.com/ip.76.97.106.226)
01:03:32 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:04:47 <ephemient> afidegnum: https://dontasktoask.com/
01:05:36 <afidegnum> what's the difference between <= and <_ ? from the book: http://learnyouahaskell.com/starting-out i have come accross list comprehensions: [x*2 | x <- [1..10]] which got me confused
01:06:24 <monochrom> Do you mean <= and <- ?
01:06:25 × wz1000 quits (~wz1000@static.11.113.47.78.clients.your-server.de) (Ping timeout: 240 seconds)
01:06:29 <afidegnum> yes
01:06:52 <monochrom> Totally unrelated. <= is your usual 1<=2, 2<=2.
01:07:01 <monochrom> (less than or equal to)
01:07:14 <afidegnum> yes
01:07:46 <monochrom> <- is a punctuation for writing list comprehension to mean: x<-[1..10] causes x to take on 1, 2, ..., 10 in turns.
01:07:48 × jchia quits (~jchia@218.80.77.165) (Quit: Leaving.)
01:08:57 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 264 seconds)
01:09:16 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
01:09:36 <afidegnum> i could say in that case, x derives from a list, right ?
01:09:46 × xcmw quits (~textual@dyn-72-33-2-152.uwnet.wisc.edu) (Quit: Textual IRC Client: www.textualapp.com)
01:11:07 × Rudd0 quits (~Rudd0@185.189.115.108) (Read error: Connection reset by peer)
01:11:51 <ephemient> "derive" doesn't make sense to me. for each x chosen from a list, would be one way to state it
01:12:34 × jedws quits (~jedws@101.184.202.248) (Quit: Textual IRC Client: www.textualapp.com)
01:12:56 <monochrom> I would think Python syntax provides the best English wording, if you're looking for English wording.
01:13:09 <monochrom> x*2 for (each) x in 1 to 10.
01:13:35 <afidegnum> monochrom: yes, that's clearer :)
01:13:41 <monochrom> I think "derive" is avoiding the point. As are most wordings.
01:14:09 <monochrom> In fact, I think all wordings are.
01:14:17 nbloomf joins (~nbloomf@2600:1700:ad14:3020:18de:2172:b410:a7a6)
01:14:19 <ski> `[x*2 | x <- [1..10]]' : collect the list of all `x*2's, for all possible ways to draw `x' from the list `[1..10]'
01:15:03 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
01:15:28 <monochrom> Instead, the template [f x | x<-[a,b,c]] = [f a, f b, f c] is precise, clear, and get things done.
01:15:36 <afidegnum> [x*2 | x <- [1..10] can i also say, collect x*2 where x is part of a list [1..10] ?
01:16:12 <ski> > [f x | x <- [a,b,c]] :: [Expr]
01:16:13 <lambdabot> [f a,f b,f c]
01:16:36 <afidegnum> isn't that mapping ?
01:16:40 <monochrom> Yes.
01:16:44 <ski> afidegnum : "part" is a bit ambiguous, i'd say. you could say "is an element of"
01:16:47 <monochrom> Programming is not an essay course.
01:16:58 <afidegnum> :)
01:17:04 heatsink joins (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5)
01:17:11 <ski> (is the list `[3,5]' a part of the list `[2,3,5,7]' ?)
01:17:12 <ephemient> (unless applescript :D)
01:17:27 <afidegnum> oh, noo!
01:17:53 <ski> the list of all `x*2's, for `x' in `[1..10]' -- abbreviated version
01:18:15 × noecho quits (~noecho@2a01:4f8:1c0c:80ee::4223) (Quit: ZNC - http://znc.in)
01:18:27 <afidegnum> ski: ok, that's clearer, matching python wordings
01:18:32 noecho joins (~noecho@2a01:4f8:1c0c:80ee::4223)
01:18:42 conal joins (~conal@64.71.133.70)
01:18:45 infinisil joins (~infinisil@NixOS/user/infinisil)
01:20:03 <monochrom> And BTW regarding watching other people write code on Twitch, I would also say "programming is not a spectator sport", except for one consideration during the pandemic. Since you need to learn from how other people do things, but you can't easily go to an in-person programming session for that during the pandemic, watching Twitch has to make do.
01:20:28 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
01:20:58 <afidegnum> twitch is turning things around :)
01:21:28 <monochrom> An in-person session is still preferred when it's safe, since the part about interacting with the expert, even the expert saying "try your hands on this easy part", is irreplaceable.
01:22:14 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
01:22:49 × WarzoneCommand quits (~Frank@77-162-168-71.fixed.kpn.net) (Ping timeout: 256 seconds)
01:23:01 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
01:23:30 <monochrom> BTW I'm bittersweet to announce that an unannounced proof I was trying to do has failed. I found a counterexample.
01:23:34 × Yumasi quits (~guillaume@2a01:e0a:5cb:4430:47c4:89ec:8e68:7431) (Ping timeout: 258 seconds)
01:24:05 × ghais quits (4c616ae2@gateway/web/cgi-irc/kiwiirc.com/ip.76.97.106.226) (Quit: Connection closed)
01:24:40 ghais joins (4c616ae2@gateway/web/cgi-irc/kiwiirc.com/ip.76.97.106.226)
01:24:43 × noecho quits (~noecho@2a01:4f8:1c0c:80ee::4223) (Quit: ZNC - https://znc.in)
01:24:58 <monochrom> It is bitter that I can't publish a paper for it now. There is no earth-shattring theorem to state and prove.
01:25:09 × stree quits (~stree@68.36.8.116) (Ping timeout: 264 seconds)
01:25:26 noecho joins (~noecho@static.143.42.203.116.clients.your-server.de)
01:25:35 <monochrom> The small sweet side is that I can turn it into an exam question. "Prof. M thinks the following is true. Find a counterexample." >:)
01:25:49 <ski> how common is it to publish papers with counterexamples ?
01:26:18 <monochrom> common for conjectures that everyone thought provable
01:26:19 cig_in_mouth joins (cig_in_mou@gateway/vpn/mullvad/ciginmouth/x-85815230)
01:26:21 <ski> (or do counter-examples mostly get published in say textbooks ?)
01:26:29 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
01:26:29 <monochrom> uncommon for "I told you so" cases.
01:27:04 <ski> hm .. reminds me of some page of a mathematician, collecting counter-examples to published theorems
01:27:09 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
01:27:13 <monochrom> hahaha
01:27:21 × cig_in_mouth quits (cig_in_mou@gateway/vpn/mullvad/ciginmouth/x-85815230) (Client Quit)
01:27:26 <ski> (peer-reviewed publishing, yes)
01:27:54 <monochrom> But the same metric is applied to both publishing theorems and publishing counterexamples. The community has a pretty consensual sense of what's important, what's meh.
01:28:35 × Wamanuz quits (~wamanuz@78-70-34-81-no84.tbcn.telia.com) (Quit: Konversation terminated!)
01:28:45 dolio sets mode -o dolio
01:28:47 <monochrom> A really surprising counterexample is publishable. Likewise, a really unimportant theorem/proof is unpublishable. The world is still fair.
01:28:48 ski nods
01:29:08 IsmokeWeed420 joins (cig_in_mou@gateway/vpn/mullvad/ciginmouth/x-85815230)
01:31:17 × bradparker quits (sid262931@gateway/web/irccloud.com/x-isrdawaltlzaweiw) ()
01:31:22 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
01:31:31 bradparker joins (sid262931@gateway/web/irccloud.com/x-tsajgnzxnbyjwxdp)
01:33:18 × tomkap1 quits (~tomkap@178.239.168.171) (Remote host closed the connection)
01:33:55 × l8star__ quits (~l8star@business-90-187-113-149.pool2.vodafone-ip.de) (Ping timeout: 258 seconds)
01:34:46 × jdt quits (~jdt@208.85.233.130) (Ping timeout: 256 seconds)
01:35:02 rajivr joins (uid269651@gateway/web/irccloud.com/x-lsothnqwqqfmpidy)
01:35:10 vicfred joins (~vicfred@unaffiliated/vicfred)
01:37:27 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
01:38:27 stree joins (~stree@68.36.8.116)
01:38:36 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Remote host closed the connection)
01:38:52 × noecho quits (~noecho@static.143.42.203.116.clients.your-server.de) (Quit: ZNC - https://znc.in)
01:39:26 noecho joins (~noecho@static.143.42.203.116.clients.your-server.de)
01:40:09 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
01:41:18 jdt joins (~jdt@208.85.233.130)
01:42:05 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
01:42:29 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
01:45:11 × noecho quits (~noecho@static.143.42.203.116.clients.your-server.de) (Quit: ZNC - https://znc.in)
01:45:46 noecho joins (~noecho@static.143.42.203.116.clients.your-server.de)
01:47:05 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
01:49:24 chaosagent joins (~chaosagen@217.146.82.202)
01:50:26 × Alleria_ quits (~AllahuAkb@2603-7000-3040-0000-e45d-b815-1770-2199.res6.spectrum.com) (Read error: Connection reset by peer)
01:50:52 Alleria_ joins (~AllahuAkb@2603-7000-3040-0000-18b0-cfa2-5ed5-49de.res6.spectrum.com)
01:51:00 <MarcelineVQ> good job today, you
01:54:51 × hongminhee quits (~dahlia@207.148.91.209) (Quit: leaving)
01:57:22 Tario joins (~Tario@201.192.165.173)
01:58:44 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
01:58:58 × elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Quit: Quit)
01:59:16 elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
02:03:09 ChanServ sets mode +o ski
02:03:25 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
02:05:05 × Feuermagier quits (~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6) (Quit: Leaving)
02:05:58 × carlomagno1 quits (~cararell@148.87.23.12) (Remote host closed the connection)
02:08:36 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Remote host closed the connection)
02:08:53 × xff0x quits (~xff0x@2001:1a81:521c:d500:7b2f:d778:c258:ec7a) (Ping timeout: 272 seconds)
02:08:53 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
02:09:04 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Remote host closed the connection)
02:10:15 xff0x joins (~xff0x@2001:1a81:525a:9700:4364:2209:6649:c89)
02:10:27 drbean_ joins (~drbean@TC210-63-209-199.static.apol.com.tw)
02:11:54 <swarmcollective> :withMS
02:11:57 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
02:11:58 <swarmcollective> :t withMS
02:12:00 <lambdabot> error:
02:12:00 <lambdabot> • Variable not in scope: withMS
02:12:00 <lambdabot> • Perhaps you meant ‘withRWS’ (imported from Control.Monad.RWS)
02:12:13 Tario joins (~Tario@201.192.165.173)
02:13:32 <ski> @hoogle withMS
02:13:33 <lambdabot> Control.Eff.Logic.Core withMSplit :: MonadPlus m => a -> m a -> m (Maybe (a, m a))
02:13:33 <lambdabot> Data.Singletons.Prelude.Monad data ZipWithMSym0 a6989586621681292348
02:13:33 <lambdabot> Data.Singletons.Prelude.Monad data ZipWithMSym1 a6989586621681292348 a6989586621681292349
02:14:30 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
02:15:47 × Jon quits (~jon@redmars.org) (Quit: ZNC - http://znc.in)
02:15:48 × my_name_is_not_j quits (mynameisno@gateway/shell/matrix.org/x-hpkeozywuimiwkcp) (Ping timeout: 246 seconds)
02:16:01 my_name_is_not_j joins (mynameisno@gateway/shell/matrix.org/x-sulamkpowiaizxta)
02:16:12 × e quits (e@freenode/staff/spy.edk) (Quit: edk)
02:16:51 × dexterlb quits (~dexterlb@2a01:9e40:2:2::2) (Ping timeout: 246 seconds)
02:16:54 × Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa)
02:17:03 Jon joins (jon@dow.land)
02:17:10 dexterlb joins (~dexterlb@2a01:9e40:2:2::2)
02:17:16 ddellacosta joins (~ddellacos@83.143.246.103)
02:17:21 × ghais quits (4c616ae2@gateway/web/cgi-irc/kiwiirc.com/ip.76.97.106.226) (Ping timeout: 264 seconds)
02:18:55 notzmv joins (~user@unaffiliated/zmv)
02:19:45 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
02:20:35 sleblanc joins (~sleblanc@unaffiliated/sebleblanc)
02:21:45 × ddellacosta quits (~ddellacos@83.143.246.103) (Ping timeout: 240 seconds)
02:23:52 jamm_ joins (~jamm@unaffiliated/jamm)
02:25:12 edk_ joins (e@freenode/staff/spy.edk)
02:25:18 <electricityZZZZ> does anybody have a freenode admin i can pm and complain to about some bots which are pm'ing me? i've never done something like that before
02:25:26 × drbean_ quits (~drbean@TC210-63-209-199.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in)
02:25:50 WarzoneCommand joins (~Frank@77-162-168-71.fixed.kpn.net)
02:26:10 <swarmcollective> electricityZZZZ: I believe they are aware, freenode broadcast a message about it.
02:26:46 × ubert quits (~Thunderbi@p200300ecdf25d925395e0cfc416b2878.dip0.t-ipconnect.de) (Remote host closed the connection)
02:26:53 × Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Quit: Quit)
02:27:09 ubert joins (~Thunderbi@p200300ecdf25d925757f6c6af73e13ea.dip0.t-ipconnect.de)
02:27:19 <electricityZZZZ> swarmcollective: okay thanks
02:27:46 × notzmv quits (~user@unaffiliated/zmv) (Quit: ERC (IRC client for Emacs 27.1))
02:28:23 <pavonia^\_^\> electricityZZZZ: You can set "/mode electricityZZZZ +R" in your client if you don't want to get messages from unidentified users
02:30:00 <ski> electricityZZZZ : you can join #freenode and report in there
02:32:36 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
02:32:45 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds)
02:37:06 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
02:37:45 × Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 264 seconds)
02:37:47 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 265 seconds)
02:37:51 Lord_of_Life_ joins (~Lord@unaffiliated/lord-of-life/x-0885362)
02:38:09 × zebrag quits (~inkbottle@aaubervilliers-654-1-4-36.w83-200.abo.wanadoo.fr) (Quit: Konversation terminated!)
02:38:29 zebrag joins (~inkbottle@aaubervilliers-654-1-4-36.w83-200.abo.wanadoo.fr)
02:38:56 × justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 240 seconds)
02:39:13 Lord_of_Life_ is now known as Lord_of_Life
02:41:49 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
02:45:23 ezrakilty joins (~ezrakilty@97-113-55-149.tukw.qwest.net)
02:45:32 × deviantfero quits (~deviantfe@190.150.27.58) (Quit: WeeChat 3.0)
02:47:09 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
02:47:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:49:09 soft-warm joins (44695313@ip68-105-83-19.sd.sd.cox.net)
02:50:04 × sablib quits (~sablib@171.113.164.135) (Ping timeout: 260 seconds)
02:50:09 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
02:50:46 × sudden quits (~lax@unaffiliated/laxask) (Quit: Reconnecting)
02:51:01 sudden joins (~lax@unaffiliated/laxask)
02:51:51 sablib joins (~sablib@59.173.155.233)
02:52:00 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
02:52:10 × hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
02:52:52 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
02:52:59 toorevitimirp joins (~tooreviti@117.182.181.253)
02:53:12 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
02:54:25 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds)
02:55:30 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
02:57:44 × Wuzzy quits (~Wuzzy@p57a2e098.dip0.t-ipconnect.de) (Quit: Wuzzy)
02:59:15 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
02:59:32 × forgottenone quits (~forgotten@176.42.28.131) (Quit: Konversation terminated!)
03:00:14 × viluon quits (uid453725@gateway/web/irccloud.com/x-qrosvhbxmvdksoje) (Quit: Connection closed for inactivity)
03:00:36 ornxka_ is now known as ornxka
03:01:36 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 240 seconds)
03:02:37 × ezrakilty quits (~ezrakilty@97-113-55-149.tukw.qwest.net) (Remote host closed the connection)
03:06:06 × gentauro quits (~gentauro@unaffiliated/gentauro) (Read error: Connection reset by peer)
03:06:20 gentauro joins (~gentauro@unaffiliated/gentauro)
03:06:25 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
03:06:49 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:09:03 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
03:09:21 × IsmokeWeed420 quits (cig_in_mou@gateway/vpn/mullvad/ciginmouth/x-85815230) (Quit: Textual IRC Client: www.textualapp.com)
03:11:40 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
03:12:35 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
03:14:28 ezrakilty joins (~ezrakilty@97-113-55-149.tukw.qwest.net)
03:17:00 × ezrakilty quits (~ezrakilty@97-113-55-149.tukw.qwest.net) (Remote host closed the connection)
03:19:28 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
03:21:14 FinnElija joins (~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
03:21:14 finn_elija is now known as Guest75969
03:21:14 FinnElija is now known as finn_elija
03:21:40 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
03:24:51 × Guest75969 quits (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 268 seconds)
03:25:18 × jonn quits (~sweater@206.81.18.26) (Quit: WeeChat 2.8)
03:25:56 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 240 seconds)
03:26:15 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
03:26:45 × heatsink quits (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5) (Remote host closed the connection)
03:28:37 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
03:30:23 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
03:32:37 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
03:34:56 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
03:37:33 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
03:38:02 <monochrom> I'm going to go on a limb and -q $~a (i.e., back to normal)
03:38:04 ChanServ sets mode +o monochrom
03:38:21 monochrom sets mode -zq $~a
03:38:28 monochrom sets mode -o monochrom
03:38:34 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
03:40:37 ChanServ sets mode -o ski
03:41:03 Saukk joins (~Saukk@83-148-239-3.dynamic.lounea.fi)
03:41:45 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:42:24 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
03:43:34 joecordingley joins (~joecordin@37.156.75.63)
03:46:25 × stree quits (~stree@68.36.8.116) (Ping timeout: 240 seconds)
03:46:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
03:48:05 × aarvar quits (~foewfoiew@2601:602:a080:fa0:394a:95d6:26a0:dc43) (Ping timeout: 258 seconds)
03:48:33 × joecordingley quits (~joecordin@37.156.75.63) (Ping timeout: 264 seconds)
03:49:23 × klardotsh quits (~klardotsh@75-172-31-60.tukw.qwest.net) (Quit: WeeChat 3.0.1)
03:50:54 jollygood2 joins (~bc8134e3@217.29.117.252)
03:51:25 <jollygood2> hi. is anyone using inline-c? it seems too good to be true?
03:51:29 <jollygood2> "inline-c lets you seamlessly call C libraries and embed high-performance inline C code in Haskell modules. Haskell and C can be freely intermixed in the same source file, and data passed to and from code in either language with minimal overhead. No FFI required."
03:51:40 × theDon quits (~td@94.134.91.128) (Ping timeout: 260 seconds)
03:52:12 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
03:53:25 × afidegnum quits (~afidegnum@102.176.65.172) (Ping timeout: 240 seconds)
03:53:26 theDon joins (~td@muedsl-82-207-238-135.citykom.de)
03:55:15 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
03:55:33 afidegnum joins (~afidegnum@102.176.65.99)
03:58:30 <koz_> jollygood2: I've used it a bit.
03:58:35 <EvanR> jollygood2: updated in january so
03:58:54 <koz_> It's quite convenient if all you wanna do is wrap a header.
03:59:02 stree joins (~stree@68.36.8.116)
03:59:14 <jollygood2> I've been using haskell FFI in the past quite often, but this seems so much better. I have yet to use it
03:59:30 <jollygood2> so maybe I'm being too optimistic
03:59:33 ubert1 joins (~Thunderbi@p200300ecdf25d926855ee11db97a074b.dip0.t-ipconnect.de)
04:00:00 <jollygood2> koz_ what if you want to write haskell bindings for relatively big C library?
04:00:07 <jollygood2> ffi or this?
04:00:12 heatsink joins (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5)
04:00:13 <koz_> jollygood2: I dunno. I never had to do that.
04:00:21 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
04:00:39 <swarmcollective> Either way, matching C data types is a challenge, or no?
04:00:52 <koz_> swarmcollective: Depends. If they're primitive? Not so much.
04:00:57 <koz_> inline-c works pretty well.
04:01:06 <koz_> If they're structs or something? Then not so much.
04:01:07 × ubert quits (~Thunderbi@p200300ecdf25d925757f6c6af73e13ea.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
04:01:08 ubert1 is now known as ubert
04:01:26 × polyphem quits (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 240 seconds)
04:01:27 <EvanR> would be cool if haskell had something like structs
04:01:47 aarvar joins (~foewfoiew@2601:602:a080:fa0:4c91:1390:14b8:f441)
04:02:09 swarmcollective wonders if you can mix assembly in with the C code. :D
04:02:17 <koz_> inline-asm exists.
04:02:31 <swarmcollective> koz_: Nice.
04:03:04 <swarmcollective> ofc. I have not written C or ASM since the 90's (requires re-learning)
04:03:34 <EvanR> inline-haskell please
04:03:57 <MarcelineVQ> inline-inline
04:04:45 <jollygood2> koz_ how does it compare to ffi when you have to get data from C structs?
04:04:59 <koz_> jollygood2: I dunno, because I've never had to do that.
04:05:04 <koz_> I hear it's not straightforward.
04:05:25 <EvanR> it's not as simple as quasi quote... foo.bar.baz ?
04:05:38 × fengh quits (~haskeller@ip72-205-40-121.dc.dc.cox.net) (Quit: WeeChat 3.0.1)
04:06:18 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
04:07:39 notzmv joins (~zmv@unaffiliated/zmv)
04:07:59 × seneca quits (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Read error: Connection reset by peer)
04:08:04 <jollygood2> it seems that it uses Foreign.Storable for marshalling, so I guess it is similar to FFI in this regard
04:08:10 Rudd0 joins (~Rudd0@185.189.115.108)
04:11:09 × soft-warm quits (44695313@ip68-105-83-19.sd.sd.cox.net) (Quit: Connection closed)
04:11:52 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
04:12:55 plutoniix joins (~q@184.82.193.59)
04:13:03 × plutoniix quits (~q@184.82.193.59) (Max SendQ exceeded)
04:13:30 plutoniix joins (~q@184.82.193.59)
04:15:28 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
04:16:08 × sleblanc quits (~sleblanc@unaffiliated/sebleblanc) (Quit: Leaving)
04:16:23 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
04:17:17 × xsperry quits (~as@unaffiliated/xsperry) (K-Lined)
04:17:17 × jollygood2 quits (~bc8134e3@217.29.117.252) (Disconnected by services)
04:17:24 × xelxebar_ quits (~xelxebar@gateway/tor-sasl/xelxebar) (Remote host closed the connection)
04:17:42 × alx741 quits (~alx741@186.178.108.179) (Quit: alx741)
04:19:45 raym joins (~ray@45.64.220.3)
04:19:55 xelxebar joins (~xelxebar@gateway/tor-sasl/xelxebar)
04:21:48 × heatsink quits (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5) (Remote host closed the connection)
04:24:56 hekkaidekapus joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
04:26:39 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
04:28:04 × electricityZZZZ quits (~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) (Quit: Leaving)
04:29:29 heatsink joins (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5)
04:29:41 forgottenone joins (~forgotten@176.42.28.131)
04:30:52 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
04:31:02 × abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
04:31:20 abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
04:32:16 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
04:35:11 × forgottenone quits (~forgotten@176.42.28.131) (Quit: Konversation terminated!)
04:36:18 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
04:37:05 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
04:40:04 × nyaomi quits (~naomi@cpe-74-75-6-125.maine.res.rr.com) (Ping timeout: 256 seconds)
04:40:56 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
04:43:04 xsperry joins (~as@unaffiliated/xsperry)
04:43:18 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
04:45:11 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
04:45:25 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
04:45:51 justan0theruser joins (~justanoth@unaffiliated/justanotheruser)
04:46:02 × zebrag quits (~inkbottle@aaubervilliers-654-1-4-36.w83-200.abo.wanadoo.fr) (Quit: Konversation terminated!)
04:46:42 hirc joins (3dded63f@61-222-214-63.HINET-IP.hinet.net)
04:46:52 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 276 seconds)
04:47:26 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 240 seconds)
04:47:30 conal joins (~conal@64.71.133.70)
04:48:14 × conal quits (~conal@64.71.133.70) (Client Quit)
04:48:55 conal joins (~conal@64.71.133.70)
04:48:59 × conal quits (~conal@64.71.133.70) (Client Quit)
04:49:50 nyaomi joins (~naomi@2603-7080-c43e-59ad-c878-29ff-fedf-ce89.res6.spectrum.com)
04:50:24 × Sheilong quits (uid293653@gateway/web/irccloud.com/x-bmpdmusxcksbrdtx) ()
04:52:09 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 265 seconds)
04:53:43 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
04:55:37 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection)
04:55:53 × sh9 quits (~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 2.8)
04:56:44 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
04:56:56 <hirc> hi, folks
04:56:59 <hirc> what is the point to use ghcup especially I can use stack setup to install ghc ?
04:58:11 ddellacosta joins (~ddellacos@86.106.143.111)
05:01:25 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
05:02:15 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
05:02:16 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:c8ae:9550:f699:380:13be) (Quit: My MacBook has gone to sleep. ZZZzzz…)
05:02:16 × ddellacosta quits (~ddellacos@86.106.143.111) (Ping timeout: 240 seconds)
05:03:18 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
05:03:29 mnrmnaugh is now known as find
05:06:10 find is now known as mnrmnaugh
05:06:14 <glguy> hirc, you wouldn't need stack at all
05:06:28 <glguy> ghcup installs the various tools and ghc, cabal-install builds/installs Haskell software
05:08:56 × ezzieyguywuf quits (~Unknown@unaffiliated/ezzieyguywuf) (Ping timeout: 240 seconds)
05:09:00 <hirc> I found I always have difficulty to understand those tool
05:09:08 <hirc> stack, cabal, nix
05:09:12 <hirc> ghcup
05:09:58 <hirc> how do i choose them
05:11:09 <glguy> for new development ghcup+cabal-install is a safe starting point
05:11:16 <glguy> if you're already using one it's fine to keep using it
05:11:38 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
05:12:13 da39a3ee5e6b4b0d joins (~da39a3ee5@184.22.159.161)
05:14:01 <hirc> Currently, I am using stack
05:14:38 <hirc> and I am trying to setup haskell language server
05:14:48 × Patternm1ster quits (~georg@li1192-118.members.linode.com) (Quit: leaving)
05:15:00 <hirc> and install it with stack
05:15:17 <hirc> so painful
05:15:29 <hirc> took me an hour to compile
05:16:11 <hirc> then I found ghcup seems much easier to install hls
05:16:36 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
05:16:54 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
05:18:09 Patternmaster joins (~georg@li1192-118.members.linode.com)
05:19:28 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:22:12 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
05:23:08 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
05:25:42 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:18de:2172:b410:a7a6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
05:27:24 × bitmapper quits (uid464869@gateway/web/irccloud.com/x-ticlhlkkqaebihvj) (Quit: Connection closed for inactivity)
05:28:27 × juri_ quits (~juri@178.63.35.222) (Ping timeout: 246 seconds)
05:29:09 jamm_ joins (~jamm@unaffiliated/jamm)
05:33:27 × jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
05:34:17 × Aquazi quits (uid312403@gateway/web/irccloud.com/x-gvrskhsrqqnmfley) (Quit: Connection closed for inactivity)
05:35:16 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
05:37:00 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
05:40:16 hongminhee joins (hongminhee@gateway/web/irccloud.com/x-mtlcwvdsuqyxumrm)
05:41:45 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
05:42:37 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:45:45 <sm[m]> hirc: letting the visual code haskell extension do it is another easy way
05:46:11 ezzieyguywuf joins (~Unknown@unaffiliated/ezzieyguywuf)
05:47:32 <hirc> but..
05:47:37 <hirc> I am a vim fan
05:49:20 <hirc> however, it just not work with coc vim plug
05:49:45 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
05:49:56 <hirc> it perfectly work find with coc-pyright(python)
05:50:03 <hirc> *fine
05:50:20 <hirc> but haskell... I give up
05:50:26 <hirc> just not work
05:51:40 idhugo__ joins (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net)
05:52:46 <monochrom> https://ro-che.info/ccc/26 is prophetic.
05:52:56 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
05:54:37 <koz_> Maybe I'm just an oddball, but I've never needed HLS.
05:55:08 <hirc> yes...
05:55:37 <monochrom> emacs haskell-mode and dante already do the most important 80% what HLS does. So I just apply the 80-20 rule.
05:55:41 <hirc> actually, I am fine with plain vim
05:56:11 <koz_> What monochrom said, except Neovim and ALE.
05:56:22 <monochrom> In fact installing haskell-mode or dante takes only 1% of the hassle.
05:56:42 <hirc> I just occasionally look hls and try to give a shot
05:57:31 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
05:57:53 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 265 seconds)
05:57:59 <monochrom> My students, they use vscode just fine. I don't know whether they get hls to work. I just know that since they grew up with the likes of ipython and eclipse, if they're happy with vscode then it means vscode is perfection already.
05:58:59 <monochrom> Also since they're also spending infinite time on my "simple" assignments and they have like 4 other courses to worry about, I don't imagine that they spent much time fighting with installation.
05:59:45 <monochrom> Whatever vscode setup they ended up with, they must have spent less than an hour to get it.
06:01:27 <hirc> in my current workflow
06:01:41 <hirc> I use vim + ghci + browser for hoogle
06:01:48 <hirc> that's it
06:02:05 <hirc> no fancy stuff
06:02:41 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
06:04:59 <sm[m]> hirc, definitely try adding ghcid to that list. It's the simpler-hls
06:07:02 <hirc> sm[m]: looks good, I will take a look if I have time
06:07:20 × stree quits (~stree@68.36.8.116) (Ping timeout: 256 seconds)
06:07:23 <sm[m]> indispensable rapid feedback
06:09:23 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
06:10:54 × Saukk quits (~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection)
06:11:07 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
06:13:56 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
06:15:25 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds)
06:16:36 × kam1 quits (~kam1@5.125.126.175) (Ping timeout: 240 seconds)
06:16:45 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
06:19:56 stree joins (~stree@68.36.8.116)
06:23:26 × aarvar quits (~foewfoiew@2601:602:a080:fa0:4c91:1390:14b8:f441) (Ping timeout: 264 seconds)
06:23:41 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 268 seconds)
06:24:51 <suzu_> hirc hls has binaries
06:25:44 <hirc> yeah, when i notice that, it's too late
06:26:30 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
06:31:00 <guest222> what's the fixed point in ContT? https://paste.ubuntu.com/p/mMsXX7dcVt/
06:31:05 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
06:33:26 <suzu_> :(
06:35:00 <EvanR> you mean something like mfix ?
06:35:25 × minoru_shiraeesh quits (~shiraeesh@5.101.59.211) (Ping timeout: 240 seconds)
06:36:52 <guest222> label :: ContT r m (LabelT r m);label = callCC $ \k -> let l = LabelT $ k l in return l
06:37:28 <guest222> EvanR: what the point that label is k's fixed-point here
06:37:33 Varis joins (~Tadas@unaffiliated/varis)
06:38:45 × esp32_prog quits (~esp32_pro@185.195.233.147) (Ping timeout: 240 seconds)
06:41:51 Stanley00 joins (~stanley00@unaffiliated/stanley00)
06:43:21 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
06:48:45 average joins (uid473595@gateway/web/irccloud.com/x-kftgzjbwgakalewc)
06:48:56 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
06:49:07 × xff0x quits (~xff0x@2001:1a81:525a:9700:4364:2209:6649:c89) (Remote host closed the connection)
06:49:25 xff0x joins (~xff0x@2001:1a81:525a:9700:3f22:5bb3:5062:204b)
06:51:50 ddellacosta joins (~ddellacos@86.106.143.228)
06:53:39 sord937 joins (~sord937@gateway/tor-sasl/sord937)
06:56:05 × ddellacosta quits (~ddellacos@86.106.143.228) (Ping timeout: 240 seconds)
06:58:26 × hpc quits (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 272 seconds)
06:59:24 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
07:01:39 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
07:03:39 hpc joins (~juzz@ip98-169-35-13.dc.dc.cox.net)
07:06:25 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
07:11:58 danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
07:12:30 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
07:17:26 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 264 seconds)
07:17:52 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
07:19:55 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
07:19:58 SIben_ is now known as SIben
07:20:28 SIben is now known as Guest2445
07:21:23 Guest2445 is now known as BenChe
07:23:52 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
07:24:25 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
07:24:59 BenChe is now known as SIben
07:28:43 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
07:29:46 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
07:31:05 × is_null quits (~jpic@pdpc/supporter/professional/is-null) (Ping timeout: 240 seconds)
07:32:11 ShiningStar joins (1815f7df@c-24-21-247-223.hsd1.or.comcast.net)
07:32:32 Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it)
07:33:25 dhouthoo joins (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
07:34:49 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
07:35:09 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 272 seconds)
07:35:48 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
07:37:22 × ShiningStar quits (1815f7df@c-24-21-247-223.hsd1.or.comcast.net) (Quit: Connection closed)
07:39:29 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
07:40:10 <afidegnum> (==) :: (Eq a) => a -> a -> Bool | i'm a bit confused about this statement: "Everything before the => symbol is called a class constraint."
07:40:18 <afidegnum> anyone care to explain please?
07:40:36 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
07:40:54 <Franciman> afidegnum, do you know type classes?
07:41:03 mouseghost joins (~draco@87-206-9-185.dynamic.chello.pl)
07:41:03 × mouseghost quits (~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
07:41:03 mouseghost joins (~draco@wikipedia/desperek)
07:41:20 <afidegnum> are typeclasses similar to type signatures ?
07:42:13 × Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
07:42:45 <Franciman> https://en.wikipedia.org/wiki/Type_class
07:43:00 <Franciman> probably you can say that they are similar to interfaces in java, I guess
07:43:15 <Franciman> in a type class you specify some functions
07:43:25 <Franciman> and then if you implement an instance of that type class for a type
07:43:34 <Franciman> you have to implement those functions
07:43:43 <afidegnum> i'm familiar of interfaces in Golang,
07:43:44 <Franciman> (then there are extensions)
07:44:38 <dminuoso> afidegnum: So first, a type variable (a type starting with a lower case letter) is one where the caller/user has to pick a type for. Normally, you are free to pick any type you like.
07:44:40 <dminuoso> Consider
07:44:42 <dminuoso> % :t id
07:44:42 <yahb> dminuoso: a -> a
07:44:59 <dminuoso> The caller of `id` has to an arbitrary type for `a`, say `Int`. Then the type of `id` becomes `id :: Int -> Int`
07:45:30 <dminuoso> *has to pick
07:45:35 <afidegnum> a faint light in a tunnel, :)
07:45:47 <dminuoso> A class constraint serves to limit your choices
07:45:50 × howdoi quits (uid224@gateway/web/irccloud.com/x-yvkniqlqtpydzpxk) (Quit: Connection closed for inactivity)
07:45:51 <dminuoso> Consider
07:45:53 <dminuoso> % :t (<>)
07:45:54 <yahb> dminuoso: Semigroup a => a -> a -> a
07:46:18 <dminuoso> Here you can pick any `a` you like, as long as for your choice of `a`, let's call it `T`, there exists an `instance Semigroup T`
07:46:52 <dminuoso> So one could pronounce that above type signature as: For any choice of `a`, as long as there exists an instance Semigroup a, (<>) has type `a -> a -> a`
07:47:35 <dminuoso> % 'a' <> 'b' -- Here the choice of `a` becomes `Char`. GHC will proceed to check whether there exists an `instance Semigroup Char`
07:47:35 <yahb> dminuoso: ; <interactive>:24:5: error:; * No instance for (Semigroup Char) arising from a use of `<>'; * In the expression: 'a' <> 'b'; In an equation for `it': it = 'a' <> 'b'
07:47:43 <dminuoso> And it does not, so GHC rightfully complains
07:48:05 <afidegnum> ok, let me be practicing a little with it to see where it will lead me
07:49:44 <dminuoso> afidegnum: To connect to Franciman, this is just interface polymorphism, where you say "Ill work with any Semigroup `a`". And indeed, the implementor of that thing can use the methods defined in `a` (because it's known that the caller/user can only pick a type for `a` for which an instance Semigroup exisdts)
07:50:51 <afidegnum> does it means it's a class that support method overloading ?
07:51:01 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
07:51:09 <dminuoso> The term class is meant almost, but not quite, entirely unlike Java classes.
07:51:24 <afidegnum> ok
07:51:35 <dminuoso> Think of `class` as a synonym of `set` in the mathematic sense, perhaps. It's a "bunch/set/collection of types" satisfying a common interface.
07:51:47 <dminuoso> And an "instance" declares that a particular type be a member of that "bunch/set/collection"
07:52:21 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
07:52:25 <dminuoso> And a class constraint "C a => ..." demands that the callers/users choice for `a` must be a member/part of that bunch/set/collection"
07:52:25 <afidegnum> oh, ok, the light is getting clearer now :)
07:53:43 aqd joins (~aqd@87-92-163-238.rev.dnainternet.fi)
07:57:05 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
07:57:26 Varis joins (~Tadas@unaffiliated/varis)
07:58:01 <afidegnum> can you give me a hint, how do i use haskell to generate code in other languages? Rust i.e ? I have been able to use snippet templates with elisp, but faced few challenges along the way in term of dynamically selecting some fields to generate codes with.
07:59:14 <dminuoso> Im stunned at how limited go interfaces are.
08:00:01 <afidegnum> I could say go is not much a perfect language, i would call it a binary version of python :)
08:00:58 <dminuoso> Well, go is a more sane version of C at the very least.
08:01:43 <afidegnum> yes, the use of pointers were more clearer while i was coding in go than C/C++
08:02:54 <dminuoso> Well, Im rather talking about the memory safety here. Barely a day goes by where we dont have to apply critical patches because sprintf was forced onto us.
08:03:24 <afidegnum> oh ok
08:03:32 <dminuoso> If we just removed sprintf from our c libraries, we'd fix 70% of CVEs in one swoop.
08:03:35 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
08:03:48 <afidegnum> i like that,
08:04:03 <dminuoso> Or just plain buffer overruns.
08:04:52 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Remote host closed the connection)
08:05:20 Yumasi joins (~guillaume@2a01:e0a:5cb:4430:b7bd:1d78:9a4c:6909)
08:05:21 × abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
08:07:47 hiroaki_ joins (~hiroaki@2a02:8108:8c40:2bb8:4e81:bfc6:428b:4821)
08:08:28 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
08:10:13 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
08:10:55 × Forlorn quits (~Forlorn@unaffiliated/forlorn) (Quit: Lost terminal)
08:11:49 Forlorn joins (~Forlorn@unaffiliated/forlorn)
08:12:16 chele joins (~chele@ip5b40237d.dynamic.kabel-deutschland.de)
08:13:01 × _xor quits (~xor@74.215.46.133) (Quit: brb)
08:13:14 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:13:45 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
08:14:13 danza joins (~francesco@151.53.76.37)
08:14:26 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 240 seconds)
08:14:42 kuribas joins (~user@ptr-25vy0ia1ougr5zd5t67.18120a2.ip6.access.telenet.be)
08:14:44 bahamas joins (~lucian@unaffiliated/bahamas)
08:15:27 <bahamas> anyone know why this page is under Extensions, even though it doesn't mention any extensions that need to be enabled? https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/infix_tycons.html
08:15:32 bergey` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net)
08:16:14 gioyik_ joins (~gioyik@gateway/tor-sasl/gioyik)
08:16:19 <bahamas> I guess it's related to TypeOperators, but that's covered on a different page
08:17:46 × gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 268 seconds)
08:19:56 × bergey` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 240 seconds)
08:19:58 LKoen joins (~LKoen@252.248.88.92.rev.sfr.net)
08:21:53 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
08:22:49 <dminuoso> bahamas: Presumably because infix type constructors are not standard Haskell?
08:22:57 <dminuoso> GHC has a bunch of extensions that are always on
08:23:22 <dminuoso> `Identifiers are lexically distinguished into two namespaces (Section 1.4): those that begin with a lowercaseletter (variable identifiers) and those that begin with an upper-case letter (constructor identifiers)`
08:25:06 <Franciman> dminuoso, do I need to enable an extension to code in Haskell2010?
08:26:10 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
08:26:32 <bahamas> dminuoso: I guess I was wondering why that section wasn't in the page that covers TypeOperators, since it's only valid when TypeOperators is enabled, right? but maybe the author(s) decided it's more readable to put it on its own page
08:27:13 <dminuoso> Franciman: You need a different compiler, if you want that.
08:27:34 <dminuoso> There's things like altered typeclass hierarchies that you cant trivially fix
08:27:56 × stree quits (~stree@68.36.8.116) (Ping timeout: 260 seconds)
08:28:40 × unlink2 quits (~unlink2@p200300ebcf0faf0012aa3378b7c33d3b.dip0.t-ipconnect.de) (Quit: Leaving)
08:29:37 cfricke joins (~cfricke@unaffiliated/cfricke)
08:30:16 guest222` joins (~user@61.148.245.136)
08:30:34 acidjnk_new joins (~acidjnk@p200300d0c7390952fca35b4a28487713.dip0.t-ipconnect.de)
08:30:45 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
08:32:03 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
08:34:29 × guest222 quits (~user@49.5.6.87) (Ping timeout: 265 seconds)
08:35:31 × LKoen quits (~LKoen@252.248.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
08:35:34 × gioyik_ quits (~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 3.0)
08:35:57 kritzefitz joins (~kritzefit@fw-front.credativ.com)
08:36:17 knupfer joins (~Thunderbi@200116b82ce9b8005df4752026caea5f.dip.versatel-1u1.de)
08:36:45 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0.1)
08:37:37 borne joins (~fritjof@2a06:8782:ffbb:1337:2133:4ed6:e22f:c3eb)
08:39:28 _xor joins (~xor@74.215.46.133)
08:40:48 stree joins (~stree@68.36.8.116)
08:42:04 × zhulikas_ quits (~derp@hmm.wantstofly.org) (Quit: zhulikas_)
08:42:21 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
08:43:08 × vchlup quits (~vchlup@nat.brnet.cz) (Quit: Leaving)
08:46:53 cfricke joins (~cfricke@unaffiliated/cfricke)
08:47:59 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
08:48:07 sh9 joins (~sh9@softbank060116136158.bbtec.net)
08:50:34 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
08:50:53 Aquazi joins (uid312403@gateway/web/irccloud.com/x-emqhyvlnnsxogtux)
08:51:07 michalz joins (~user@185.246.204.61)
08:51:16 frozenErebus joins (~frozenEre@94.128.219.166)
08:51:25 <zmagii> Is there a partition-of-a-set object in Haskell?
08:52:09 × Orbstheorem quits (~roosember@hellendaal.orbstheorem.ch) (Quit: WeeChat 2.3)
08:54:14 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
08:54:32 × jneira quits (501e6551@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.101.81) (Ping timeout: 260 seconds)
08:55:07 <zmagii> (X,S) where U(S) = X and each s in S is disjoint to the rest.
08:55:23 <Franciman> thanks dminuoso
08:55:36 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 272 seconds)
08:57:36 <dminuoso> zmagii: Are you, perhaps, looking for https://hackage.haskell.org/package/containers-0.6.4.1/docs/Data-IntSet.html#v:partition ?
08:57:55 <dminuoso> (Versions for all the other container types exist)
08:59:42 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
09:00:06 × ichor[m] quits (hakonmatri@gateway/shell/matrix.org/x-saaqofiwyljfphil) (Quit: Idle for 30+ days)
09:00:16 × doct0rhu[m] quits (doct0rhumo@gateway/shell/matrix.org/x-adqjzaenstckgbzs) (Quit: Idle for 30+ days)
09:00:43 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
09:01:29 Mrbuck joins (~Mrbuck@gateway/tor-sasl/mrbuck)
09:03:57 kafl joins (~kafl@unaffiliated/kafl)
09:04:07 <zmagii> dminuoso: LOL, no, why does everyone seem to want to do that.
09:04:12 syd joins (~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net)
09:06:18 × chaosagent quits (~chaosagen@217.146.82.202) (Remote host closed the connection)
09:06:31 × pavonia^\_^\ quits (~user@unaffiliated/siracusa) (Quit: Bye!)
09:06:50 <zmagii> It should be something like Data.partitionOnSet, if at all there is such a thing.
09:06:59 <Uniaika> thank glguy for the global notice
09:08:24 <zmagii> I think the confusion about subsets is that a subset is a set; this view is distorted because a subset insn't actually a set. When you view subobjects and quotient objects appropriately, then a partition is at the same level and importance as a subset.
09:09:09 <zmagii> So, a subset is (X,S) and a partition is (X,E). S is usually an injective function; E is usually a surjective function.
09:10:07 guest222` is now known as guest222
09:10:54 × Chai-T-Rex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Remote host closed the connection)
09:11:15 Chai-T-Rex joins (~ChaiTRex@gateway/tor-sasl/chaitrex)
09:13:53 × Chai-T-Rex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Remote host closed the connection)
09:14:15 Chai-T-Rex joins (~ChaiTRex@gateway/tor-sasl/chaitrex)
09:15:00 <dminuoso> zmagii: ah, I see.
09:17:01 ph88 joins (~ph88@2a02:8109:9e00:7e5c:c0c2:6fb4:8104:9592)
09:17:04 hendursa1 joins (~weechat@gateway/tor-sasl/hendursaga)
09:17:42 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
09:18:12 × hendursaga quits (~weechat@gateway/tor-sasl/hendursaga) (Ping timeout: 268 seconds)
09:18:28 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
09:22:02 × heatsink quits (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5) (Remote host closed the connection)
09:22:05 Stephnix joins (~Stephnix@195.140.213.38)
09:23:56 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
09:26:41 <tromp> i have a line of code "cnts <- mapM showcount diagrams" that produced a list of Ints (showcount maps to IO Int). what's the simplest way to get the sum instead?
09:27:41 <Taneb> sumCnts <- sum <$> mapM showcount diagrams?
09:28:30 leo___ joins (~leo@cpc96810-rdng27-2-0-cust409.15-3.cable.virginm.net)
09:28:33 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 246 seconds)
09:28:35 × hirc quits (3dded63f@61-222-214-63.HINET-IP.hinet.net) (Quit: Connection closed)
09:29:36 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
09:30:18 sepples_ is now known as sepples
09:30:24 <tromp> thanks, Taneb!
09:30:44 × gitgood quits (~gitgood@80-44-13-166.dynamic.dsl.as9105.com) (Remote host closed the connection)
09:30:52 × knupfer quits (~Thunderbi@200116b82ce9b8005df4752026caea5f.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
09:31:48 <dminuoso> foldMapM would be a cute solution too, if we had it
09:32:24 gitgood joins (~gitgood@80-44-13-166.dynamic.dsl.as9105.com)
09:32:33 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
09:32:53 <dminuoso> % :t foldMapM
09:32:53 <yahb> dminuoso: (Monad m, Monoid b, Foldable t) => (a -> m b) -> t a -> m b
09:34:11 idhugo_ joins (~idhugo@80-62-117-86-mobile.dk.customer.tdc.net)
09:34:35 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
09:37:00 × idhugo__ quits (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) (Ping timeout: 260 seconds)
09:37:28 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
09:38:35 <Taneb> Doesn't that just need Applicative?
09:39:11 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
09:40:42 <edwardk> TIL java has had support for strictfp all along.
09:42:53 edwardk dances. Now I have a version of IO that can hold values of different RuntimeReps
09:43:08 <edwardk> the main headache is figuring out how to hang a nice 'Functor' and 'Monad' equivalent off it.
09:43:30 <Franciman> can you define strictfp?
09:43:40 <edwardk> Franciman: its a stupid joke https://en.wikipedia.org/wiki/Strictfp
09:43:42 <tomsmeding> Taneb: :t \f -> fmap fold . traverse f
09:43:46 <tomsmeding> :t \f -> fmap fold . traverse f
09:43:48 <lambdabot> (Monoid b, Traversable t, Applicative f) => (a -> f b) -> t a -> f b
09:43:54 <Franciman> :P
09:43:55 <Franciman> thank you
09:44:07 m0rphism1 joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
09:44:14 edk_ is now known as e
09:44:14 <edwardk> https://twitter.com/viktorklang/status/478096781855973376
09:44:36 <Franciman> ahah
09:44:57 × hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-kbqvtlxgpvjeokgb) (Quit: Connection closed for inactivity)
09:45:31 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
09:45:36 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
09:45:42 <tomsmeding> oh hm that requires Traversable, more than Foldable
09:46:03 <tomsmeding> but maybe that's the whole point, you either need Traversable or Monad?
09:46:25 <edwardk> class Functor (f :: forall (r :: RuntimeRep). TYPE r -> TYPE s) where
09:46:30 <edwardk> this is the future =)
09:46:34 <tomsmeding> beautiful
09:47:09 <Taneb> :t \f -> getAp . foldMap (Ap . f)
09:47:10 <lambdabot> forall k (t :: * -> *) (f :: k -> *) (a1 :: k) a2. (Foldable t, Monoid (Ap f a1)) => (a2 -> f a1) -> t a2 -> f a1
09:47:19 <Franciman> : id
09:47:22 <Franciman> :t id
09:47:24 <lambdabot> a -> a
09:47:24 <Taneb> I'm not sure that's the right ap
09:47:47 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
09:48:14 <Taneb> It should be :: (Foldable t, Applicative f, Monoid m) => (a -> f m) -> t a -> f m
09:48:29 <edwardk> :t \f -> Data.Monoid.getAp . foldMap (Data.Monoid.Ap . f)
09:48:31 <lambdabot> forall k (t :: * -> *) (f :: k -> *) (a1 :: k) a2. (Foldable t, Monoid (Ap f a1)) => (a2 -> f a1) -> t a2 -> f a1
09:48:42 <edwardk> weird that isn't simplifying
09:48:49 <tomsmeding> we have 'instance (Applicative f, Monoid a) => Monoid (Ap f a)', so should work
09:49:56 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 240 seconds)
09:50:51 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 265 seconds)
09:50:58 × tomsmeding quits (~tomsmedin@tomsmeding.com) (Quit: ZNC 1.8.2 - https://znc.in)
09:51:05 timCF joins (~i.tkachuk@m91-129-99-43.cust.tele2.ee)
09:51:23 BENICHN joins (~BENICHN@2a02-842a-02b8-e801-e055-7050-fee9-2706.rev.sfr.net)
09:51:55 tomsmeding joins (~tomsmedin@tomsmeding.com)
09:53:01 fendor joins (~fendor@178.165.129.157.wireless.dyn.drei.com)
09:57:09 [tby] joins (~tby@193.234.28.91)
09:57:10 Orbstheorem joins (~roosember@hellendaal.orbstheorem.ch)
09:57:43 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
09:57:59 × timCF quits (~i.tkachuk@m91-129-99-43.cust.tele2.ee) (Quit: leaving)
09:58:16 jamm_ joins (~jamm@unaffiliated/jamm)
09:58:26 × vgtw quits (~vgtw@gateway/tor-sasl/vgtw) (Quit: ZNC - https://znc.in)
09:58:42 vgtw joins (~vgtw@gateway/tor-sasl/vgtw)
09:58:56 × tby quits (~tby@unaffiliated/tby) (Ping timeout: 260 seconds)
10:00:36 juri_ joins (~juri@178.63.35.222)
10:00:45 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
10:01:49 × BENICHN quits (~BENICHN@2a02-842a-02b8-e801-e055-7050-fee9-2706.rev.sfr.net) (Quit: Quit)
10:02:03 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
10:02:27 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 265 seconds)
10:03:02 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
10:05:04 cgfbee joins (~bot@oc1.itim-cj.ro)
10:05:34 pera joins (~pera@unaffiliated/pera)
10:07:20 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
10:11:17 <dminuoso> Taneb: Monad allows us to do this in one swoop
10:11:53 <dminuoso> % foldMapM f xs = foldr go pure xs mempty where go x r z = f x >>= \y -> r $! z <> y
10:11:53 <yahb> dminuoso:
10:11:57 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 264 seconds)
10:12:07 × da39a3ee5e6b4b0d quits (~da39a3ee5@184.22.159.161) (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:12:07 <dminuoso> Im not quite sure whether you can do this as effectively with just applicative
10:13:39 <dminuoso> Taneb: Oh and the type looks right. Think its just polykinds getting in the way
10:13:43 <dminuoso> % :set -XNoPolykinds
10:13:44 <yahb> dminuoso: Some flags have not been recognized: -XNoPolykinds
10:13:57 <dminuoso> % :set -XNoPolyKinds
10:13:57 <yahb> dminuoso:
10:14:02 <dminuoso> % :t \f -> getAp . foldMap (Ap . f)
10:14:02 <yahb> dminuoso: (Foldable t, Applicative f, Monoid a1) => (a2 -> f a1) -> t a2 -> f a1
10:14:44 <dminuoso> Not sure how this works with respect to lazyness
10:17:14 timCF joins (~i.tkachuk@m91-129-99-43.cust.tele2.ee)
10:18:01 <edwardk> dminuoso: ah!
10:19:44 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
10:20:10 <tomsmeding> :t \f -> foldr (\x acc -> liftA2 (<>) (f x) acc) (pure mempty)
10:20:12 <lambdabot> (Foldable t1, Applicative f, Monoid c) => (t2 -> f c) -> t1 t2 -> f c
10:20:20 <tomsmeding> that's what the Ap solution expands to
10:20:38 <tomsmeding> if you unwrap the newtype
10:21:00 <tomsmeding> and assume foldMap has been implemented in the default way using foldr
10:21:04 <timCF> Hello! Do anybody know any book similar to "Modern compiler implementation in ML" but where compiler is built for functional language? This book itself is ok, as well as ML code examples are quite readable, but Tiger language which is used as example language for building compiler for is quite procedural. For educational purposes it's ok, but I'll probably enjoy building functional compiler much more
10:23:36 × syd quits (~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net) (Ping timeout: 240 seconds)
10:24:36 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
10:25:27 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
10:26:11 wz1000 joins (~wz1000@static.11.113.47.78.clients.your-server.de)
10:26:46 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6)
10:26:55 <Franciman> does anybody do logic programming with haskell?
10:30:14 <bahamas> timCF: maybe this helps https://github.com/natefaubion/example-functional-compiler
10:30:27 <bahamas> it doesn't have a companion book though
10:30:29 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
10:31:06 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
10:32:42 <timCF> bahamas: thanks!
10:33:26 <tomsmeding> timCF: this also exists; it's for implementation in Miranda and is relatively old, but it should translate fairly easily to Haskell https://www.microsoft.com/en-us/research/publication/implementing-functional-languages-a-tutorial/
10:33:43 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:34:14 × lyxia quits (~lyxia@poisson.chat) (Ping timeout: 256 seconds)
10:36:11 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
10:36:46 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
10:36:53 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
10:40:07 × ph88 quits (~ph88@2a02:8109:9e00:7e5c:c0c2:6fb4:8104:9592) (Remote host closed the connection)
10:40:56 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 240 seconds)
10:41:02 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
10:41:36 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
10:42:19 × nek0 quits (~nek0@mail.nek0.eu) (Remote host closed the connection)
10:43:55 <timCF> tomsmeding: cool, thanks!
10:47:45 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
10:48:58 × stree quits (~stree@68.36.8.116) (Ping timeout: 272 seconds)
10:49:49 × Stanley00 quits (~stanley00@unaffiliated/stanley00) ()
10:53:32 × Mrbuck quits (~Mrbuck@gateway/tor-sasl/mrbuck) (Remote host closed the connection)
10:54:00 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
10:54:00 × bahamas quits (~lucian@unaffiliated/bahamas) (Quit: leaving)
10:54:04 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
10:54:09 Mrbuck joins (~Mrbuck@gateway/tor-sasl/mrbuck)
10:55:25 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:55:37 shad0w_ joins (31249ccd@49.36.156.205)
10:55:42 arpl joins (~ARPL@84-107-171-239.cable.dynamic.v4.ziggo.nl)
10:55:51 <shad0w_> hi all!
10:55:55 × kritzefitz quits (~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
10:56:07 <shad0w_> can someone please explain me the Record function syntax?
10:56:27 × danso quits (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 272 seconds)
10:56:41 <shad0w_> `newtype MaybeT m a = MaybeT { runMaybeT :: m (Maybe a) }`
10:56:59 <shad0w_> why is it in there, where do we actually define it ?
10:57:43 × joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds)
10:58:14 × Mrbuck quits (~Mrbuck@gateway/tor-sasl/mrbuck) (Client Quit)
10:58:50 × cfricke quits (~cfricke@unaffiliated/cfricke) (Ping timeout: 264 seconds)
10:59:07 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
10:59:13 kritzefitz joins (~kritzefit@fw-front.credativ.com)
10:59:30 <arahael> shad0w_: That's the definition. Why is "what" in there?
10:59:54 nek0 joins (~nek0@mail.nek0.eu)
11:00:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
11:00:44 thc202 joins (~thc202@unaffiliated/thc202)
11:00:51 <shad0w_> arahael: ?
11:01:22 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:01:22 <arahael> shad0w_: What is the "it" you're referring to?
11:01:34 <shad0w_> the function runMaybeT
11:01:51 stree joins (~stree@68.36.8.116)
11:02:01 <arahael> shad0w_: Ah, you've only defined the type there, you still have to provide it a function when you create it.
11:02:14 <shad0w_> it's a type definition. i understand the normal record syntax.
11:02:14 <shad0w_> ` data A = A {name :: String, age: Int }`
11:02:29 danso joins (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009)
11:02:39 <shad0w_> that tell's me A is a type constructor with it's paramters named for convinience.
11:02:44 frozenErebus joins (~frozenEre@94.128.219.166)
11:02:48 raoul90 is now known as raoul
11:02:59 <arahael> And you understand `data A a = A { name: :: a, age:: Int }`, as well?
11:03:12 <shad0w_> sure
11:03:32 <arahael> shad0w_: `data A a = A { name :: Maybe a, age:: Int}` as well?
11:03:49 <shad0w_> i guess
11:04:12 <arahael> shad0w_: `data A a = A { name :: Maybe (Maybe a), age :: Int}`?
11:04:32 <mawk> où es-tu???
11:05:30 <shad0w_> tilts head. i guess ?? the first arguments is either `Just ( Just something)` or `Just (Nothing)` or simply `Nothing` ?
11:05:31 __monty__ joins (~toonn@unaffiliated/toonn)
11:06:16 PietPtr parts (~pieter@unaffiliated/pietdagamer) ("WeeChat 2.3")
11:06:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
11:06:37 syd joins (~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net)
11:07:21 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:08:31 <shad0w_> arahael:
11:08:38 ddellacosta joins (~ddellacos@86.106.143.137)
11:09:06 <yushyin> shad0w_: you are aware that in your `data A = A { name :: String, age :: Int }' haskell provides you with two functions also called field selectors `name :: A -> String' and `age :: A -> Int' same applies to the runMaybeT
11:09:36 <arahael> shad0w_: Indeed.
11:10:27 <shad0w_> yushyin: vaguely. i think that's the reason record names need to be unique right?
11:10:54 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
11:11:06 <yushyin> shad0w_: exactly
11:11:53 <idnar> `data A = A {name :: String, age: Int }` creates selector functions `name :: A -> String` and `age :: A -> Int`; similarly `newtype MaybeT m a = MaybeT { runMaybeT :: m (Maybe a) }` creates `runMaybeT :: MaybeT m a -> m (Maybe a)`
11:12:22 <shad0w_> idnar: we could do that outside too right ?
11:12:29 <shad0w_> like a normal usual function ?
11:12:36 × ddellacosta quits (~ddellacos@86.106.143.137) (Ping timeout: 240 seconds)
11:12:37 <idnar> shad0w_: yes
11:12:41 cfricke joins (~cfricke@unaffiliated/cfricke)
11:12:58 <shad0w_> why do we then paramaterize the data constructor with it ?
11:13:01 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
11:13:36 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:13:37 DavidEichmann joins (~david@234.109.45.217.dyn.plus.net)
11:13:40 <shad0w_> pardon the noobness : P
11:14:58 <olligobber> so I'm getting `Illegal tuple section', but my only tuple section is `pure $ TH.TupE $ replicate n Nothing', which is basically (,) or (,,)
11:15:56 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
11:15:58 <idnar> shad0w_: `newtype MaybeT m a = MaybeT (m (Maybe a)); runMaybeT (MaybeT a) = a` is the same but longer
11:16:50 <olligobber> I guess I should use `varE $ mkName $ "(" <> replicate (n-1) ',' <> ")"' instead?
11:17:09 <shad0w_> i mean, if now we pattern match on a MaybeT value. won't we also match `runMaybeT`
11:17:20 <shad0w_> everytime?
11:17:22 × Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Remote host closed the connection)
11:17:32 <shad0w_> idnar:
11:17:44 <shad0w_> i keep forgetting to tag lol.
11:19:04 <olligobber> nope, then I get `Illegal variable name: ‘(,)’'
11:19:43 × stampirl quits (~stampirl@195-154-112-77.rev.poneytelecom.eu) (Quit: WeeChat 2.3)
11:20:01 <int-e> olligobber: try conE instead?
11:20:07 <olligobber> oh, I use tupleDataName n
11:20:27 <idnar> shad0w_: yes, but `runMaybeT foo` is nicer than `case foo of MaybeT x -> x`
11:20:38 <int-e> I was going to say that there may be something special for tuple constructors
11:21:17 <olligobber> hmm, still an error
11:21:28 <olligobber> how is conE different from varE?
11:22:28 <int-e> olligobber: conE (tupleDataName 2) should work
11:22:29 <olligobber> oh its for constructors
11:22:57 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
11:24:14 <int-e> if the constructor is fully applied, use `tupE`
11:24:14 <olligobber> oh god now there's other errors
11:24:19 <olligobber> it is not
11:24:20 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
11:25:11 <int-e> now there's other errors ==> very often that's progress :)
11:25:23 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:25:32 jamm_ joins (~jamm@unaffiliated/jamm)
11:26:05 <shad0w_> idnar: i see.
11:26:09 <shad0w_> Thanks!
11:26:40 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
11:26:44 <shad0w_> but we have to pass / define a function for runMaybeT anyway right ?
11:27:12 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 246 seconds)
11:27:36 <yushyin> the record syntax defines it
11:27:56 <shad0w_> doesn't it declare it?
11:28:06 <shad0w_> like that's just a type definition
11:28:30 <yushyin> and also a field selector function
11:28:38 <shad0w_> a wut
11:29:45 vent joins (~vent@185.62.190.213)
11:29:45 <yushyin> if you use the record syntax a function `runMaybeT :: MaybeT m a -> m (Maybe a)' will be created for you
11:31:22 <shad0w_> like it automatically figures out what the function should be based on the type sig?
11:31:24 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
11:31:57 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
11:32:43 <NieDzejkob_> like, the field of the record is called runMaybeT
11:32:47 <yushyin> yes, the only thing it has to do is to pattern match on MaybeT and return you the m (Maybe a)
11:32:50 <NieDzejkob_> so the function runMaybeT is the accessor
11:33:21 <shad0w_> i think i get it now
11:33:39 <NieDzejkob_> are there any clever not-too-painful ways of passing source locations in an AST ADT?
11:33:53 <shad0w_> is the mental model of seeing records as objects alright?
11:34:10 <shad0w_> like javascript objects. json syntax objects
11:34:29 <NieDzejkob_> objects as in OOP, not really. But "thing that holds data" works
11:34:41 <NieDzejkob_> it's like a tuple that had its parts named
11:34:45 <shad0w_> more like key value pairs
11:34:59 <shad0w_> ah, like named tuples
11:35:18 <NieDzejkob_> well, javascript's objects are more like a Map, in that the set of keys is decided at runtime
11:35:21 × arw quits (~arw@impulse.informatik.uni-erlangen.de) (Ping timeout: 264 seconds)
11:35:41 <shad0w_> im running away from javascript
11:35:45 <shad0w_> i need new mental models
11:36:14 <NieDzejkob_> well in a language as dynamically typed as javascript you're not gonna find an exact equivalent :D
11:36:24 <merijn> NieDzejkob_: "add a field to every node in your AST"? :p
11:36:37 <shad0w_> thanks guys.
11:36:41 <shad0w_> see you folks around.
11:36:52 × shad0w_ quits (31249ccd@49.36.156.205) (Quit: Connection closed)
11:37:12 <NieDzejkob_> merijn: yeah...
11:37:59 <NieDzejkob_> I mostly want to keep locations in the front-end, and then I do lots of manipulations and generation of new AST terms that don't need locations anymore. Is it possible to get a type with and without location from the same definition?
11:37:59 arw joins (~arw@impulse.informatik.uni-erlangen.de)
11:38:41 <NieDzejkob_> like, I do Expr Type for fully type-inferred expressions and Expr (Maybe Type) for ones without the annotations, like they come from the parser
11:38:57 <merijn> NieDzejkob_: "data AST a = ... " "type SourceAST = AST SourceSpan; type SourcelessAST = AST ()"? :p
11:39:18 <NieDzejkob_> I guess I could use a unit type, but then the pattern matching/creating nodes will need to specify () everywhere
11:39:36 <merijn> NieDzejkob_: You can use pattern synonyms
11:39:58 <merijn> Just specify pattern synonyms that always include () for the SourcelessAST version
11:40:20 forgottenone joins (~forgotten@176.42.20.136)
11:42:52 danvet_ joins (~danvet@212-51-149-181.fiber7.init7.net)
11:44:38 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
11:47:31 × finn_elija quits (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Remote host closed the connection)
11:47:49 × arw quits (~arw@impulse.informatik.uni-erlangen.de) (Ping timeout: 265 seconds)
11:47:53 finn_elija joins (~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
11:48:36 gzj joins (~gzj@unaffiliated/gzj)
11:49:32 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
11:57:23 × ukari quits (~ukari@unaffiliated/ukari) (Remote host closed the connection)
11:57:46 ukari joins (~ukari@unaffiliated/ukari)
11:58:41 × timCF quits (~i.tkachuk@m91-129-99-43.cust.tele2.ee) (Quit: leaving)
12:01:37 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
12:03:14 arw joins (~arw@impulse.informatik.uni-erlangen.de)
12:06:24 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
12:06:40 minoru_shiraeesh joins (~shiraeesh@5.101.59.211)
12:07:48 × arw quits (~arw@impulse.informatik.uni-erlangen.de) (Ping timeout: 246 seconds)
12:10:47 × cfricke quits (~cfricke@unaffiliated/cfricke) (Read error: Connection reset by peer)
12:13:56 Sheilong joins (uid293653@gateway/web/irccloud.com/x-xqiuutmfxqpmwhnb)
12:15:17 Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it)
12:17:02 <NieDzejkob_> has somebody extracted Elm's error report rendering to a standalone library?
12:17:57 × zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving)
12:18:01 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
12:18:45 × kafl quits (~kafl@unaffiliated/kafl) (Ping timeout: 265 seconds)
12:19:15 zaquest joins (~notzaques@5.128.210.178)
12:19:45 ddellacosta joins (~ddellacos@86.106.143.72)
12:20:08 GZJ0X_ joins (~gzj@unaffiliated/gzj)
12:20:13 kafl joins (~kafl@unaffiliated/kafl)
12:21:42 nbloomf joins (~nbloomf@2600:1700:ad14:3020:6d81:661e:8f9e:1f6f)
12:22:45 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
12:23:38 frozenErebus joins (~frozenEre@94.128.219.166)
12:24:05 × ddellacosta quits (~ddellacos@86.106.143.72) (Ping timeout: 240 seconds)
12:25:03 knupfer joins (~Thunderbi@dynamic-046-114-146-074.46.114.pool.telefonica.de)
12:25:54 × knupfer quits (~Thunderbi@dynamic-046-114-146-074.46.114.pool.telefonica.de) (Client Quit)
12:26:13 knupfer joins (~Thunderbi@dynamic-046-114-146-074.46.114.pool.telefonica.de)
12:27:17 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
12:27:26 <olligobber> I think I found a bug with how template haskell works
12:27:54 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
12:28:19 × ukari quits (~ukari@unaffiliated/ukari) (Remote host closed the connection)
12:28:32 cfricke joins (~cfricke@unaffiliated/cfricke)
12:28:37 × plutoniix quits (~q@184.82.193.59) (Quit: Leaving)
12:29:11 <olligobber> If you use some operator in a code literal, such as [| f $ a +++ b |] without importing +++ in the file with the template, it assumes things about its associativity, in particular it assumes you mean (f $ a) +++ b
12:29:22 ukari joins (~ukari@unaffiliated/ukari)
12:29:23 <olligobber> I think instead it should error saying that +++ is not imported
12:30:32 <olligobber> I mean precedence, not associativity
12:31:43 <merijn> olligobber: How would it tell?
12:31:56 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds)
12:32:06 <olligobber> I don't know how template haskell works, but I thought using other functions in a code literal required them to be imported
12:33:08 <merijn> olligobber: Template Haskell generates an AST of Haskell code that gets inserted into the surrounding file and then after all TH splices have been replaced with the produced AST, the resulting code is compiled
12:33:54 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
12:34:03 <olligobber> right, but in generating that AST it needs to know the precedence and associativity of the operators, right?
12:34:44 Tario joins (~Tario@201.192.165.173)
12:35:00 <merijn> olligobber: Sure, but the quasi quoter [| turns "Haskell syntax into a Haskell AST", it does not do name resolution
12:35:14 poscat1 is now known as poscat
12:35:34 <merijn> I'm not sure whether that's supposed to work or not
12:35:47 <olligobber> well if I import an operator, then [| |] will use the correct precedence and associativity
12:35:55 <merijn> I'm pretty sure the [| quasi quoter only consider it's contents, not the outside
12:36:01 <olligobber> but if I don't then [| |] just assumes those
12:36:30 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
12:36:31 <merijn> olligobber: Well, what would you expect it to do instead?
12:36:48 <olligobber> error when an operator is used and not imported
12:37:43 <olligobber> or produce a warning at least
12:37:44 <merijn> olligobber: tbh, that's probably an unrealistic expectation of TH
12:38:01 <merijn> olligobber: Try what happens with [|| ||] (i.e. type TH)
12:38:04 <nshepperd2> seems like a bit of a sharp edge if generating an AST without doing name resolution means the AST is associated wrong
12:38:05 <merijn> s/type/typed
12:38:18 <merijn> nshepperd2: It's not associated wrong, though
12:38:37 <olligobber> it is?
12:38:45 <merijn> nshepperd2: infixl 9 is the right fixity for unspecified things
12:38:46 <nshepperd2> are you supposed to do name resolution later and reassociate it in code or something
12:38:51 bor0 joins (~boro@unaffiliated/boro/x-000000001)
12:38:54 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
12:39:12 <merijn> nshepperd2: TH does not guarantee the produced code is valid
12:39:33 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 264 seconds)
12:40:19 <olligobber> wait, [|| is a thing??
12:40:45 <merijn> nshepperd2: Basically, the statement is "quasiquoter should fail if name resolution fails", but I don't think (I'm not sure) TH requires name resolution during the TH splice, I think (again, I don't remember the specification) late binding of names is a feature
12:41:16 <merijn> Name resolution or late binding, pick one.
12:41:20 <olligobber> if [|| does what I think it does, then I don't care how [| works
12:41:47 <merijn> olligobber: Typed TH produced, well, typed TH splices which guarantee the resulting splice is type-correct
12:42:10 <olligobber> and it does name resolution
12:42:39 <merijn> typed TH happens significantly later in the compilation, so I expect it does, yes
12:43:26 <merijn> but, uh, consult GHC user guide and/or TH paper to be sure :p
12:43:49 <nshepperd2> that sounds like the answer is yes you're meant to manually reassociate the result of [| |] to match what you expect
12:43:50 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:6d81:661e:8f9e:1f6f) (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:44:21 cur8or joins (~cur8or@2c0f:fbe1:3:17:bda5:e820:dbb3:5934)
12:44:54 × mceier quits (~mceier@89-68-132-187.dynamic.chello.pl) (Ping timeout: 246 seconds)
12:45:57 mceier joins (~mceier@89-68-132-187.dynamic.chello.pl)
12:46:04 <merijn> nshepperd2: Well, you're not necessarily meant to, but if [| |] is supposed to generate ASTs in the absence of unresolved names (which, afaict from the docs, it is), the only option when a name is not in scope is "use default fixity"
12:46:13 <olligobber> I think using [|| instead of [| is the answer I'm looking for
12:46:19 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
12:46:26 <merijn> nshepperd2: It boils down to "do you think late binding is a bug or a feature"
12:47:16 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
12:48:40 × Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving)
12:50:21 Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it)
12:50:29 <merijn> nshepperd2, olligobber: Consider the implications of: https://hackage.haskell.org/package/template-haskell-2.16.0.0/docs/Language-Haskell-TH.html#v:mkName and https://hackage.haskell.org/package/template-haskell-2.16.0.0/docs/Language-Haskell-TH.html#v:lookupTypeName
12:50:48 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
12:51:21 <olligobber> oh fun a maybe
12:51:28 mp___ joins (~mp@hell.cx)
12:51:41 <merijn> Basically, my comments about [| are basically extrapolation from the behaviour you'd get if you manually write something with an unbound name
12:52:08 <merijn> That's why there's newName if you wanna guarantee no capturing
12:52:35 <merijn> But TH splices with unbound names are "not a bug", and I extrapolate from that, that "quasiquoters with unbound names" are also "not a bug"
12:52:47 Mrbuck joins (~Mrbuck@gateway/tor-sasl/mrbuck)
12:53:37 × cur8or quits (~cur8or@2c0f:fbe1:3:17:bda5:e820:dbb3:5934) (Ping timeout: 272 seconds)
12:54:08 <merijn> otoh, I think Typed TH *can't* allow unbound names, because that, well, wouldn't be typesafe :p
12:54:48 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
12:54:57 × knupfer quits (~Thunderbi@dynamic-046-114-146-074.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
12:55:00 <olligobber> yeah, that's one down side
12:55:48 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
12:56:17 <merijn> Typed TH is critically underrated, tbh
12:56:42 <olligobber> oh yeah, I'm switching all my TH to Typed TH now I know I can
12:56:46 <olligobber> well, where possible
12:57:11 <merijn> You can abuse it to smuggle logic from compile time to TH Haskell time with it :)
12:57:57 cur8or joins (~cur8or@2c0f:fbe1:3:17:bda5:e820:dbb3:5934)
12:58:15 <olligobber> so now I have typed template haskell generating haskell code that generates typed lambda calculus
12:58:26 <olligobber> this just got more meta
12:58:51 <olligobber> wait it doesn't generate typed lambda calculus, those types are only there at compile time
12:58:59 <olligobber> *haskell compile time
12:59:05 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds)
13:00:13 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
13:00:17 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
13:01:15 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
13:01:20 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
13:03:19 Deide joins (~Deide@217.155.19.23)
13:03:26 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
13:03:29 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
13:04:30 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
13:04:34 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
13:05:09 lyxia joins (~lyxia@poisson.chat)
13:05:27 × cur8or quits (~cur8or@2c0f:fbe1:3:17:bda5:e820:dbb3:5934) (Ping timeout: 258 seconds)
13:08:51 arw joins (~arw@impulse.informatik.uni-erlangen.de)
13:08:53 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
13:09:48 × stree quits (~stree@68.36.8.116) (Ping timeout: 260 seconds)
13:10:23 son0p joins (~son0p@181.58.39.182)
13:10:55 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
13:12:49 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
13:13:04 × minoru_shiraeesh quits (~shiraeesh@5.101.59.211) (Ping timeout: 260 seconds)
13:13:28 × arw quits (~arw@impulse.informatik.uni-erlangen.de) (Ping timeout: 256 seconds)
13:14:05 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6)
13:14:59 geekosaur joins (82650c7a@130.101.12.122)
13:16:10 × Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving)
13:17:36 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
13:18:34 × arpl quits (~ARPL@84-107-171-239.cable.dynamic.v4.ziggo.nl) (Quit: Leaving.)
13:19:37 vyorkin joins (~vyorkin@91.193.176.30)
13:20:09 Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it)
13:20:48 Tario joins (~Tario@201.192.165.173)
13:22:41 stree joins (~stree@68.36.8.116)
13:24:15 × vyorkin quits (~vyorkin@91.193.176.30) (Client Quit)
13:25:20 × Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Remote host closed the connection)
13:26:36 Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it)
13:26:36 carlomagno joins (~cararell@148.87.23.13)
13:27:33 cur8or joins (~cur8or@2c0f:fbe1:3:17:bda5:e820:dbb3:5934)
13:27:34 × Mrbuck quits (~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 1.9.1)
13:28:19 urodna joins (~urodna@unaffiliated/urodna)
13:31:00 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
13:31:47 × acidjnk_new quits (~acidjnk@p200300d0c7390952fca35b4a28487713.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
13:32:26 × xff0x quits (~xff0x@2001:1a81:525a:9700:3f22:5bb3:5062:204b) (Ping timeout: 240 seconds)
13:32:29 jamm_ joins (~jamm@unaffiliated/jamm)
13:32:34 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
13:33:38 xff0x joins (~xff0x@2001:1a81:525a:9700:e2d:ed0e:1903:82db)
13:34:05 ClaudiusMaximus joins (~claude@191.123.199.146.dyn.plus.net)
13:34:05 × ClaudiusMaximus quits (~claude@191.123.199.146.dyn.plus.net) (Changing host)
13:34:05 ClaudiusMaximus joins (~claude@unaffiliated/claudiusmaximus)
13:36:26 × jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 240 seconds)
13:36:41 × cur8or quits (~cur8or@2c0f:fbe1:3:17:bda5:e820:dbb3:5934) (Ping timeout: 272 seconds)
13:37:16 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds)
13:37:24 Pickchea joins (~private@unaffiliated/pickchea)
13:39:04 bergey joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net)
13:39:15 motherfsck joins (~motherfsc@unaffiliated/motherfsck)
13:42:11 soft-warm joins (44695313@ip68-105-83-19.sd.sd.cox.net)
13:42:30 minoru_shiraeesh joins (~shiraeesh@5.101.59.211)
13:42:39 krixec joins (~krixec@5.253.207.204)
13:43:36 × raym quits (~ray@45.64.220.3) (Quit: leaving)
13:46:51 × bergey quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
13:47:31 × son0p quits (~son0p@181.58.39.182) (Quit: Lost terminal)
13:47:57 × ixlun quits (~user@213.205.241.202) (Ping timeout: 264 seconds)
13:48:01 bergey`` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net)
13:48:03 × krixec quits (~krixec@5.253.207.204) (Quit: WeeChat 3.0)
13:48:31 × gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
13:48:55 ep1ctetus joins (~epictetus@ip72-194-215-136.sb.sd.cox.net)
13:49:16 × GZJ0X_ quits (~gzj@unaffiliated/gzj) (Ping timeout: 240 seconds)
13:50:46 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
13:52:00 × danvet_ quits (~danvet@212-51-149-181.fiber7.init7.net) (Ping timeout: 272 seconds)
13:52:01 <NieDzejkob_> wait but if you use an undefined operator, it will error out after expansion anyway, won't it?
13:53:25 <merijn> NieDzejkob_: Not if the expansion happens in a place where that operator *is* defined
13:54:22 <merijn> NieDzejkob_: Consider TH code defined in module Foo which does not import +++, now that TH code is *called* in module Bar that *does* import +++
13:54:44 son0p joins (~son0p@181.58.39.182)
13:55:32 × bergey`` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
13:56:09 × soft-warm quits (44695313@ip68-105-83-19.sd.sd.cox.net) (Quit: Ping timeout (120 seconds))
13:59:49 × proteusguy quits (~proteusgu@cm-58-10-208-13.revip7.asianet.co.th) (Quit: Leaving)
14:00:11 proteusguy joins (~proteusgu@cm-58-10-208-13.revip7.asianet.co.th)
14:01:33 bergey joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net)
14:02:40 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 265 seconds)
14:04:37 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
14:05:02 × geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
14:06:40 acidjnk_new joins (~acidjnk@p200300d0c7390952fca35b4a28487713.dip0.t-ipconnect.de)
14:06:40 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
14:07:01 × juri_ quits (~juri@178.63.35.222) (Ping timeout: 265 seconds)
14:08:50 Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
14:09:04 × bor0 quits (~boro@unaffiliated/boro/x-000000001) (Quit: Leaving)
14:09:07 × ubert quits (~Thunderbi@p200300ecdf25d926855ee11db97a074b.dip0.t-ipconnect.de) (Remote host closed the connection)
14:09:26 ubert joins (~Thunderbi@p200300ecdf25d926e0d56ea876869bf6.dip0.t-ipconnect.de)
14:09:34 frozenErebus joins (~frozenEre@94.128.219.166)
14:10:00 <edwardk> I've also become a big fan of typed TH.
14:10:14 <Franciman> mietek has been saying it for a long time
14:10:28 <Franciman> macros must be typed too!
14:10:31 <Franciman> I did not believe
14:11:03 <edwardk> i've been a fan of being able to typecheck name usage in macros at the very least since Dave Herman's old work on that in scheme
14:11:14 dyeplexer joins (~lol@unaffiliated/terpin)
14:11:21 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 264 seconds)
14:11:33 <edwardk> the usecase of being able to judge whether two programs are alpha-equivalent without doing macro expansion, and being able to rename through macros is pretty damn useful.
14:11:45 <Franciman> I think he does think that modal logic can help with code generation and macros
14:11:48 <Franciman> but I don't know
14:11:58 <Franciman> I like calling them magroz
14:12:04 <edwardk> using a modal [] as a staging tool is handy.
14:12:14 <Franciman> it is neat, yes!
14:12:40 <Franciman> <edwardk> the usecase of being able to judge whether two programs are alpha-equivalent without doing macro expansion, and being able to rename through macros is pretty damn useful. <- how do you do it?
14:12:45 <edwardk> i look at the unlifted code i'm writing right now, and 90% of this would melt away if we could just say that the runtime rep was a parameter that had to be partially evaluted before use
14:12:45 <Franciman> ah types
14:12:48 <Franciman> and names in types
14:13:12 geekosaur joins (82650c7a@130.101.12.122)
14:13:14 <edwardk> similarly being able to say masks for shuffles had to be staged would allow primops for those into the language cleanly
14:13:52 <edwardk> (most assembly opcodes for shuffles in simd instructions have to be for a fixed shuffle mask)
14:18:53 <Franciman> why is SIMD so attractive?
14:19:03 <merijn> gots to go fast!
14:19:04 <Franciman> _speed_ ?
14:19:21 <merijn> Franciman: No: *purely functional* speed!
14:19:31 <Franciman> how so
14:19:47 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
14:20:42 alx741 joins (~alx741@186.178.108.179)
14:20:45 <merijn> "trivially from how SIMD works"?
14:21:21 <merijn> As opposed to say, threading, which also gets concurrency involved
14:21:59 <Franciman> neat
14:22:20 Franciman does not know what SIMD
14:22:21 <kuribas> you have CPU level concurrency
14:22:35 <merijn> Franciman: SIMD = Single Instruction, Multiple Data
14:22:43 <kuribas> you need to put instructions in the right order so they can use concurrency.
14:22:45 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
14:22:47 <dminuoso> Franciman: Modern CPUs have specialized execution ports for SIMD .
14:23:05 <dminuoso> (As opposed to something silly as macro op fusion)
14:23:05 <merijn> Franciman: Basically, instead of, say, summing 8 integers one at a time, you get a special instruction that does 8 additions on 8 separate values at once
14:23:32 juri_ joins (~juri@178.63.35.222)
14:24:14 <nshepperd2> SIMD lets you do 4 things at once without also having to decode and issue 4 instructions at once, that's not nothing
14:24:17 <Franciman> this is cool!
14:24:28 <dminuoso> Franciman: So these execution ports don't compute these in multiple steps, but they do them in parallel.
14:24:51 w2321 joins (~user@47.245.54.240)
14:25:04 <dminuoso> Consider for instance, adding two (mathematicals) vectors together.
14:25:19 <merijn> Franciman: https://hackage.haskell.org/package/ghc-prim-0.6.1/docs/GHC-Prim.html#g:33
14:25:39 <dminuoso> With SIMD, you can add say two 16-vector with a single instruction.
14:25:53 heatsink joins (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5)
14:25:59 <dminuoso> (assuming 8-bit numbers)
14:26:17 <dminuoso> Which is much faster than the 16 single instructions you'd need otherwise
14:26:37 <merijn> Well, it's not *that* simple, but yeah
14:26:54 <merijn> For one, SIMD operations will downclock your CPU
14:27:03 <merijn> so sporadically using them can kill your performance
14:27:07 <w2321> getCC = callCC (\c -> return $ fix c)
14:27:22 <dminuoso> (This improves instruction bandwidth, decoder buffer, instruction queue, decoder bottleneck, execution port starvation)
14:27:23 <w2321> main = flip runContT return $ do { goto <- getCC; lift $ print "hello"; goto }
14:27:44 <dminuoso> So on average, this can easily be more than just 16 times faster.
14:27:53 <w2321> why this fixed-point can create a loop here?
14:28:51 <[exa]> hm, is there some useful standalone c-- compiler, ideally suitable for being used as a backend without the rest of ghc?
14:29:16 nbloomf joins (~nbloomf@2600:1700:ad14:3020:6d81:661e:8f9e:1f6f)
14:29:20 <merijn> [exa]: Note that GHC use Cmm, which a kinda custom dialect that diverged from C--
14:29:25 <geekosaur> not any more, I think. plus ghc's cmm kinda drifted away from c--
14:29:33 <merijn> [exa]: Also, no
14:30:11 <merijn> [exa]: C-- was invented for similar reasons/goals as LLVM ASM, but they lost and C-- as a concept is basically dead
14:30:20 <[exa]> guys c'mon don't tell me I'll need to touch llvm again :D
14:30:36 <merijn> [exa]: Basically, yes
14:31:14 × heatsink quits (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5) (Ping timeout: 264 seconds)
14:31:37 <dminuoso> Franciman: In fact, modern superscalar CPUs might even have 3 SIMD execution ports, which could in good situations be executed in parallel.
14:32:16 <dminuoso> (Usually they are interleaved with the regular ALUs, so at the extremes your CPU could either execute 3 single data operations, or 3 multi data operations...)
14:32:48 × fendor quits (~fendor@178.165.129.157.wireless.dyn.drei.com) (Remote host closed the connection)
14:33:08 <dminuoso> So I guess in heavy numerical situations you could expect a speedup of about 35-40 in well generated code
14:33:26 <dminuoso> ideally
14:33:49 <[exa]> ^ optimistic
14:34:05 × ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Read error: Connection reset by peer)
14:34:18 <[exa]> (you'd need to have a really magical compiler)
14:34:57 <dminuoso> Intel C++ Compiler is really good :)
14:35:00 <kuribas> 35 speedup is very very optimistic...
14:35:14 <dminuoso> Well not whole program of course, just talking locally
14:35:55 <kuribas> I did a test once, I got 2.5 speedup or so, over an unboxed vector.
14:35:56 <[exa]> not saying that there aren't such cases but I haven't seen many algorithms where it would be so efficient
14:36:03 × bravespear|2 quits (~Ranhir@157.97.53.139) (Remote host closed the connection)
14:36:17 <dminuoso> kuribas: Yeah, with GHC we're not there yet.
14:36:33 <[exa]> most often you get stuck on caches and memory throughput much earlier than filling up all SSE op slots
14:36:36 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
14:36:42 <dminuoso> [exa]: in linear algebra you can leverage this well, usually
14:36:46 polyphem joins (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
14:37:06 <[exa]> well yeah
14:37:26 <[exa]> esp. if you have a nice 4x4 matrix and a lot of operations to do to it without loading any extra data
14:37:36 <dminuoso> but indeed, getting caches primed properly is a bit difficult
14:37:46 <[exa]> and ideally you can do the whole thing 4x in parallel
14:37:55 <dminuoso> Ideally your code has to be designed to trigger speculative cache prefetching everywhere
14:37:58 <kuribas> unboxed vector: 19.44 ms, C 11.23 ms, SIMD: 3.530 ms
14:38:30 bergey` joins (~user@107.181.19.30)
14:38:41 <dminuoso> (intel for example speculatively fetches the next cache line when you have 2 (?) consecutive cache lines fetched in a row
14:39:13 dminuoso idly wonders whether this could be used to mount yet-another-sidechannel-attack
14:39:20 <[exa]> yes.
14:39:24 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 260 seconds)
14:39:24 <[exa]> :]
14:39:40 <[exa]> a bit hard though, you'd need a lot of memory borders
14:40:10 berberman_ joins (~berberman@unaffiliated/berberman)
14:40:20 × idhugo_ quits (~idhugo@80-62-117-86-mobile.dk.customer.tdc.net) (Ping timeout: 260 seconds)
14:40:21 <dminuoso> The main problem with Haskell SIMD is that you need to use these primops manually
14:40:32 <dminuoso> It'd be much nicer if GHC could vectorize on its own
14:40:47 dminuoso recalls someone doing research on this, think there was a presentation at Haskell eXchange 2019
14:40:50 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
14:41:00 × berberman_ quits (~berberman@unaffiliated/berberman) (Max SendQ exceeded)
14:41:10 <kuribas> if you're interested: https://gist.github.com/kuribas/ddd977968c3a56eac505901acb3e8eee
14:41:15 × bergey quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 256 seconds)
14:41:37 berberman joins (~berberman@unaffiliated/berberman)
14:41:37 <Franciman> dminuoso, merijn all clear, thanks
14:41:43 <[exa]> dminuoso: finding simd possibilities in any "generic" code has been a hot research topic for so long that I guess we can safely assume it's pretty hard at least
14:41:48 <merijn> dminuoso: carter, probably? :p
14:43:59 frozenErebus joins (~frozenEre@94.128.219.166)
14:44:51 <kuribas> [exa]: it would already be nice to have some sort of polymorphic unboxed vector type.
14:45:19 ddellacosta joins (~ddellacos@86.106.143.228)
14:45:47 <edwardk> nshepperd2: 4 things. 8 things, 16 things. depends on the instructions =)
14:46:17 <edwardk> [exa]: my preferred model is to turn things sideways like the intel spmd program compiler. change the problem and it becomes easy
14:46:54 <[exa]> that's easy if you're the programmer, I wouldn't like to do that as a compiler just by looking at your for-cycles
14:47:01 <edwardk> one of my reasons for playing with unlifted data types is i want to unmothball the Int32x8# types, etc. that are sitting in GHC.Prim and use them for stuff without pain or wrappers
14:47:34 <dminuoso> merijn: Ah no. It was Abhiroop Sarkar
14:48:01 <[exa]> if there could be useful structural hints for the compiler (like what kuribas seems to suggest), all of this can be very trivial
14:48:24 <[exa]> (and allow us to hit the memory throughput limit with full force! :] )
14:48:46 <edwardk> that said, i don't think anyone ever tested packInt8X64# :: (# Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#,
14:48:46 <edwardk> Int# #) -> Int8X64#Source
14:49:10 <[exa]> agree.
14:49:11 <edwardk> don't we only supported lifted/unlifted tuples up to 63 or so?
14:49:24 <dminuoso> Lifted, at least.
14:49:36 <dminuoso> I recall there was an unexplained bug causing segfaults if larger tuples were used.
14:49:41 <edwardk> that really needs to use the new Int8# type
14:49:48 × ddellacosta quits (~ddellacos@86.106.143.228) (Ping timeout: 256 seconds)
14:49:50 <geekosaur> I recall asking that and being told that this kind of usage didn't hit the bug
14:49:57 <edwardk> k
14:50:03 <merijn> That's also not a tuple
14:50:16 <merijn> It's an unboxedtuple, and iirc the issue was with the regular tuple constructor
14:50:27 <edwardk> was curious if applied. good to know
14:50:28 × Guest75413 quits (~textual@mskresolve-a.mskcc.org) (Remote host closed the connection)
14:50:55 <edwardk> on the plus side it doesn't apply. on the minus side i need to consider that larger-than-64-ary unboxed tuples might be fed to me =)
14:51:07 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
14:51:42 <edwardk> before i could generally bound the amount of cases to compile to "only" around 17^64.
14:52:18 <edwardk> > 17^64
14:52:20 <lambdabot> 5607005320601059253161325667991103602003892399764752527847859167616581809464321
14:52:27 <edwardk> that may take a while to compile.
14:52:38 crobbins joins (~crobbins@2601:2c1:200:ec50:8c08:9db6:71eb:b930)
14:56:00 l8star__ joins (~l8star@business-90-187-113-149.pool2.vodafone-ip.de)
14:56:49 soft-warm joins (44695313@ip68-105-83-19.sd.sd.cox.net)
14:57:23 kw joins (d4662d5d@212.102.45.93)
14:58:22 × geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
14:58:46 <kw> How are folks building stack projects that use nightly or lts-17.* on NixOS?
14:59:48 <dminuoso> The same way outside NixOS?
14:59:49 tby joins (~tby@193.234.28.91)
14:59:56 × carlomagno quits (~cararell@148.87.23.13) (Ping timeout: 260 seconds)
14:59:57 × Pickchea quits (~private@unaffiliated/pickchea) (Ping timeout: 264 seconds)
15:00:24 × [tby] quits (~tby@193.234.28.91) (Ping timeout: 260 seconds)
15:00:44 <kw> I mean in terms of the GHC version not being in nixpkgs for the current stable version of NixOs.
15:01:05 <merijn> kw: Stack downloads it's own copies of GHC...
15:01:35 × toorevitimirp quits (~tooreviti@117.182.181.253) (Read error: Connection reset by peer)
15:01:39 × geyaeb_ quits (~geyaeb@gateway/tor-sasl/geyaeb) (Remote host closed the connection)
15:01:58 <kw> On nix-based systems, stack apparently uses nix to grab ghc.
15:01:59 geyaeb joins (~geyaeb@gateway/tor-sasl/geyaeb)
15:02:56 carlomagno joins (~cararell@148.87.23.13)
15:03:31 <dminuoso> kw: Yeah, but it should still be the correct version specified in the resolver.
15:03:48 <dminuoso> As it should
15:04:13 × ystael quits (~ystael@209.6.50.55) (Quit: leaving)
15:04:30 ystael joins (~ystael@209.6.50.55)
15:04:35 [tby] joins (~tby@193.234.28.91)
15:06:16 × tby quits (~tby@193.234.28.91) (Ping timeout: 240 seconds)
15:06:21 vicfred joins (~vicfred@unaffiliated/vicfred)
15:06:45 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 256 seconds)
15:06:52 <kw> Sorry, I guess this is more of a nix/nixos question than a haskell question, but their IRC channel seems to be dead except for bets.
15:08:49 <kw> I get `error: attribute 'ghc8104' missing, at (string):1:60 (use '--show-trace' to show detailed location information)` (of course '--show-trace' doesn't seem to work with stack).
15:09:16 <dminuoso> kw: #nixos is very active.
15:09:17 <kw> This, to me, indicates that stack is trying to grab GHC from nix's repo.
15:09:27 <kw> And can't find it.
15:10:07 frozenErebus joins (~frozenEre@94.128.219.166)
15:10:09 <kw> Here's what I get from `ghc --version` :
15:10:09 <kw> The Glorious Glasgow Haskell Compilation System, version 8.10.4
15:10:43 <kw> So it's not using the system GHC even though it's available and the correct version (because it doesn't match the 'attribute'?).
15:11:08 Alleria joins (~textual@zrcout.mskcc.org)
15:11:32 Alleria is now known as Guest30451
15:11:37 <kw> dminuoso: I mean, there is a lot of activity but it seems to be bots posting about updated packages. Haven't had anyone respond to a question I've asked.
15:11:37 <dminuoso> kw: There's probably something different in the input.
15:12:00 geekosaur joins (82650c7a@130.101.12.122)
15:12:13 <kw> Right.
15:12:51 <kw> Stack wants to find a packaged named 'ghc8104', but GHC 8.10.4 is named 'ghc' in nix's unstable repo.
15:13:02 <kw> And as far as I know it is in 19.whatever.
15:13:09 <kw> *is not in 19.whatever
15:13:51 <kw> I'm not really technical enough to fix this myself. Do I just need to write up a nix shell script that names 'ghc' 'ghc8104'?
15:14:07 <kw> Please let me know if this is too off-topic for y'all.
15:14:14 <kw> I know this is not a tech support channel.
15:14:40 <dminuoso> kw: I dont quite understand what your goal here is.
15:15:52 <kw> dminuoso: My goal is to be able to download and build stack-based Haskell packages that use the latest LTS or nightly resolver.
15:16:20 × son0p quits (~son0p@181.58.39.182) (Quit: Lost terminal)
15:16:21 <merijn> kw: Sounds like you'll be adding 8.10.4 support to Nix, then ;)
15:17:13 <dminuoso> kw: I see. You probably have to update nixpkgs accordingly
15:17:17 <kw> merjin: Yeah, or I'll keep manually editing stack.yamls to use 16.31 and hope that nothing will be broken for folks who use the correct version :9
15:17:28 <dminuoso> Id be surprised if 8.10.4 wasnt in nixpkgs already
15:17:38 <carter> One problem I had in simd chats, is that to get the right api you need to have a decent notion of sortah constexpr types and expressions and values. As edwardk has figured out too
15:18:05 <kw> It's not: https://search.nixos.org/packages?channel=20.09&from=0&size=50&sort=relevance&query=ghc8104
15:18:30 <swarmcollective> I may be misunderstanding, but it seems that the primary use case or purpose for stack is to curate "the latest that works together seamlessly" and for nix it is "pull in the curated list from nixpkgs" except that you can then "attempt to mix in other things as desired"...
15:18:55 <dminuoso> swarmcollective: The latter assessment (about nixpkgs) is incorrect.
15:19:16 <dminuoso> nixpkgs is not really a curated list in the same sense, since you can freely intermix things
15:19:16 <swarmcollective> but in either case, if you stray from the curated set of packages, then you have to find out whether there is a combination that actually works together nicely.
15:19:20 <kw> Yeah, they may be working cross-purposes. But the goal for both seems to be reproducibility.
15:19:49 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
15:20:36 hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
15:20:55 <kw> Anyway, thanks for the guidance. I'll open a pull request over at nixpkgs when I get the chance. Until then I'll just keep manually editing stack.yaml files. Lower bar.
15:21:18 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 272 seconds)
15:22:44 <dminuoso> swarmcollective: The speciality of nixpkgs, is that you can have multiple nixpkgs concurrently without a problem, and mix packages together.
15:22:52 <dminuoso> For the most part, this usually works fine
15:23:16 × hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
15:23:31 <swarmcollective> Oh, good point dminuoso. While I've not tried that, I can understand how it is possible.
15:23:58 <dminuoso> swarmcollective: On my system I have multiple nix channels concurrently. :)
15:24:05 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds)
15:24:09 <dminuoso> Thought many nixos users would do the same
15:24:34 <kw> Yeah, I'm using unstable to get ghc8104 and the latest stable one for pretty much everything else.
15:25:15 <kw> Although that's using the hacky 'fetchTarball' method of getting unstable.
15:25:45 arw joins (~arw@impulse.informatik.uni-erlangen.de)
15:26:39 <kw> Which, come to think of it, may be why things are breaking.
15:27:31 × crobbins quits (~crobbins@2601:2c1:200:ec50:8c08:9db6:71eb:b930) (Remote host closed the connection)
15:28:09 crobbins joins (~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056)
15:30:44 × stree quits (~stree@68.36.8.116) (Ping timeout: 260 seconds)
15:34:39 × evanjs quits (~evanjs@075-129-098-007.res.spectrum.com) (Read error: Connection reset by peer)
15:35:52 conal joins (~conal@64.71.133.70)
15:35:57 evanjs joins (~evanjs@075-129-098-007.res.spectrum.com)
15:36:06 × acidjnk_new quits (~acidjnk@p200300d0c7390952fca35b4a28487713.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
15:36:13 × arw quits (~arw@impulse.informatik.uni-erlangen.de) (Ping timeout: 256 seconds)
15:36:19 <swarmcollective> I've always thought Nix would be most powerful in mid to large size organizations where a small group of people could develop the Nix configuration and the larger group could benefit from the reproducability. However, for a single developer keeping pace with the constantly evolving ecosystem, it seems a harder sell.
15:36:52 knupfer joins (~Thunderbi@200116b82ce9b800d5ff9e8423fb530e.dip.versatel-1u1.de)
15:36:52 <swarmcollective> Admittedly, I'm biased by my struggle with learning the Nix language (error messages and all). :D
15:37:35 × danza quits (~francesco@151.53.76.37) (Quit: Leaving)
15:37:36 <[exa]> swarmcollective: the cost of environment unification grows quadratically with number of people involved
15:39:16 <kw> Rebuiliding nixos has given me a lot less grief than upgrading Ubuntu.
15:39:59 <kw> Even with a single-user laptop it's been nice.
15:40:47 × knupfer quits (~Thunderbi@200116b82ce9b800d5ff9e8423fb530e.dip.versatel-1u1.de) (Client Quit)
15:41:05 arw joins (~arw@impulse.informatik.uni-erlangen.de)
15:41:06 knupfer joins (~Thunderbi@200116b82ce9b800d5ff9e8423fb530e.dip.versatel-1u1.de)
15:41:20 <dminuoso> Oh yeah, updating my laptop after a year, just to rollback 10 minutes later.. priceless. :)
15:42:49 × syd quits (~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net) (Ping timeout: 272 seconds)
15:43:33 stree joins (~stree@68.36.8.116)
15:44:15 fendor joins (~fendor@91.141.3.187.wireless.dyn.drei.com)
15:44:21 <swarmcollective> Virtualization is making it easier to test "the latest and greatest", though.
15:45:38 <swarmcollective> Now I have to decide which docker images to keep and which to delete. Even with GHC there have been more than a couple version updates.
15:46:18 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
15:52:48 <ezzieyguywuf> is --allow-newer a cabal-the-executable feature strictly, or is it somehow implemented in cabal-the-library as well?
15:53:46 <merijn> ezzieyguywuf: I thought someone figured out Setup.hs supports it too, but I'm not sure?
15:54:05 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
15:56:45 × aqd quits (~aqd@87-92-163-238.rev.dnainternet.fi) (Ping timeout: 272 seconds)
15:57:41 <ezzieyguywuf> merijn: where might I dig in to try to figure that out?
15:57:46 syd joins (~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net)
15:57:48 kupi joins (uid212005@gateway/web/irccloud.com/x-eebherdsvusazjal)
15:58:09 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 264 seconds)
15:58:42 <merijn> ezzieyguywuf: I mean, you could just try "passing --allow-newer" to Setup.hs? ;)
15:59:03 <ezzieyguywuf> lol
15:59:06 <ezzieyguywuf> fine
15:59:28 × jlamothe quits (~jlamothe@198.251.55.207) (Quit: leaving)
16:00:23 chisui joins (588298cc@88.130.152.204)
16:00:36 hyperisco joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net)
16:00:50 × syd quits (~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net) (Remote host closed the connection)
16:01:38 jamm_ joins (~jamm@unaffiliated/jamm)
16:02:05 × Sheilong quits (uid293653@gateway/web/irccloud.com/x-xqiuutmfxqpmwhnb) (Quit: Connection closed for inactivity)
16:03:40 Ranhir joins (~Ranhir@157.97.53.139)
16:03:58 vgtw_ joins (~vgtw@gateway/tor-sasl/vgtw)
16:04:28 × l8star__ quits (~l8star@business-90-187-113-149.pool2.vodafone-ip.de) (Ping timeout: 258 seconds)
16:04:51 × Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving)
16:05:12 × vgtw quits (~vgtw@gateway/tor-sasl/vgtw) (Ping timeout: 268 seconds)
16:05:13 vgtw_ is now known as vgtw
16:05:19 whald joins (~trem@2a02:810a:8100:11a6:15b2:7454:c339:fb18)
16:05:19 l8star__ joins (~l8star@business-90-187-113-149.pool2.vodafone-ip.de)
16:05:23 hseg joins (~gesh@IGLD-84-228-239-97.inter.net.il)
16:06:37 × chisui quits (588298cc@88.130.152.204) (Killed (Sigyn (Spam is off topic on freenode.)))
16:08:48 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection)
16:09:11 jacks2 joins (~bc8134e3@217.29.117.252)
16:09:11 ddellaco_ joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
16:09:23 <jacks2> hi. how do you feel about abusing <- to seemingly mutate variables (in reality, we are just shadowing names)
16:09:31 × rj_ quits (~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
16:10:01 <glguy> jacks2, it can be better than risking an old version of something getting updated over and over again getting used by accident
16:10:40 [tby] is now known as tby
16:10:47 × tby quits (~tby@193.234.28.91) (Changing host)
16:10:47 tby joins (~tby@unaffiliated/tby)
16:10:47 gioyik joins (~gioyik@gateway/tor-sasl/gioyik)
16:11:08 <dolio> I think it works well.
16:12:29 frozenErebus joins (~frozenEre@94.128.219.166)
16:12:43 <dolio> When you can do it, at least.
16:15:31 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
16:17:25 × Ranhir quits (~Ranhir@157.97.53.139) (Remote host closed the connection)
16:17:44 <jacks2> here is an example, quick and dirty way to add a flag when options aren't complex enough to warrant a dedicated library. https://ideone.com/Ec2NTQ
16:18:08 <jacks2> what do you think? :)
16:20:03 <jacks2> this way I can match positional arguments with case, without worrying position of --some-flag-or-option
16:20:38 <jacks2> without worrying about the position of --some-flag-or-option
16:20:55 Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it)
16:21:21 <monochrom> Yeah pretty neat.
16:22:35 <monochrom> But GHC 8.4 ...
16:23:06 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:23:40 <ezzieyguywuf> unrecognized 'configure' option `--allow-newer=QuickCheck'
16:23:48 <ezzieyguywuf> so I guess it's not in Setup.hs
16:24:05 <monochrom> Right, Setup.hs is different.
16:24:36 <monochrom> Its features and omissions are made for e.g. ubuntu maintainers who make debs.
16:25:04 <merijn> monochrom: Yeah, but I recall last week someone finding it did exist, but maybe my memory is scrambled
16:25:12 <merijn> Could also depend on the version in use :p
16:25:49 <monochrom> So for example the whole automatic dependency solving is gone. (Actually never there in the first place, I think Setup predates cabal-install?) Because a deb maker is by definition a control freak who hand-solve dependencies...
16:25:52 jlamothe joins (~jlamothe@198.251.55.207)
16:25:53 <merijn> https://cabal.readthedocs.io/en/latest/setup-commands.html#cmdoption-runhaskell-Setup.hs-configure-allow-newer
16:26:02 <merijn> monochrom: Sure
16:26:12 <merijn> monochrom: But you still wanna overide them
16:26:29 <merijn> monochrom: If the package bounds say <4.1 you might wanna build it with 4.2
16:26:30 [tby] joins (~tby@193.234.28.91)
16:26:42 <monochrom> A deb maker is also supposed to hand-edit the mypackage.cabal file for this.
16:26:51 <monochrom> or hand-patch.
16:27:19 <monochrom> They already hand-patch all other "source code files" so why not also this.
16:27:28 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
16:27:36 × tby quits (~tby@unaffiliated/tby) (Ping timeout: 240 seconds)
16:28:00 ClaudiusMaximus joins (~claude@191.123.199.146.dyn.plus.net)
16:28:00 <ezzieyguywuf> merijn: that link is for cabal-install though
16:28:01 <geekosaur> early cabal-install just wrapped Setup.hs
16:28:08 × ClaudiusMaximus quits (~claude@191.123.199.146.dyn.plus.net) (Changing host)
16:28:08 ClaudiusMaximus joins (~claude@unaffiliated/claudiusmaximus)
16:28:11 <ezzieyguywuf> and yea, I'm like the deb guy, but for gentoo lol.
16:28:16 × Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds)
16:28:22 <monochrom> So put it this way, Setup is designed to be hostile to non-(linux distro workers or chocolatey workers)
16:28:28 <ezzieyguywuf> we rolled our own thingy that will relax upperbounds, but I wanted to explore using cabal directly if that feature exists
16:28:33 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
16:29:21 <ezzieyguywuf> monochrom: you seem pretty antagonistic against packagers, lol.
16:29:35 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
16:29:45 <monochrom> Darn I have to look up antagonistic
16:29:59 <ezzieyguywuf> --constraint almost seems like it could work, but it says "additional constraints" (emphasis added by me)
16:30:30 <ezzieyguywuf> n. Contending against; acting in opposition; mutually opposing; opposite.
16:30:36 × [tby] quits (~tby@193.234.28.91) (Ping timeout: 240 seconds)
16:30:39 <monochrom> Heh OK. I'm not, but meh.
16:30:43 <ezzieyguywuf> lol ok
16:30:50 tby joins (~tby@193.234.28.91)
16:30:56 × cods quits (~fred@82-65-232-44.subs.proxad.net) (Changing host)
16:30:56 cods joins (~fred@unaffiliated/cods)
16:31:20 <monochrom> But I think the proper way is to patch the thispackage.cabal file.
16:32:05 <merijn> ezzieyguywuf: It is not
16:32:13 <merijn> ezzieyguywuf: THat's the entry for Setup.hs
16:32:26 <monochrom> You don't ask gcc to have a flag for "suppress every occurence of #include <nonstdio.h>", no? You patch the *.c files to delete them.
16:32:29 <merijn> Possibly the docs are wrong, but still
16:32:44 Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362)
16:32:55 <ezzieyguywuf> monochrom: but ghc > gcc
16:33:00 <ezzieyguywuf> 😂
16:33:26 <ezzieyguywuf> merijn: well well well
16:33:30 <ezzieyguywuf> merijn: perhaps it's my version then
16:33:38 <monochrom> Or you patch all the *.hs files to make them compatible to the older base...
16:33:49 <ezzieyguywuf> I'm on 3.2.1.0 of cabal-the-library
16:34:07 <ezzieyguywuf> monochrom: I'm not saying it's unreasonable to expect the packager to patch the .cabal file
16:34:19 <ezzieyguywuf> monochrom: I'm just exploring whether or not I actually have to
16:34:28 <monochrom> I am not antagonistic to packagers, I just observe that they have a very different convention from programmers.
16:34:50 <monochrom> Ah OK then, sorry, yeah I think you have no other option.
16:34:51 <ezzieyguywuf> fair
16:35:41 <ezzieyguywuf> merijn: looks like that version of the docs was added with cabal-the-executable version 3.4
16:35:50 <ezzieyguywuf> doesn't specific the cabal-the-library version though
16:36:06 <ezzieyguywuf> my cabal-the-executable is version 3.2.0.0, but that shouldn't matter
16:37:54 <ezzieyguywuf> OH NICE!!!!
16:37:58 <ezzieyguywuf> there's newer releases
16:38:01 <ezzieyguywuf> I shall dig in to this
16:38:15 <geekosaur> 3.4 just got formally released yesterday
16:39:15 <ezzieyguywuf> don't see anything in the changelog
16:39:22 <ezzieyguywuf> but I'm going to work on this later and see if it was one of the features added
16:41:35 fresheyeball joins (~isaac@c-71-237-105-37.hsd1.co.comcast.net)
16:43:49 × michalz quits (~user@185.246.204.61) (Remote host closed the connection)
16:44:34 × mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew)
16:45:05 × w2321 quits (~user@47.245.54.240) (Quit: ERC (IRC client for Emacs 26.3))
16:45:20 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
16:46:42 × geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
16:46:53 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
16:47:31 × ddellaco_ quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection)
16:47:41 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:47:49 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0.1)
16:48:07 Sheilong joins (uid293653@gateway/web/irccloud.com/x-xfxeeejhmtblxsmq)
16:48:48 brkscnce joins (~obaum@2a02:2450:1020:8283:86fd:d1ff:fe73:fb09)
16:50:01 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-gewvwhbittubyvln)
16:51:40 <brkscnce> hey, I'm wondering, what are the ' characters in this function for? https://paste.tomsmeding.com/Igfg7P1L
16:52:15 <tomsmeding> brkscnce: haskell variable names can include ' characters just like letters
16:52:32 <tomsmeding> a'b'c'd is a fine variable name in haskell
16:52:46 <tomsmeding> (whether you want a name like that is a different question)
16:52:46 <brkscnce> ah, so it's just like f''(x)
16:52:53 <tomsmeding> yep
16:57:50 × Stephnix quits (~Stephnix@195.140.213.38) (Remote host closed the connection)
16:58:15 abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
16:58:52 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:59:27 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
16:59:36 × evanjs quits (~evanjs@075-129-098-007.res.spectrum.com) (Ping timeout: 240 seconds)
17:00:54 evanjs joins (~evanjs@075-129-098-007.res.spectrum.com)
17:05:34 × elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Read error: Connection reset by peer)
17:05:41 <c_wraith> this has the amusing side effect of allowing contractions in haskell names. They probably shouldn't be used that way :)
17:05:49 <minoru_shiraeesh> are my messages in this going to be visible?
17:05:57 <minoru_shiraeesh> *in this chat
17:06:19 elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
17:06:31 <yushyin> minoru_shiraeesh: we see your messages
17:06:43 <minoru_shiraeesh> thanks
17:08:08 <maerwald> yeah, sometimes I'm also amazed how the internet works at all with its shi**y protocols
17:08:45 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
17:09:04 <minoru_shiraeesh> there was a spam wave today, and ops changed settings, so I wasn't sure
17:09:17 <maerwald> yeah, I got a lot of PMs as well
17:09:26 <c_wraith> the setting they changed was about receiving PMs from unregistered accounts
17:10:11 <maerwald> and the messages were really random, not even any conspiracy theories
17:10:55 <minoru_shiraeesh> there was a discussion of twitch streams not so long ago
17:10:56 rj_ joins (~x@gateway/tor-sasl/rj)
17:11:21 <minoru_shiraeesh> any twitch stream watchers online?
17:11:23 <c_wraith> They felt like messages designed to weaken spam filters by training them on nonsense that targeted spam doesn't have. But I'm not sure any IRC server works like that.
17:13:01 cdb joins (~cdb@185.163.110.108)
17:14:31 <minoru_shiraeesh> I need someone to confirm that my stream is visible
17:14:47 <srk> mpv <url> :)
17:15:01 <minoru_shiraeesh> on twitch
17:15:17 <srk> mpv <twitch-url>
17:15:26 <minoru_shiraeesh> what's mpv?
17:15:43 <srk> video media player
17:16:12 <minoru_shiraeesh> and also to discuss cont and contT usage
17:16:36 × kritzefitz quits (~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
17:17:04 <minoru_shiraeesh> I mean, is my stream going to show up in search results or something
17:18:45 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
17:21:02 × borne quits (~fritjof@2a06:8782:ffbb:1337:2133:4ed6:e22f:c3eb) (Ping timeout: 264 seconds)
17:21:19 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
17:21:25 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection)
17:21:33 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
17:21:48 kritzefitz joins (~kritzefit@212.86.56.80)
17:22:28 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:22:56 <brkscnce> is it like a haskell stream?
17:23:01 <brkscnce> do people stream haskell?
17:24:38 coot_ joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
17:24:38 × coot_ quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
17:24:39 × tby quits (~tby@193.234.28.91) (Remote host closed the connection)
17:25:11 tby joins (~tby@193.234.28.91)
17:26:00 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 260 seconds)
17:26:32 × tby quits (~tby@193.234.28.91) (Remote host closed the connection)
17:26:49 <minoru_shiraeesh> there was a discussion of twitch and youtube streamer who stream their haskell coding sessions
17:26:56 tby joins (~tby@193.234.28.91)
17:26:56 × tby quits (~tby@193.234.28.91) (Changing host)
17:26:56 tby joins (~tby@unaffiliated/tby)
17:26:58 <minoru_shiraeesh> *streamers
17:27:07 × tby quits (~tby@unaffiliated/tby) (Remote host closed the connection)
17:27:11 deviantfero joins (~deviantfe@190.150.27.58)
17:27:16 <EvanR> there's some functional music synth packages that you should definitely stream
17:28:21 <minoru_shiraeesh> hmm, not sure if it's a wordplay
17:29:42 <EvanR> aol keyword "live coding"
17:31:06 heatsink joins (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15)
17:32:57 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
17:34:10 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:34:36 × pera quits (~pera@unaffiliated/pera) (Ping timeout: 240 seconds)
17:34:38 borne joins (~fritjof@2a06:8782:ffbb:1337:2133:4ed6:e22f:c3eb)
17:36:10 × saitamaplus quits (uid272474@gateway/web/irccloud.com/x-qsruztdwynmbeqgd) (Quit: Connection closed for inactivity)
17:36:14 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
17:38:07 × chele quits (~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
17:38:27 <ezzieyguywuf> if I start using ghc-9, can I expect to run into a bunch of problems?
17:38:31 <ezzieyguywuf> i.e. packages not compiling?
17:39:01 <ezzieyguywuf> if I resolve these problems, is there any chance that a user still using ghc-8 might run into issues? (i.e. b/c they're using the same package as me)
17:39:45 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
17:39:55 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:40:36 rj_ parts (~x@gateway/tor-sasl/rj) ()
17:40:54 <tomsmeding> ezzieyguywuf: new versions of cabal nicely separate compiled packages for different ghc versions and compilation configurations in ~/.cabal
17:41:32 <ezzieyguywuf> tomsmeding: I'm aware, but we don't have a similar feature in gentoo - we're forced to use the same ghc-version across-the-board on any given system
17:41:39 <tomsmeding> note that this also means that if you switch ghc versions, you'll be rebuilding the world :p
17:42:02 <ezzieyguywuf> so even though I could be developing with ghc-9 on my local machine, the majority of my user-base will remain on ghc-8 until things are sufficiently stable
17:42:05 <tomsmeding> okay, so where are you storing those compiled packages?
17:42:10 Jd007 joins (~Jd007@162.156.11.151)
17:42:12 <tomsmeding> define user-base
17:42:17 <ezzieyguywuf> other gentoo users
17:42:23 <tomsmeding> compilation products between ghc versions are incompatible
17:42:31 × ubert quits (~Thunderbi@p200300ecdf25d926e0d56ea876869bf6.dip0.t-ipconnect.de) (Quit: ubert)
17:42:49 <ezzieyguywuf> yes I'm aware - hrm, I think I've done a poor job phrasing my question.
17:42:53 <tomsmeding> what exactly are you sending to those other gentoo users? just haskell source code, or also compiled things?
17:43:14 × borne quits (~fritjof@2a06:8782:ffbb:1337:2133:4ed6:e22f:c3eb) (Ping timeout: 264 seconds)
17:43:35 <ezzieyguywuf> tomsmeding: neither. similar to a debian package, I'm sending them an "ebuild" that specifies dependencies and how to compile the package. the gentoo package manager uses this to compile the package locally on their systm
17:43:56 <tomsmeding> so you're sending them source code and compilation instructions?
17:44:00 <tomsmeding> roughly
17:44:07 <ezzieyguywuf> tomsmeding: yes roughly.
17:44:24 tby joins (~tby@193.234.28.91)
17:44:24 × tby quits (~tby@193.234.28.91) (Changing host)
17:44:24 tby joins (~tby@unaffiliated/tby)
17:44:32 <tomsmeding> that depends fully on whether the code, and its dependencies, build on both ghc versions
17:44:32 <ezzieyguywuf> so my question is: if I focus on writing these instructions with ghc-9, is there a chance that it won't work when someone follows them ith ghc-8
17:44:45 tby parts (~tby@unaffiliated/tby) ()
17:44:46 <ezzieyguywuf> keeping in mind that I may patch the haskell source files, i.e. to bump dependency versions.
17:44:51 <ezzieyguywuf> i see.
17:44:53 borne joins (~fritjof@200116b8644ab70010f2d07664396fd4.dip.versatel-1u1.de)
17:44:54 <maerwald> ebuilds don't work well with ghc, why even bother?
17:45:01 <tomsmeding> it might not work if you're using a package version in those instructions that only supports ghc 9
17:45:07 <ezzieyguywuf> maerwald: they work all right.
17:45:12 rj_ joins (~x@gateway/tor-sasl/rj)
17:45:13 <maerwald> ezzieyguywuf: not really :p
17:45:18 <ezzieyguywuf> maerwald: yea huh!
17:45:20 <ezzieyguywuf> :)
17:45:20 <tomsmeding> which is unlikely at the moment, but it is theoretically an issue
17:45:23 pera joins (~pera@unaffiliated/pera)
17:45:34 <maerwald> libraries are pinned to one ghc subslot, that's awful
17:45:51 × rj_ quits (~x@gateway/tor-sasl/rj) (Remote host closed the connection)
17:46:00 <ezzieyguywuf> maerwald: it's unfortunate. but I don't know that I'd say "awful" - why so awful?
17:46:10 <tomsmeding> "why even bother" -- because some people use it, and it's nice to help them
17:46:12 <tomsmeding> :)
17:46:13 rj_ joins (~x@gateway/tor-sasl/rj)
17:46:19 <ezzieyguywuf> tomsmeding: right!
17:46:20 <maerwald> because your experiment forces users to upgrade their entire system to newer ghc
17:46:57 <tomsmeding> my understanding was that ezzieyguywuf wanted to create an ebuild that works both for ghc 9 and ghc 8
17:46:57 × hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
17:47:01 <maerwald> so yes, they will run into problems
17:47:03 <maerwald> don't do it
17:47:05 <tomsmeding> as far as that's a thing; I have no idea how gentoo works
17:47:12 <ezzieyguywuf> maerwald: but what's wrong with that? it actually gives the user a choice "Upgrade ghc, and everything haskell-related, or just keep using the older one"
17:47:31 × knupfer quits (~Thunderbi@200116b82ce9b800d5ff9e8423fb530e.dip.versatel-1u1.de) (Remote host closed the connection)
17:47:37 <ezzieyguywuf> tomsmeding: yes, that is what I want to do, and your summary of the potential pitfalls is a good one.
17:47:40 knupfer joins (~Thunderbi@200116b82ce9b80069be852dc8e82fbe.dip.versatel-1u1.de)
17:47:48 <maerwald> ezzieyguywuf: it's the opposite of flexible (e.g. cabal nix-style builds, stack, nix, ...)
17:48:01 <ezzieyguywuf> my main concern is that if I start focusing my ebuild development efforts based on a ghc-9 environment, I wouldn't want to introduce any regressions to those still using ghc-8
17:48:06 <tomsmeding> it's basically like any other programming language where you want a particular project to work with two different compiler/runtime/library/whatever versions
17:48:30 <tomsmeding> all components of your dependency tree need to support both versions, and if they do, you're fine
17:48:57 <tomsmeding> ghc 9 and new cabal have some newer compilation flags that older ghc may not support, but that's just a special case of the same issue
17:49:35 <minoru_shiraeesh> one program can force other programs to recompile?
17:49:38 <ezzieyguywuf> honestly, one of my mid-term goals is to figure out how to update the gentoo EAPI so that we can properly implement something similar to what cabal/ghc does, with a unique hash that identifies a dependencie's ABI and then rebuilds or builds a new one as needed.
17:50:00 × dyeplexer quits (~lol@unaffiliated/terpin) (Remote host closed the connection)
17:50:11 <ezzieyguywuf> minoru_shiraeesh: yes, but to a limited extend within gentoo.
17:50:19 <maerwald> ezzieyguywuf: portage isn't built for this, look at nix
17:50:35 <ezzieyguywuf> maerwald: isn't built for this yet
17:50:42 <ezzieyguywuf> but what's stopping us from making it better.
17:50:51 <maerwald> yes and EAPI changes will make it worse, like subslots did
17:51:05 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection)
17:51:16 × stree quits (~stree@68.36.8.116) (Ping timeout: 240 seconds)
17:51:18 <maerwald> anyway, gl getting that through QA/council
17:51:56 geekosaur joins (82650c7a@130.101.12.122)
17:53:05 klardotsh joins (~klardotsh@75-172-17-41.tukw.qwest.net)
17:56:07 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
17:57:46 <ezzieyguywuf> lol thanks
17:57:55 <ezzieyguywuf> working on becoming an official dev first
17:57:57 <ezzieyguywuf> then that
17:58:20 <ezzieyguywuf> maerwald: I'm interested to hear your thoughts on hwy subslots are so bad. but perhaps this isn't the best forum for that
17:58:36 <maerwald> ezzieyguywuf: yes, I could write pages of blog posts about that
17:58:39 Wuzzy joins (~Wuzzy@p57a2f9e0.dip0.t-ipconnect.de)
18:00:31 conal joins (~conal@64.71.133.70)
18:00:42 <monochrom> Hey gentoo is all about recompiling. >:)
18:01:03 <monochrom> gentoo and xmonad are BFF
18:01:13 <ezzieyguywuf> hah, probably more accurately "gentoo is all about doing things exactly the way you want to"
18:01:17 <ezzieyguywuf> or something like that.
18:01:29 <geekosaur> same could be said of xmonad
18:01:43 <monochrom> QED
18:01:50 <ezzieyguywuf> i've been meaning to give xmonad another shot
18:01:55 <ezzieyguywuf> but i3 Just Works™
18:01:57 <ezzieyguywuf> mostly
18:02:00 <maerwald> monochrom: ppl don't understand that most package managers were built in an era of C-libraries... even for python, they only work ok-ish, perl still causes problems, go and rust are hopeless and haskell ...
18:02:30 <monochrom> haskell, "the impossible has just happened"
18:02:46 <monochrom> @quote impossible.has.just.happened
18:02:46 <lambdabot> No quotes match. Abort, Retry, Panic?
18:02:56 × thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds)
18:02:56 <dminuoso> ezzieyguywuf: The cool thing about xmonad is that you can readily extend xmonad in most places with just plain high level haskell code.
18:02:57 <maerwald> so if you really want to do crazy things with haskell, you gotta swallow the bullet and go with nix, no matter how awful it is
18:02:58 <monochrom> Hrm, let me find it.
18:03:10 <maerwald> (and it is awful)
18:03:39 <justsomeguy> What's awful about Nix?
18:03:48 <monochrom> @quote autrijus impossible.just
18:03:48 <lambdabot> autrijus says: Perl: "Easy things are easy, hard things are possible" <autrijus> Haskell: "Hard things are easy, the impossible just happened"
18:04:06 <dminuoso> ezzieyguywuf: Like, I dont even need something like dmenu/rofi - I can do this first class from xmonad with very simplistic code - and its fully programmable. https://gitlab.com/dminuoso/xmonad-config/-/blob/master/lib/Windows.hs#L90-93
18:04:18 hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
18:04:19 thc202 joins (~thc202@unaffiliated/thc202)
18:04:19 <maerwald> and then... even when you're using nix for haskell, you gotta realize your builds are still not reproducible :p
18:04:28 <dminuoso> (I even built an emacs-style mod-x command for all "commands" my xmonad has)
18:04:44 <dminuoso> cant do this in i3
18:05:08 stree joins (~stree@68.36.8.116)
18:05:14 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
18:07:16 <swarmcollective> minoru_shiraeesh, are you streaming now? I can verify that your stream is working, if so.
18:08:21 <minoru_shiraeesh> several days ago I heard an old podcast episode discussing go's solution (or a lack thereof) for vendoring. They didn't create a tool deliberately, to see what a community creates instead.
18:08:28 <minoru_shiraeesh> but that's old information
18:09:01 <minoru_shiraeesh> swarmcollective: thanks, I'm gonna start
18:09:06 <maerwald> dminuoso: code as config sux :(
18:09:14 <maerwald> because it's a time sink
18:09:20 <maerwald> you realize all the cool things you can do
18:09:25 × ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds)
18:09:33 <maerwald> so I avoid it whenever I can
18:10:02 <geekosaur> it was a time sink when I wrote it; I haven't really touched it since (except to rearrange layouts slightly when switching to my new laptop with its larger screen)
18:10:20 <maerwald> i3 config is kinda well designed
18:10:34 rj_ is now known as rj
18:10:40 <maerwald> and you can still do weird stuff with ibus and shell scripts
18:10:57 <swarmcollective> Am I correct in understanding that given: newtype Thing m a b = Thing { runThing :: m (a -> a) } GHC will ignore b since it is not used?
18:11:00 <dminuoso> maerwald: Im not convinced that `code as config` sucks. There's no clear separation between the two. :)
18:11:14 <dminuoso> swarmcollective: What do you mean by "ignore"?
18:11:17 <dminuoso> It will certainly not ignore it.
18:11:24 <maerwald> dminuoso: turing complete
18:11:30 <maerwald> very clear separation
18:11:32 <swarmcollective> I see the error: Couldn't match expected type `a1 -> a1' with actual type `[Char]' when using where y = Thing $ (15, f, "test")
18:11:42 <dminuoso> So say, if you have `f :: Thing M A Int -> Bool` and you try to pass it `Thing M A Char` it will complain.
18:12:21 <dminuoso> maerwald: The turing argument is deeply flawed, I think.
18:12:49 × borne quits (~fritjof@200116b8644ab70010f2d07664396fd4.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
18:12:49 jneira joins (501e6551@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.101.81)
18:12:51 × hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
18:13:52 <swarmcollective> Somehow it is including "test" in the function (a -> a), though `f` is (Int -> Int)
18:14:48 × cheater quits (~user@unaffiliated/cheater) (Quit: Killed (einride (Requested by panasync)))
18:16:10 × proteusguy quits (~proteusgu@cm-58-10-208-13.revip7.asianet.co.th) (Remote host closed the connection)
18:17:01 hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
18:17:32 <dminuoso> maerwald: That is, if you dont like the full expressivity of a programming language, you dont have to use it. It's there for your convenience.
18:17:32 <swarmcollective> https://paste.tomsmeding.com/dTUU2ZXf
18:17:34 augnun joins (~augnun@2804:14c:658b:41bb:3dc0:3938:a79e:b2ee)
18:17:35 <minoru_shiraeesh> swarmcollective: are you here? I started streaming. I noticed that I can't find my stream by the "haskell" keyword, but I can find it by my nickname
18:17:43 <minoru_shiraeesh> not sure why
18:18:01 Pickchea joins (~private@unaffiliated/pickchea)
18:18:26 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
18:18:40 <maerwald> dminuoso: nope, because you'll have to deal with awful APIs too
18:18:52 <maerwald> you get pulled into the turing completeness
18:19:03 <dminuoso> maerwald: well the "awful API" is equivalent to "awful config format"
18:19:07 <dminuoso> So that's not much of an argument
18:19:10 <maerwald> it isn't
18:19:15 cheater joins (~user@unaffiliated/cheater)
18:19:45 <dminuoso> We're handrolling "code as config" radius servers because freeradius is just pure madness to configure.
18:20:32 <monochrom> My impression is that all things radius are madness.
18:20:52 <dminuoso> Dunno, it's a nice pipe fitting protocol in the networking world
18:21:04 × heatsink quits (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15) (Remote host closed the connection)
18:21:09 <dminuoso> Our small radius server combinator framework is usable
18:21:16 <geekosaur> but networking is madness
18:21:19 <maerwald> there's no way you can build something as easily usable as a good config format once you're sold on a turing complete language, no matter how hard you try
18:21:19 <dminuoso> heh
18:21:27 <monochrom> OK yeah networking. :)
18:21:32 <dminuoso> geekosaur: Fair. Point.
18:21:38 <dminuoso> :)
18:21:56 <maerwald> look at propellor, they tried.. you'll still end up with magnitudes more complex code
18:22:05 <maerwald> compared to awful ansible yaml format
18:22:07 <dminuoso> maerwald: A single example is not exhaustive proof of your claim.
18:22:12 <maerwald> and both achieve the exact same thing
18:22:20 <dminuoso> Consider:
18:22:23 <maerwald> dminuoso: I'm not writing a thesis on it :)
18:22:48 <maerwald> expressivity is our enemy, not our friend
18:22:51 <dminuoso> maerwald: Let's for the sake of argument say that `ini-style` is an acceptable/good config format
18:23:24 <maerwald> the more expressivity, the less thought the guy before you put into the problem
18:23:39 <dminuoso> If we just find a simple data style embedding in Haskell.. say.. `data Section = Section { fieldA :: Int, ... }`, then `Section { fieldA = 10, ...}` is perfectly equivalent to writing `[Section]; fieldA = 10 ...`
18:23:52 <dminuoso> Nothing forces you to use the complete richness of the programming language
18:24:00 <dminuoso> The mere presence of Haskell does not devalue this
18:24:00 <maerwald> dminuoso: the API may
18:24:02 <monochrom> I don't think any inventor of config files intended Turing-completeness. They just took in too many feature requests (each individually not enough for Turing-completeness) and accidentally crossed the line.
18:24:11 martins joins (~martins@81.198.232.69)
18:24:17 <maerwald> dminuoso: an API can force you to use linear types, dependent types and whatnot :)
18:24:23 <dminuoso> monochrom: Sure, Im not talking about "some config language that accidentally became a turing complete language"
18:24:31 <dminuoso> But using a programming langauge for configuration is certainly not horrible..
18:24:36 <monochrom> For support of my belief, just look at Excel and LAMBDA. >:)
18:24:37 × martins quits (~martins@81.198.232.69) (Client Quit)
18:24:38 × rajivr quits (uid269651@gateway/web/irccloud.com/x-lsothnqwqqfmpidy) (Quit: Connection closed for inactivity)
18:24:43 <dminuoso> maerwald: or it does not
18:25:00 <maerwald> dminuoso: yeah, so O(x) is?
18:25:05 <maerwald> worst case
18:25:09 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
18:25:18 <maerwald> don't rely on hope
18:25:36 <dminuoso> monochrom: Or just powerpoint? >:)
18:25:38 <maerwald> (or people)
18:25:56 <dminuoso> maerwald: Just because an API can be bad, doesnt mean all programming language based configuration styles are horrible.
18:25:57 <monochrom> hee hee I love the powerpoint one.
18:26:02 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:26:05 <dminuoso> This rather sounds like you had some bad experience with some.
18:26:22 <maerwald> dminuoso: no, it's about not allowing ppl to make horrible things
18:26:41 <dminuoso> Well, since Im the one writing the config, Im fine wielding a chainsaw.
18:26:43 <dminuoso> I can handle it
18:26:50 <maerwald> if you give 10 ppl C++, you will get 9 horrible solutions
18:27:02 geekosaur guesses you will get 10
18:27:08 <maerwald> ok, fair
18:27:11 <dolio> 'Nothing forces you to use all of Haskell,' doesn't help you operate on those configurations, because nothing is preventing the configuration from using all of Haskell.
18:27:16 monochrom guesses 12.
18:27:33 <dminuoso> dolio: It really depends on whether a seperation between people who configure it and people who program is intended.
18:27:34 <maerwald> I'm trying to be diplomatic here :p
18:27:42 <maerwald> let's assume there's one good C++ programmer
18:27:46 monochrom likes to say "if there are 10 books/people then there are 11 opinions"
18:27:58 knupfer1 joins (~Thunderbi@200116b82c64550001cedb7d844841a5.dip.versatel-1u1.de)
18:28:08 <dolio> No, the people don't matter. It is a limitation on tools.
18:28:08 <monochrom> because you need to take into account how some people can't even make up their minds.
18:28:49 <monochrom> When I have n students I know I'll be getting 1.1n horrible solutions.
18:28:51 <maerwald> really... the reason I prefer haskell over C++ is not because it's more expressive, but it's LESS expressive
18:29:04 <monochrom> This is known as creativity.
18:29:22 × knupfer quits (~Thunderbi@200116b82ce9b80069be852dc8e82fbe.dip.versatel-1u1.de) (Ping timeout: 258 seconds)
18:29:22 knupfer1 is now known as knupfer
18:30:14 <maerwald> and now you need devs with 20 years of experience, who an navigate through all the problems and pitfalls of C++, while still maintaining there mental health
18:30:37 <dminuoso> In our case, we need a radius server that is deeply coupled into code. The code *is* the configuration.
18:30:37 <maerwald> or you just use a non-turing complete config format
18:30:45 <dolio> It doesn't matter if you are the person writing the configuration and the person operating on the configuration. If you increase the capabilities that the configuration can express, you decrease the abilities that things that operate on the configuration can do (at least, without significant difficulty).
18:31:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
18:31:26 <dminuoso> dolio: Seeing as in our business we ship code changes on a weekly basis to some products, I'd consider these code changes as configuration changes.
18:31:33 <dminuoso> They are changes to the runtime behavior of these applications.
18:31:35 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:31:41 <dminuoso> Is this configuration? Depends on who you ask.
18:31:46 <monochrom> #haskell gains a part-time job of tech support for xmonad. That's the evidence I present to this discussion.
18:32:21 <dminuoso> monochrom: Many xmonad support seekers appear to be non-haskellers though.
18:32:44 <dminuoso> In our (arguably limited) case it's expected that the people interacting with the code are proficient in the language.
18:32:59 <maerwald> yes and now they get dragged into a language that many ppl need months to learn and study before they can write a program :>
18:33:04 <geekosaur> funny thing, last time you threw a hissyfit about it (a) it wasn't even about xmonad, but xmobar (b) and was more about arch anyway iirc
18:33:11 <monochrom> That's a failed expectation.
18:33:16 <dminuoso> (And yes, we even have some config file to configure some peripheral stuff, like the binding address/port for the radius server - so that the server guys can tweak it if need be)
18:33:35 × frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 256 seconds)
18:34:10 <maerwald> I'd say yes... you can ofc design your config format turing complete. But then I'd argue you care little about your users. The power users can modify your code anyway.
18:34:57 <maerwald> Not caring about users is fine too. I think XMonad was more of an experiment than a commitment.
18:35:03 <monochrom> I am looking like I'm taking side when I am not, but if "expect fluency in Haskell" fails, why can't "expect no abuse of Turing-completeness" fail too?
18:35:26 <dminuoso> For something like xmonad.. I quite enjoy it. But I didnt enjoy programming xmonad until I became proficient in Haskell
18:36:34 <monochrom> I might even stretch that arch is involved because, only because, xmonad requires so much recompilation...
18:36:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
18:37:15 <dminuoso> "Tt really depends on whether a seperation between people who configure it and people who program is intended."
18:37:20 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:37:21 <dminuoso> (And who the target audience for your config/code is)
18:37:39 <dminuoso> If you just want wide-spread haskell-muggle adoption, then yeah, using haskell to configure your program is probably not the best of ideas.
18:37:51 × kuribas quits (~user@ptr-25vy0ia1ougr5zd5t67.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
18:38:47 otulp joins (~otulp@ti0187q162-6639.bb.online.no)
18:39:22 <maerwald> that's why nix is awful too: it doesn't really have a config format... it's just a turing complete language and everything goes
18:39:39 <maerwald> and you can see that by all the stuff that happens in the ecosystem
18:39:49 <maerwald> which *forces* you to keep up with all that
18:39:59 × fendor quits (~fendor@91.141.3.187.wireless.dyn.drei.com) (Remote host closed the connection)
18:40:04 <dminuoso> maerwald: I have mixed feelings about that part. We're starting to reroll our entire infrastructure (encompassing roughly 200 VMs and 20 servers) in all of nixos.
18:40:16 <dminuoso> Many of these systems need complex intertwined configuration
18:40:17 <monochrom> I also doubt that Turing-completeness is the only factor, FWIW.
18:40:27 <dminuoso> nix is the only power tool we think can manage this.
18:40:30 <maerwald> monochrom: the other factor is git
18:40:31 <dolio> Also SysV init. :þ
18:40:38 <monochrom> It increases probability of awfulness, yes.
18:41:09 <dminuoso> maerwald: So for that use case, nix is really well suited, with all the negative parts it has.
18:42:04 <maerwald> when bugfixing is quick and swift, because you just pushed a new commit... you don't get hate and shame anymore for writing shi**y code. Now everything is agile and open development. No one sleeps a night before doing a release, because you can re-release the next day
18:42:10 <dolio> Just because it's the only tool that can solve the problem doesn't mean it couldn't be designed better.
18:42:26 <dminuoso> Absolutely, but the turing power is certainly not the negative side here.
18:42:34 <monochrom> GHC and Hugs and I believe every published Haskell implementation has unsafePerformIO. maerwald predicted total apocalyse based on that. Somehow it didn't happen. Not even remotely close to awfulness. That's an interesting outcome I can't explain but like to think about.
18:43:04 <dminuoso> From my point, nix suffers mainly from 1) lack of types, 2) lack of a strong module system, 3) complete and utter lack of documentation and centralized ways to find documentation, and 4) some syntax quirks that are really annoying.
18:43:32 <dminuoso> 3) is perhaps the biggest problem of them all
18:43:38 <maerwald> dminuoso: no, it lacks a config format =)
18:43:46 fendor joins (~fendor@91.141.3.187.wireless.dyn.drei.com)
18:43:58 <dminuoso> maerwald: Dunno, in nixos you have very specifiable config formats..
18:44:04 <dminuoso> in form of nixos modules
18:44:27 <dminuoso> But the tie into software is ugly, and usually needs some intermediate configuration language
18:44:35 <maerwald> I mean a non-turing complete one... and a separation between configuration and packaging (there is none)
18:44:57 × deviantfero quits (~deviantfe@190.150.27.58) (Ping timeout: 264 seconds)
18:45:00 <maerwald> most distros have a very thick line between packaging and config
18:45:36 <maerwald> because packaging is awful
18:46:16 <maerwald> and you're sorry about it, but you need more expressiveness, because of the madness you're dealing with (see, someone else forces you into it)
18:47:01 Mrbuck joins (~Mrbuck@gateway/tor-sasl/mrbuck)
18:47:25 jamm_ joins (~jamm@unaffiliated/jamm)
18:47:56 × kritzefitz quits (~kritzefit@212.86.56.80) (Ping timeout: 240 seconds)
18:47:57 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
18:48:50 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:48:55 × abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
18:52:02 × jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
18:52:05 <monochrom> I'll try this theory: Perhaps meaningful names have a much tighter grip on people than I can fathom. People look at the "unsafe" in the name "unsafePerformIO" and are really deterred. Compare to for example I don't know type casting in C and null in Java. They are not spelled "unsafe(int*)" or "unsafeNull", so people use them freely.
18:52:33 × jacks2 quits (~bc8134e3@217.29.117.252) (Quit: http://www.okay.uz/ (EOF))
18:53:33 jhbrown94 joins (32e080ea@50-224-128-234-static.hfc.comcastbusiness.net)
18:53:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
18:54:36 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:54:39 worc3131 joins (~quassel@2a02:c7f:dcc4:6500:217b:6c7a:eac3:3be9)
18:54:58 <maerwald> monochrom: I'm not sure if "unsafeFoo" in the nodejs world would make any difference to coding practices
18:55:10 <swarmcollective> unsafeNull and unsafeCast would be Excellent! :D
18:56:25 × urodna quits (~urodna@unaffiliated/urodna) (Ping timeout: 240 seconds)
18:57:32 <swarmcollective> At least they are starting to put Optional<> in java frameworks instead of relying on null. ;) That's a step.
18:58:25 × augnun quits (~augnun@2804:14c:658b:41bb:3dc0:3938:a79e:b2ee) (Ping timeout: 272 seconds)
18:58:28 <ski> monochrom : syntactic salt has a place, yes
18:59:33 <maerwald> monochrom: and in C++ they would probably consider unsaf_foo a faster foo and not worry
18:59:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
19:00:16 <maerwald> "only breaks with -O3, so don't use -O3"
19:00:28 <swarmcollective> True, safety is "slower". Ha!
19:00:32 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:00:57 <dolio> It might be laziness.
19:01:02 heatsink joins (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15)
19:01:11 <dolio> Sprinkling unsafePerformIO around just doesn't work very well.
19:01:22 × Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
19:01:42 <dolio> So it doesn't matter that it exists, it's better to do things the right way.
19:01:44 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
19:02:20 <maerwald> well, the only good reason to use it IS in fact performance optimizations hidden under a seemingly pure API surface
19:02:36 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 240 seconds)
19:02:53 <dolio> Not seemingly, effectively.
19:02:58 × jhbrown94 quits (32e080ea@50-224-128-234-static.hfc.comcastbusiness.net) (Quit: Connection closed)
19:03:15 <dolio> If it doesn't actually act pure, it's going to be really annoying.
19:03:16 <maerwald> dolio: that probably depends on the compiled, I'd say
19:03:25 berberman_ joins (~berberman@unaffiliated/berberman)
19:03:31 <maerwald> so sure, they'll have tesed it with GHC
19:03:43 <maerwald> but I don't bet money that it works somewhere else
19:04:01 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
19:04:07 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds)
19:05:01 <maerwald> my pain is affecting my typing accuracy... it's a good sign to stop and watch netflix :D
19:05:53 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
19:06:17 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:07:06 Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net)
19:07:21 apache8080 joins (~rishi@wsip-70-168-153-252.oc.oc.cox.net)
19:10:28 Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
19:10:45 × arw quits (~arw@impulse.informatik.uni-erlangen.de) (Ping timeout: 264 seconds)
19:16:02 × geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
19:16:16 × fryguybob quits (~fryguybob@cpe-74-65-31-113.rochester.res.rr.com) (Ping timeout: 240 seconds)
19:17:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
19:17:35 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:18:09 pengjiz joins (~user@2601:547:902:6d00::1)
19:20:39 esp32_prog joins (~esp32_pro@185.195.233.147)
19:23:07 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
19:23:20 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:23:31 deviantfero joins (~deviantfe@190.150.27.58)
19:24:48 × Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
19:25:02 Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net)
19:27:07 × kupi quits (uid212005@gateway/web/irccloud.com/x-eebherdsvusazjal) (Quit: Connection closed for inactivity)
19:27:48 arw joins (~arw@impulse.informatik.uni-erlangen.de)
19:28:45 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
19:29:03 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
19:29:05 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:29:19 × eyenx quits (~eyenxeyen@unaffiliated/eye/x-1653358) (Remote host closed the connection)
19:31:14 × Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
19:31:31 Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net)
19:31:50 eyenx joins (~eyenxeyen@unaffiliated/eye/x-1653358)
19:32:21 × arw quits (~arw@impulse.informatik.uni-erlangen.de) (Ping timeout: 264 seconds)
19:33:03 × eyenx quits (~eyenxeyen@unaffiliated/eye/x-1653358) (Remote host closed the connection)
19:33:30 fryguybob joins (~fryguybob@cpe-74-65-31-113.rochester.res.rr.com)
19:33:38 × hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
19:34:13 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
19:34:47 × tachylyte quits (~tachylyte@host86-142-90-26.range86-142.btcentralplus.com) (Quit: leaving)
19:34:47 geekosaur joins (82650c7a@130.101.12.122)
19:34:50 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:36:13 × Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
19:39:11 × carlomagno quits (~cararell@148.87.23.13) (Remote host closed the connection)
19:39:19 hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
19:40:09 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
19:40:47 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:41:43 Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net)
19:43:18 aarvar joins (~foewfoiew@2601:602:a080:fa0:49bc:1f9e:3510:3fc5)
19:44:27 [1]MrMobius joins (~MrMobius@208.58.206.154)
19:44:46 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
19:45:02 × MrMobius quits (~MrMobius@208.58.206.154) (Ping timeout: 264 seconds)
19:45:03 [1]MrMobius is now known as MrMobius
19:48:45 joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd)
19:49:04 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
19:50:26 × Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving)
19:54:21 contiver joins (~contiver@84-115-64-144.wifi.dynamic.surfer.at)
19:57:16 × leo___ quits (~leo@cpc96810-rdng27-2-0-cust409.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
19:59:56 × Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds)
20:00:21 × pera quits (~pera@unaffiliated/pera) (Quit: leaving)
20:01:58 epicte7us joins (~epictetus@ip72-194-215-136.sb.sd.cox.net)
20:02:21 × contiver quits (~contiver@84-115-64-144.wifi.dynamic.surfer.at) (Ping timeout: 264 seconds)
20:03:51 kritzefitz joins (~kritzefit@212.86.56.80)
20:04:45 × ep1ctetus quits (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 240 seconds)
20:05:21 × petersen quits (~petersen@redhat/juhp) (Ping timeout: 264 seconds)
20:07:29 × forgottenone quits (~forgotten@176.42.20.136) (Quit: Konversation terminated!)
20:07:53 petersen joins (~petersen@redhat/juhp)
20:08:25 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
20:08:46 eyenx joins (~eyenxeyen@unaffiliated/eye/x-1653358)
20:10:16 × Rudd0 quits (~Rudd0@185.189.115.108) (Ping timeout: 240 seconds)
20:10:25 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds)
20:10:56 Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362)
20:11:22 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
20:11:27 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
20:12:36 <justsomeguy> Is it impossible to define an instance of Functor for the type ''data K a b = K a''? I keep on getting type errors if I try something like ''instance Functor (K a) where { fmap f (K a) = K (f a) }''.
20:12:56 × stree quits (~stree@68.36.8.116) (Ping timeout: 240 seconds)
20:12:58 <koz_> justsomeguy: That's just Const.
20:13:07 <koz_> So it is very possible.
20:13:33 <koz_> The problem you're having is that 'f' has a different type to what you're thinking.
20:13:41 <koz_> It's not a -> c, it's _b_ -> c.
20:14:02 <koz_> In Const, the second type parameter is phantom.
20:14:08 <koz_> So you can change it to whatever whenever.
20:14:20 <koz_> So you just ignore the function and rebuild the Const with the same value 'inside' it always had.
20:14:38 <koz_> You can think of 'Const a b' as 'an a pretending to be a b'.
20:14:51 <koz_> So we can have it pretend to be a c, and you only pass the function so fmap is happy.
20:14:56 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
20:15:04 carlomagno joins (~cararell@148.87.23.11)
20:16:16 × notzmv quits (~zmv@unaffiliated/zmv) (Ping timeout: 240 seconds)
20:17:55 acidjnk_new joins (~acidjnk@p200300d0c73909529c208343cf3ed1b3.dip0.t-ipconnect.de)
20:17:57 __minoru__shirae joins (~shiraeesh@77.94.25.253)
20:18:09 Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it)
20:18:13 × minoru_shiraeesh quits (~shiraeesh@5.101.59.211) (Ping timeout: 260 seconds)
20:18:23 <kw> How can I convince folks that `fromIntegral` is worse than `unsafePerformIO`?
20:18:24 <monochrom> fmap f (K a) = K a
20:19:07 <monochrom> You can't. It's falsee.
20:19:24 <kw> Any way to get it renamed to `unasafeCoerceIntegral` ?
20:19:36 <koz_> kw: Write your own Prelude.
20:19:49 <monochrom> Over my dead body and from merijn's cold dead claws.
20:19:53 <EvanR> how is fromIntegral bad
20:20:09 <koz_> EvanR: I think kw got bitten by implicit narrowing.
20:20:17 <monochrom> "I disagree with fromIntegral but I'd defend its rights with my life"
20:20:24 <koz_> monochrom: Wait, merijn has claws and not tentacles?
20:20:25 <kw> Because it's unsafe coercion of integral types.
20:20:25 <kw> koz_: yeah, pretty much.
20:20:36 <monochrom> fromIntegral is bad but "worse than unsafePerformIO" are you serious.
20:20:39 <EvanR> is unsafe the "unsustainable"
20:20:43 <EvanR> the new
20:20:55 <int-e> it doesn't break the type system, so it's safe :P
20:20:56 × thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds)
20:21:08 <monochrom> s/serious/lunatic/
20:21:09 <merijn> fromIntegral is terrible, but unsafePerformIO is infinitely worse
20:21:25 <kw> Yeah, and `unsafePerformIO` is just the natural Comonadic extraction function for the IO monad.
20:21:33 <EvanR> in some cases i would like a more targeted conversion function
20:21:35 × deviantfero quits (~deviantfe@190.150.27.58) (Quit: WeeChat 3.0)
20:21:36 <merijn> kw: Except it's not
20:21:49 <koz_> Not least of all because IO isn't a comonad.
20:21:49 <merijn> kw: Because IO doesn't obey Comonad laws
20:22:18 <EvanR> is quantum mechanics a comonad though?
20:22:24 <monochrom> Use https://hackage.haskell.org/package/int-cast if you're concerned.
20:22:24 <int-e> impurity aside, unsafePerformIO does break the type system by allowing you to make a polymorphic ioref
20:22:26 <merijn> I mean, if IO is a Comonad, then so is literally any type of kind "* -> *" by virtue of unsafeCoerce
20:22:31 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
20:22:39 <kw> Let me just put it this way: people get that `unsafePerformIO` is unsafe, but I see `fromIntegral` thrown around like candy with no indication of the intervening types.
20:22:41 <monochrom> But call-for-crusades will get you nowhere.
20:22:57 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
20:22:59 <kw> Far enough.
20:23:07 <EvanR> monochrom: for instance, convert from int to double
20:23:32 <int-e> I agree that fromIntegral should make you pause and think. I don't agree with the idea that it's unsafe.
20:23:46 <merijn> int-e: I do
20:23:51 <kw> monochrom: int-cast looks awesome; thanks!
20:23:52 <int-e> it's not even a partial function
20:24:01 <merijn> Anything that can be reviewed by 4 people and have bugs is unsafe >.>
20:24:25 <monochrom> unsafeUseComputer
20:24:26 <EvanR> > fromIntegral (-1) :: Natural
20:24:27 <lambdabot> error:
20:24:28 <lambdabot> Not in scope: type constructor or class ‘Natural’
20:24:34 <kw> :t fromIntegral :: Integer -> Word
20:24:35 <lambdabot> Integer -> Word
20:24:36 <int-e> merijn: okay, just prefix all function names wity "unsafe" then
20:25:03 <int-e> . o O ( unsafeId :: a -> a )
20:25:03 <merijn> int-e: There's plenty of functions where that's not the case
20:25:23 <kw> Is 'Word' even a numeric type? Is it supposed to be a machine-width natural, or just a sequence of bits?
20:25:28 <monochrom> I'm pretty sure all shrink-wrap software and downloaded software already says "I am unsafe".
20:25:49 <fendor> > fromIntegral (2 ^ 64 :: Integer) :: Int
20:25:51 <lambdabot> 0
20:25:55 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
20:26:20 <koz_> kw: It's both. Unfortunately.
20:26:24 <monochrom> Except for some IBM software, the EULA of which is 30 pages detailing your rights.
20:26:31 <kw> > fromIntegral (-1 :: Int) :: Word
20:26:32 <lambdabot> 18446744073709551615
20:26:37 stree joins (~stree@68.36.8.116)
20:26:42 <int-e> > S.length $ iterate (\x -> x <> x) (S.singleton ()) !! 63
20:26:42 monochrom was impressed with OS/2 EULA
20:26:43 <lambdabot> error:
20:26:43 <lambdabot> Not in scope: ‘S.length’
20:26:43 <lambdabot> Perhaps you meant one of these:
20:26:52 <EvanR> Word is a number. Sequence of bits is up to your interpretation
20:27:40 <justsomeguy> Thanks for the enlightenment, koz_.
20:27:52 <int-e> > Seq.length $ iterate (\x -> x <> x) (Seq.singleton ()) !! 63 -- crusaders take note
20:27:53 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
20:27:53 <lambdabot> -9223372036854775808
20:28:09 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
20:28:25 <kw> At least Seq explicitly has an unchecked maximum size.
20:28:55 <int-e> and fromIntegral does modular reduction
20:29:00 int-e shrugs
20:29:46 <koz_> justsomeguy: No problem.
20:29:57 <EvanR> toInteger seems solidly total, fromInteger might not be
20:29:59 <merijn> int-e: The problem is that it's API makes it *incredibly* awkward to do what people actually *want* to do
20:30:16 <merijn> What people *want* is bounds checked conversion, and that doesn't exist
20:30:23 <int-e> I would rather reserve "unsafe" for functions that are almost always dubious... and I think fromIntegral doesn't clear that threshold to my mind.
20:30:26 × ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Quit: ->)
20:30:28 <kw> I love `fromInteger` and `toInteger` . It's `fromIntegral` I can't stand.
20:30:32 <merijn> Building your own bounds checked conversion on top of fromIntegral is borderline impossible
20:31:10 <EvanR> fromInteger is potentially 'as bad' as head, tail
20:32:50 × hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
20:33:25 × Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
20:33:32 conal joins (~conal@64.71.133.70)
20:34:03 Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net)
20:34:35 <justsomeguy> Why is Functor defined only for type constructors of one argument? Intuitively, I'd think that it's desirable to be able to map over other structures, too, and I think the functor laws can still be upheld for type constructors with more arguments, too.
20:34:57 <glguy> :t fmap
20:34:58 <lambdabot> Functor f => (a -> b) -> f a -> f b
20:34:59 <koz_> justsomeguy: Because Functor means something quite specific.
20:35:02 <kw> justsomeguy: How would you define it?
20:35:11 <merijn> justsomeguy: N-functors are a thing conceptually, but Haskell doesn't let you define them
20:35:14 <koz_> If you're looking for stuff that goes beyond that, consider Bifunctor and Profunctor.
20:35:26 <koz_> (however, these are fairly different)
20:35:29 son0p joins (~son0p@181.58.39.182)
20:36:37 <justsomeguy> kw: Intuitively: A structure preserving mapping between some container and that same container with some operation performed on the "contained" stuff.
20:36:44 hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
20:37:13 <kw> justsomeguy: And how would you define the operation on multiple types of stuff?
20:37:18 vchlup joins (~vchlup@nat.brnet.cz)
20:37:44 × Pickchea quits (~private@unaffiliated/pickchea) (Quit: Leaving)
20:38:09 <justsomeguy> The operation would have to be overloaded to support all the types of contained stuff, or it would be invalid.
20:38:27 <kw> Like, say I have `xy :: (String, Int)`. What does mapping over that look like?
20:39:25 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
20:40:59 <kw> Does your ` fmap'` take a `(String -> a, Int -> b)` ?
20:41:03 × worc3131 quits (~quassel@2a02:c7f:dcc4:6500:217b:6c7a:eac3:3be9) (Remote host closed the connection)
20:42:01 <kw> Could maybe  do something like that with a type family.
20:42:17 worc3131 joins (~quassel@2a02:c7f:dcc4:6500:cf0e:3346:8766:ab20)
20:42:32 <kw> But working with type-level tuples always seems like a huge pain in the ass.
20:42:43 × DTZUZU quits (~DTZUZU@205.ip-149-56-132.net) (Read error: Connection reset by peer)
20:43:00 DTZUZU joins (~DTZUZU@205.ip-149-56-132.net)
20:43:12 <justsomeguy> Hmm... let's say the code is ''fmap (\x -> take 3 $ repeat x)'', and it's applied to ''xy''. ("this",3) would become (["this","this","this"],[3,3,3]). Does that make sense?
20:43:25 ixlun joins (~user@213.205.241.202)
20:43:59 <kw> justsomeguy: But then it would be useless for, say, adding 1 to the Int.
20:44:15 <brkscnce> hey, if I'm defining a static chessboard I'm going to be traversing to perform checks, should I go with immutable arrays as a data structure?
20:44:21 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
20:44:26 <koz_> In fact, the only reason this works is because 'take 3 . repeat' doesn't care whatsoever about the type of its argument.
20:44:46 <koz_> So instead of (a -> b), your fmap would have to take '(forall a . a -> b)'.
20:44:58 <justsomeguy> kw: If the tuple was instead (1 :: Int, 2 :: Float), then you can do ''fmap (+3) (1 :: Int, 2 :: Float)'' and get ''(4,5.0)''.
20:44:58 × klardotsh quits (~klardotsh@75-172-17-41.tukw.qwest.net) (Read error: Connection reset by peer)
20:45:13 <koz_> justsomeguy: Yeah, except now what signature to give fmap?
20:45:23 <koz_> 'Do the sensible thing' is not a signature.
20:45:32 <koz_> Neither is 'allow every special case I can come up with'.
20:46:59 <justsomeguy> Yeah, I haven't thought it through. I don't see why it isn't possible to create a new type signature that's polymorphic, though.
20:47:08 klardotsh joins (~klardotsh@75-172-17-41.tukw.qwest.net)
20:47:10 × heatsink quits (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15) (Remote host closed the connection)
20:48:12 <koz_> You could come up with variants - I provided two. But for arbitrary N, N-functors aren't really something you can define in Haskell without resorting to really gory methods.
20:48:13 <kw> In the end, it's much simpler and easier to have 'things that are functors in their rightmost type parameter' and 'things that are functors in ther rightmost two type parameters' than to try to define 'things that are functors in a type-level tuple of their type parameters'.
20:49:01 <koz_> Since your fmap becomes a dependent type on how many type parameters you feel like having, and their types.
20:49:11 <koz_> s/a dependent type/dependently typed/
20:49:29 deviantfero joins (~deviantfe@190.150.27.58)
20:49:34 <justsomeguy> Oh, I guess it is.
20:49:38 <koz_> Since you'd need the equivalent of '[arbitrary tuple of these types] -> [arbitrary tuple of same shape, but different types]'.
20:49:55 <koz_> _Can_ you spell that in Haskell? If you use GHC, throw a tonne of extensions at it, then ladle ten kinds of gore on top, yes.
20:50:10 <koz_> Will that be usable, give sensible error messages, and not compile forever? Don't count on it.
20:50:52 <justsomeguy> Is is possible instead to just not have our hypothetical NaryFunctor defined for tuples, but only for types like [] a or Map.
20:50:55 <justsomeguy> ?
20:51:02 <koz_> justsomeguy: See what I said above.
20:51:07 <koz_> It still applies here.
20:51:20 <koz_> This is not a problem of what instances you allow.
20:51:26 <koz_> It's a problem of spelling the type class itself.
20:52:53 <EvanR> are you trying to lift multiple functions at once
20:53:00 <EvanR> like bifunctor
20:53:03 heatsink joins (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15)
20:54:09 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
20:54:14 <EvanR> because that by itself already leads you to variadic functions
20:54:31 p-core joins (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
20:55:35 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
20:57:59 × p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Client Quit)
20:58:12 <justsomeguy> EvanR: I was just curious as to why Functor is implemented the way it is. I don't have a particular use case in mind.
20:59:44 <monochrom> Are you forgetting that "instance Functor ((,) a)" pretty much ties your hands? Is that already covered?
21:00:05 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
21:00:19 <monochrom> For conceptuallly "fmap f (x, y) = (f x, f y)", don't use (,), write your own "data Pair = MkPair a a".
21:00:35 <monochrom> err data Pair a = MkPair a a
21:01:08 <monochrom> Extra credit for seeing how to make it a lawful Monad instance.
21:01:32 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
21:01:38 <monochrom> An MSc certificate for seeing why it is the only choice for a lawful Monad instance.
21:01:51 <monochrom> (I just got it last night.)
21:02:35 <EvanR> yes master
21:05:18 <monochrom> Or rather, "∀b. (x->y) -> (a,x) -> (a,y)" pretty much ties your hands.
21:05:43 × hiroaki_ quits (~hiroaki@2a02:8108:8c40:2bb8:4e81:bfc6:428b:4821) (Ping timeout: 272 seconds)
21:06:15 <monochrom> err, ∀x,y . (x->y) -> (a,x) -> (a,y)
21:06:25 zebrag joins (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr)
21:07:26 × heatsink quits (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15) (Remote host closed the connection)
21:08:02 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
21:08:56 usr25 joins (~usr25@unaffiliated/usr25)
21:09:30 <EvanR> are there 4 ways to make Pair a monad
21:09:53 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:11:25 × carlomagno quits (~cararell@148.87.23.11) (Ping timeout: 260 seconds)
21:11:53 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
21:13:04 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
21:14:42 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
21:14:43 × klardotsh quits (~klardotsh@75-172-17-41.tukw.qwest.net) (Read error: Connection reset by peer)
21:14:48 pavonia^\_^\ joins (~user@unaffiliated/siracusa)
21:15:01 × kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection)
21:15:28 <Ferdirand> interesting
21:16:18 <ezzieyguywuf> dminuoso: but why reimplement dmenu/rofi in xmonad, if it's already a great standalone? #unix-philosophy, no?
21:16:35 <Ferdirand> if List is a monad, and lists of at least two elements are a closed subset under join/pure/fmap
21:16:53 <Ferdirand> and if pairs are projections of the first and last element of such lists
21:17:23 hiroaki_ joins (~hiroaki@2a02:8108:8c40:2bb8:4773:d7d4:420a:eae0)
21:17:45 × nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
21:18:09 nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
21:18:16 <Ferdirand> non-empty lists, rather
21:20:31 <dolio> Why reimplement dwm in Haskell and call it xmonad?
21:21:04 <geekosaur> because C is a lousy language for EDSLs
21:21:16 <koz_> s/for EDSLs//
21:21:31 <geekosaur> (I'm more or less quoting sjanssen)
21:22:41 klardotsh joins (~klardotsh@75-172-17-41.tukw.qwest.net)
21:24:16 × apache8080 quits (~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 240 seconds)
21:31:00 × ixlun quits (~user@213.205.241.202) (Remote host closed the connection)
21:31:20 × Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving)
21:31:46 apache8080 joins (~rishi@wsip-70-168-153-252.oc.oc.cox.net)
21:34:35 × Mrbuck quits (~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 1.9.1)
21:36:13 × son0p quits (~son0p@181.58.39.182) (Quit: leaving)
21:36:33 × deviantfero quits (~deviantfe@190.150.27.58) (Ping timeout: 246 seconds)
21:38:01 × danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
21:41:40 × geekosaur quits (82650c7a@130.101.12.122) (Quit: Connection closed)
21:42:33 × esp32_prog quits (~esp32_pro@185.195.233.147) (Ping timeout: 264 seconds)
21:42:49 × fresheyeball quits (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
21:43:50 son0p joins (~son0p@181.136.122.143)
21:44:21 × worc3131 quits (~quassel@2a02:c7f:dcc4:6500:cf0e:3346:8766:ab20) (Ping timeout: 272 seconds)
21:45:18 esp32_prog joins (~esp32_pro@185.195.233.147)
21:45:19 × kw quits (d4662d5d@212.102.45.93) (Quit: Connection closed)
21:47:03 × alx741 quits (~alx741@186.178.108.179) (Ping timeout: 246 seconds)
21:48:10 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:6d81:661e:8f9e:1f6f) (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:48:30 kw joins (d4662d5d@212.102.45.93)
21:49:30 deviantfero joins (~deviantfe@190.150.27.58)
21:52:26 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
21:54:12 irc_user joins (uid423822@gateway/web/irccloud.com/x-fajfitegppdbkpgx)
21:54:20 fendor_ joins (~fendor@91.141.0.220.wireless.dyn.drei.com)
21:55:58 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
21:56:39 <monochrom> EvanR: No, there is only one way. Check the monad identity laws, they force your hands.
21:57:25 ddellacosta joins (~ddellacos@86.106.143.111)
21:57:31 <monochrom> In this case I think the join version of the monad definition is the easiest to work with.
21:57:47 × fendor quits (~fendor@91.141.3.187.wireless.dyn.drei.com) (Ping timeout: 265 seconds)
21:58:51 × infinisil quits (~infinisil@NixOS/user/infinisil) (Quit: Configuring ZNC, sorry for the joins/quits!)
21:59:14 × soft-warm quits (44695313@ip68-105-83-19.sd.sd.cox.net) (Quit: Connection closed)
21:59:14 <dolio> Ferdirand: It is not closed under pure. The monad on `Pair` is different than the one for lists.
21:59:23 infinisil joins (~infinisil@NixOS/user/infinisil)
22:00:12 alx741 joins (~alx741@181.196.69.27)
22:00:34 Rudd0 joins (~Rudd0@185.189.115.108)
22:02:06 <monochrom> This is such a litmus test of how much you really "understand" monads. :)
22:03:08 × dhouthoo quits (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 3.0)
22:03:08 <monochrom> I.e., you are not done just because you have coded up a candidate that type-checks and adds no bottom.
22:03:09 × ddellacosta quits (~ddellacos@86.106.143.111) (Remote host closed the connection)
22:04:25 <monochrom> To be fair, being able to code up total, type-checked functions is already better than the level of "I have read a blog that says monads are about sequencing".
22:04:54 × DTZUZU quits (~DTZUZU@205.ip-149-56-132.net) (Read error: Connection reset by peer)
22:05:27 DTZUZU joins (~DTZUZU@205.ip-149-56-132.net)
22:05:53 × vk3wtf quits (~doc@203.221.224.44) (Quit: WeeChat 2.7.1)
22:06:12 vk3wtf joins (~doc@203.221.224.44)
22:07:50 heatsink joins (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15)
22:08:13 <EvanR> i have basic category theory by tom leinster. It doesn't even cover monads!
22:08:20 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
22:08:23 <infinisil> I wouldn't be surprised if idris could write a monad instance automatically
22:08:25 × deviantfero quits (~deviantfe@190.150.27.58) (Ping timeout: 240 seconds)
22:08:40 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
22:10:11 × vk3wtf quits (~doc@203.221.224.44) (Client Quit)
22:12:38 × heatsink quits (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15) (Ping timeout: 264 seconds)
22:12:45 vk3wtf joins (~doc@203.221.224.44)
22:13:05 <NieDzejkob_> I want to make my expressions compare as equal when they're alpha-equivalent. Is there a more concise way of writing this Eq instance? https://paste.tomsmeding.com/jWzci40D
22:13:53 wpcarro_ is now known as wpcarro
22:14:11 × vk3wtf quits (~doc@203.221.224.44) (Client Quit)
22:14:23 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
22:14:30 <monochrom> If Lam doesn't have the Symbol field, then it's "deriving Eq". :)
22:14:32 vk3wtf joins (~doc@203.221.224.44)
22:15:31 <int-e> well, thius looks wrong...
22:15:39 zmv- joins (~zmv@191.255.89.231)
22:16:00 <int-e> wouldn't it make \x. x = \y. x
22:16:58 <int-e> Or is "Bound" a de Bruijn index?
22:19:17 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
22:20:38 Tops2 joins (~Tobias@dyndsl-091-249-082-052.ewe-ip-backbone.de)
22:20:56 × knupfer quits (~Thunderbi@200116b82c64550001cedb7d844841a5.dip.versatel-1u1.de) (Ping timeout: 240 seconds)
22:23:00 <koz_> What is the kind of IsList's type parameter?
22:23:31 <koz_> I assume Type - am I right?
22:23:34 <int-e> NieDzejkob_: Anyway, no, I don't think it gets more concise than that... well, not without resorting to silly things like using generics to replace all the Symbol values in Lam constructors by a fixed dummy symbol and then comparing the results... which does *not* improve readability.
22:23:42 × __minoru__shirae quits (~shiraeesh@77.94.25.253) (Read error: Connection reset by peer)
22:24:04 heatsink joins (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15)
22:24:07 × alx741 quits (~alx741@181.196.69.27) (Quit: alx741)
22:24:25 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
22:24:56 carlomagno joins (~cararell@148.87.23.11)
22:24:59 arw joins (~arw@impulse.informatik.uni-erlangen.de)
22:26:06 × hyperisco quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Disconnected by services)
22:26:07 hyperisco_ joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net)
22:27:31 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
22:27:32 × rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
22:27:39 <dolio> koz_: I think so.
22:27:45 <koz_> OK, cool.
22:28:20 __minoru__shirae joins (~shiraeesh@77.94.25.253)
22:30:25 × jess quits (jess@freenode/staff/jess) (Quit: Leaving)
22:31:02 <int-e> NieDzejkob_: With syb, it would be something like s == t = let normalize = everywhere (\t -> case cast t of Just (Lam _ t e) -> Lam dummySymbol t e; _ -> t) in normalize s == normalize t -- untested, and it's been a while since I used generics
22:31:19 adium joins (adium@unaffiliated/adium)
22:32:20 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
22:32:32 <int-e> Anyway I think I'd prefer the explicit recursion.
22:33:32 × motherfsck quits (~motherfsc@unaffiliated/motherfsck) (Quit: quit)
22:34:57 × stree quits (~stree@68.36.8.116) (Ping timeout: 260 seconds)
22:36:34 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
22:38:18 <dolio> It seems unfortunate that the work rewriting the tree could just be checking equality instead. :)
22:38:51 conal joins (~conal@64.71.133.70)
22:39:27 × __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving)
22:41:15 × son0p quits (~son0p@181.136.122.143) (Quit: Lost terminal)
22:41:57 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 260 seconds)
22:42:15 <ukari> I want to know how to use reflex primitives (not reflex-dom) but drown in the complex. And I try to write an example which print "test" every second but fails. Could anyone shows the right example? https://gist.github.com/ukari/22b75e7fde47d1ff0c11d8d6affcc290
22:42:20 <monochrom> "Let fusion optimize that."
22:42:54 <dolio> What fusion? :þ
22:44:39 neiluj joins (~jco@91-167-203-101.subs.proxad.net)
22:44:45 × neiluj quits (~jco@91-167-203-101.subs.proxad.net) (Changing host)
22:44:45 neiluj joins (~jco@unaffiliated/neiluj)
22:44:45 hseg_ joins (~gesh@IGLD-84-228-239-97.inter.net.il)
22:45:45 <Axman6> Thanks VMWare
22:47:30 stree joins (~stree@68.36.8.116)
22:48:00 × hseg quits (~gesh@IGLD-84-228-239-97.inter.net.il) (Ping timeout: 260 seconds)
22:48:50 <int-e> NieDzejkob_: also this is not applicable because we can't get at the derived Eq instance's code and also define our own Eq instance. So never mind
22:49:39 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
22:49:47 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
22:49:57 <int-e> Do we have generic schemes for zip-like functions somewhere?
22:51:14 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
22:53:43 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
22:55:25 conal joins (~conal@64.71.133.70)
22:55:26 rj joins (~x@gateway/tor-sasl/rj)
22:55:44 × conal quits (~conal@64.71.133.70) (Client Quit)
22:56:01 × hyperisco_ quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Quit: Curry, you fools!)
22:56:16 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
22:57:47 <dolio> One could consider a newtype around Symbol such that (==) is always true. Then use that in the spots where symbol equality is unnecessary.
22:57:59 conal_ joins (~conal@64.71.133.70)
22:57:59 <Axman6> with singletonsa, is there a way to go from a Int (or Word, or Natural etc.) to a an expression which knows which Nat that is equivalent to at runtime?
22:58:44 <Axman6> it's been too long since I've looked at how you use singletons and can't remember what to look for (and there are _so many instances_ D: )
22:59:21 <dolio> Or just a parameterized newtype for ignoring anything.
23:01:14 jess joins (jess@freenode/staff/jess)
23:01:28 <dolio> Axman6: It might not be an instance that you're looking for. But `Word -> (forall n. KnownNat n => r) -> r`
23:01:50 <Axman6> yeah that seems like the right thing
23:02:32 <dolio> Although perhaps just `Nat -> ...` because having one of those for every type with some kind of embedding into Nat would be a lot of functions.
23:03:26 × Yumasi quits (~guillaume@2a01:e0a:5cb:4430:b7bd:1d78:9a4c:6909) (Ping timeout: 240 seconds)
23:03:30 henninb joins (~henninb@63-228-50-251.mpls.qwest.net)
23:03:33 <dolio> Could also be a GADT version of that, though.
23:03:49 <dolio> Nat -> SomeKnownNat
23:04:16 × bergey` quits (~user@107.181.19.30) (Ping timeout: 240 seconds)
23:04:57 <Axman6> I'm trying to see if there's a type safe optimisation for the NS coinstructor in generics-sop (/sop-core) which could avoid the use of unsafeCoerce; replace the implementation with data NS f xs = NS Word Any, so also need to ensure the Nat is < length xs at the type level
23:05:36 random_learner joins (2fe3acc8@047-227-172-200.res.spectrum.com)
23:05:58 <Axman6> there's a PR at the moment to maake the construction of NP more efficient and it'd be nice to also have NS allow for constant time decision of which constructor is represented in the sum type
23:08:40 × ukari quits (~ukari@unaffiliated/ukari) (Remote host closed the connection)
23:09:07 ukari joins (~ukari@unaffiliated/ukari)
23:10:09 borne joins (~fritjof@200116b8644ab70010f2d07664396fd4.dip.versatel-1u1.de)
23:13:34 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
23:14:04 × random_learner quits (2fe3acc8@047-227-172-200.res.spectrum.com) (Quit: Connection closed)
23:14:24 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
23:14:40 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
23:17:55 hseg_ is now known as hseg
23:18:06 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 256 seconds)
23:18:08 skregas joins (~skregas@201.89-10-150.nextgentel.com)
23:18:24 × zmv- quits (~zmv@191.255.89.231) (Ping timeout: 246 seconds)
23:19:24 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
23:19:31 skregas is now known as skregas_
23:19:44 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
23:20:24 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
23:20:55 × neiluj quits (~jco@unaffiliated/neiluj) (Quit: leaving)
23:21:18 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
23:23:57 × fendor_ quits (~fendor@91.141.0.220.wireless.dyn.drei.com) (Read error: Connection reset by peer)
23:24:21 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds)
23:24:30 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
23:25:05 × justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 240 seconds)
23:25:46 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
23:27:53 × henninb quits (~henninb@63-228-50-251.mpls.qwest.net) (Quit: Lost terminal)
23:28:03 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
23:28:48 × heatsink quits (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15) (Remote host closed the connection)
23:36:26 slack1256 joins (~slack1256@45.4.2.52)
23:37:28 bergey` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net)
23:37:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
23:38:07 × zebrag quits (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
23:38:27 zebrag joins (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr)
23:41:56 × bergey` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 240 seconds)
23:42:16 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 240 seconds)
23:42:32 × pacak quits (~pacak@bb116-14-220-91.singnet.com.sg) (Remote host closed the connection)
23:43:15 × nehsou^ quits (dsrt@ip98-184-89-2.mc.at.cox.net) ()
23:44:33 pacak joins (~pacak@bb116-14-220-91.singnet.com.sg)
23:44:55 ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta)
23:56:11 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
23:57:35 seneca joins (~epictetus@ip72-194-215-136.sb.sd.cox.net)
23:58:09 × maerwald quits (~maerwald@mail.hasufell.de) (Ping timeout: 264 seconds)

All times are in UTC on 2021-02-24.