2021/02/24

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