Home liberachat/#haskell: Logs Calendar

Logs on 2021-08-30 (liberachat/#haskell)

00:02:30 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
00:04:05 sjb0 joins (~stephen@1.145.117.24)
00:06:55 lavaman joins (~lavaman@98.38.249.169)
00:11:13 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 248 seconds)
00:16:32 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
00:17:08 <Axman6> jle`: How'd you go with hls and vim?
00:17:38 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
00:18:19 × qrpnxz quits (~qrpnxz@user/qrpnxz) (Quit: Gateway shutdown)
00:23:05 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
00:25:04 × oxide quits (~lambda@user/oxide) (Ping timeout: 252 seconds)
00:26:09 × Guest9678 quits (~chris@81.96.113.213) (Ping timeout: 248 seconds)
00:26:47 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
00:27:30 × obs\ quits (~obscur1ty@user/obs/x-5924898) (Read error: Connection reset by peer)
00:31:32 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
00:32:39 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
00:34:20 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
00:36:33 img joins (~img@user/img)
00:40:50 oxide joins (~lambda@user/oxide)
00:42:09 × cjb quits (~cjb@user/cjb) (Ping timeout: 256 seconds)
00:42:33 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
00:42:51 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
00:43:16 cjb joins (~cjb@user/cjb)
00:43:39 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
00:43:52 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
00:43:52 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
00:43:52 wroathe joins (~wroathe@user/wroathe)
00:47:03 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6) (Ping timeout: 250 seconds)
00:48:10 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
00:53:33 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
00:54:40 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
00:54:54 × leah2 quits (~leah@vuxu.org) (Ping timeout: 256 seconds)
00:56:39 × zgrep quits (~zgrep@user/zgrep) (Quit: It's a quitter's world.)
00:58:10 zgrep joins (~zgrep@user/zgrep)
00:59:33 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:00:40 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:05:34 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:06:17 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
01:06:41 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:11:18 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
01:13:04 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
01:13:08 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
01:13:17 MQ-17J joins (~MQ-17J@8.6.144.209)
01:18:45 neurocyte2 joins (~neurocyte@212.232.88.4)
01:18:45 × neurocyte2 quits (~neurocyte@212.232.88.4) (Changing host)
01:18:45 neurocyte2 joins (~neurocyte@user/neurocyte)
01:18:57 × oxide quits (~lambda@user/oxide) (Ping timeout: 248 seconds)
01:19:26 dsrt^ joins (~dsrt@wsip-98-188-244-188.mc.at.cox.net)
01:20:51 × neurocyte quits (~neurocyte@user/neurocyte) (Ping timeout: 250 seconds)
01:20:51 neurocyte2 is now known as neurocyte
01:21:34 leah2 joins (~leah@vuxu.org)
01:28:16 hololeap_ joins (~hololeap@user/hololeap)
01:28:51 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds)
01:31:45 dajoer joins (~david@user/gvx)
01:32:33 × tomboy64 quits (~tomboy64@user/tomboy64) (Quit: Off to see the wizard.)
01:33:48 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:35:04 tomboy64 joins (~tomboy64@user/tomboy64)
01:35:54 × xff0x quits (~xff0x@2001:1a81:524c:1400:ba85:9ec4:3b29:2be0) (Ping timeout: 250 seconds)
01:37:36 xff0x joins (~xff0x@2001:1a81:5283:ae00:5927:9529:db6:e6e9)
01:42:46 haritzondo joins (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220)
01:43:16 × haritz quits (~hrtz@user/haritz) (Ping timeout: 250 seconds)
01:55:41 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2)
02:00:43 × MQ-17J quits (~MQ-17J@8.6.144.209) (Read error: Connection reset by peer)
02:01:01 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
02:01:01 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
02:01:01 wroathe joins (~wroathe@user/wroathe)
02:04:40 × dtman34 quits (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
02:04:47 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 240 seconds)
02:06:31 MQ-17J joins (~MQ-17J@8.6.144.209)
02:06:34 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
02:06:39 dtman34 joins (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
02:07:41 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
02:07:55 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
02:09:27 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Ping timeout: 240 seconds)
02:09:40 × tritlo quits (sid58727@user/tritlo) (Ping timeout: 258 seconds)
02:10:17 × mustafa quits (sid502723@rockylinux/releng/mustafa) (Read error: Connection reset by peer)
02:10:26 × hamishmack quits (sid389057@stonehaven.irccloud.com) (Ping timeout: 268 seconds)
02:10:41 × astra` quits (sid289983@user/amish) (Ping timeout: 248 seconds)
02:10:45 × dmj` quits (sid72307@id-72307.stonehaven.irccloud.com) (Ping timeout: 276 seconds)
02:10:58 × pjlsergeant quits (sid143467@stonehaven.irccloud.com) (Read error: Connection reset by peer)
02:11:03 bitmapper joins (uid464869@id-464869.tooting.irccloud.com)
02:11:35 × jakesyl quits (sid56879@id-56879.stonehaven.irccloud.com) (Ping timeout: 258 seconds)
02:12:10 × amir quits (sid22336@user/amir) (Ping timeout: 240 seconds)
02:12:16 tritlo joins (sid58727@user/tritlo)
02:12:22 mustafa joins (sid502723@rockylinux/releng/mustafa)
02:12:25 hamishmack joins (sid389057@id-389057.stonehaven.irccloud.com)
02:12:25 dmj` joins (sid72307@id-72307.stonehaven.irccloud.com)
02:12:40 × ehamberg quits (sid18208@id-18208.stonehaven.irccloud.com) (Ping timeout: 240 seconds)
02:12:55 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
02:12:56 pjlsergeant joins (sid143467@stonehaven.irccloud.com)
02:13:26 astra` joins (sid289983@user/amish)
02:13:44 jakesyl joins (sid56879@id-56879.stonehaven.irccloud.com)
02:13:52 simon1 joins (~simon@modemcable090.207-203-24.mc.videotron.ca)
02:14:22 ehamberg joins (sid18208@id-18208.stonehaven.irccloud.com)
02:15:07 amir joins (sid22336@user/amir)
02:15:24 lavaman joins (~lavaman@98.38.249.169)
02:15:27 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 250 seconds)
02:15:39 <simon1> I'm trying to use the GHCi debugger. I've loaded my module Main with `cabal v2-repl unit` which leads to the Main module of my unit test module. I'm placing a breakpoint at the with the content `main = forM_ tests runLabeledModuleTestSuite`. The breakpoint is actually set by the debugger or so it says. Then when running `main` in GHCi, it never stops ???
02:16:09 <simon1> It actually runs the tests instead of breaking before.
02:17:19 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
02:17:54 <simon1> When setting the breakpoint, it says `Breakpoint 5 activated at test/unit/Main.hs:30:8-44`.
02:18:02 <simon1> It should be fine, but it never breaks.
02:19:51 <simon1> There is some code in my unit tests that are still binded to `undefined`. Could that explain why the debugger deosn't stop even thought the actual code is way deeper in another module. Why wouldn't the debugger stop at the first lever?
02:19:54 <simon1> level*
02:20:01 simon1 is now known as sim590
02:23:35 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
02:25:27 × td_ quits (~td@muedsl-82-207-238-209.citykom.de) (Ping timeout: 240 seconds)
02:27:29 td_ joins (~td@94.134.91.159)
02:28:35 × alx741 quits (~alx741@186.178.108.114) (Quit: alx741)
02:29:27 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
02:29:55 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
02:34:46 oxide joins (~lambda@user/oxide)
02:37:13 <sm> @simon1:libera.chat: things are often evaluated in an order you don't expect, or not at all. try adding lots of trace statements to see what's actually being executed
02:37:13 <lambdabot> Unknown command, try @list
02:44:53 × teddyc quits (theodorc@cassarossa.samfundet.no) (Ping timeout: 252 seconds)
02:45:18 <sim590> sm: not sure what was going on but I relaunched `cabal v2-repl` and now it works.
02:45:52 × MQ-17J quits (~MQ-17J@8.6.144.209) (Ping timeout: 252 seconds)
02:47:08 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
02:47:08 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
02:47:08 wroathe joins (~wroathe@user/wroathe)
02:47:35 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
02:48:42 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
02:48:57 <sm> \o/
02:50:15 <sim590> \o/ indeed!
02:51:22 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
02:52:43 × tritlo quits (sid58727@user/tritlo) (Ping timeout: 250 seconds)
02:52:47 × amir quits (sid22336@user/amir) (Ping timeout: 240 seconds)
02:52:55 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
02:53:16 × hamishmack quits (sid389057@id-389057.stonehaven.irccloud.com) (Read error: Connection reset by peer)
02:53:20 × astra` quits (sid289983@user/amish) (Read error: Connection reset by peer)
02:53:21 × SanchayanMaity quits (sid478177@id-478177.stonehaven.irccloud.com) (Read error: Connection reset by peer)
02:53:22 × dmj` quits (sid72307@id-72307.stonehaven.irccloud.com) (Write error: Connection reset by peer)
02:53:22 × acertain quits (sid470584@id-470584.stonehaven.irccloud.com) (Ping timeout: 258 seconds)
02:53:34 × mustafa quits (sid502723@rockylinux/releng/mustafa) (Ping timeout: 252 seconds)
02:53:35 × jakesyl quits (sid56879@id-56879.stonehaven.irccloud.com) (Ping timeout: 250 seconds)
02:53:38 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Read error: Connection reset by peer)
02:54:07 × pjlsergeant quits (sid143467@stonehaven.irccloud.com) (Ping timeout: 240 seconds)
02:54:24 × ehamberg quits (sid18208@id-18208.stonehaven.irccloud.com) (Read error: Connection reset by peer)
02:54:24 × oxide quits (~lambda@user/oxide) (Quit: oxide)
02:54:54 × rubin55___ quits (sid175221@id-175221.stonehaven.irccloud.com) (Ping timeout: 258 seconds)
02:55:32 mustafa joins (sid502723@rockylinux/releng/mustafa)
02:55:33 amir joins (sid22336@user/amir)
02:55:33 hamishmack joins (sid389057@stonehaven.irccloud.com)
02:55:34 ehamberg joins (sid18208@stonehaven.irccloud.com)
02:55:35 SanchayanMaity joins (sid478177@stonehaven.irccloud.com)
02:55:46 acertain joins (sid470584@id-470584.stonehaven.irccloud.com)
02:55:50 jakesyl joins (sid56879@id-56879.stonehaven.irccloud.com)
02:56:08 tritlo joins (sid58727@user/tritlo)
02:56:08 astra` joins (sid289983@user/amish)
02:56:11 rubin55___ joins (sid175221@id-175221.stonehaven.irccloud.com)
02:56:30 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
02:56:35 pjlsergeant joins (sid143467@id-143467.stonehaven.irccloud.com)
02:56:41 dmj` joins (sid72307@stonehaven.irccloud.com)
02:56:54 × Firedancer quits (sid336191@id-336191.stonehaven.irccloud.com) (Ping timeout: 276 seconds)
02:57:27 Firedancer joins (sid336191@id-336191.stonehaven.irccloud.com)
03:05:12 markpythonicbtc joins (~textual@2601:647:5a00:35:84bd:a15:7b92:ba0f)
03:06:30 × Ariakenom quits (~Ariakenom@2001:9b1:efd:c800:3061:d615:b40a:a206) (Read error: Connection reset by peer)
03:07:35 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
03:08:42 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
03:09:35 × roboguy__ quits (~roboguy_@2605:a601:afe7:9f00:d502:dcbd:b41f:7bd1) ()
03:14:07 × otto_s quits (~user@p5b0448eb.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
03:16:04 otto_s joins (~user@p5b044a64.dip0.t-ipconnect.de)
03:18:10 Erutuon joins (~Erutuon@user/erutuon)
03:18:36 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
03:18:43 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
03:19:43 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
03:21:04 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
03:22:33 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:22:33 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
03:22:33 wroathe joins (~wroathe@user/wroathe)
03:29:00 × markpythonicbtc quits (~textual@2601:647:5a00:35:84bd:a15:7b92:ba0f) (Quit: My MacBook has gone to sleep. ZZZzzz…)
03:29:36 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
03:30:43 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
03:31:15 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
03:32:06 mei joins (~mei@user/mei)
03:34:33 × juhp quits (~juhp@bb116-14-48-29.singnet.com.sg) (Read error: Connection reset by peer)
03:34:40 juhp joins (~juhp@bb116-14-48-29.singnet.com.sg)
03:36:23 justsomeguy joins (~justsomeg@user/justsomeguy)
03:39:46 × y04nn quits (~y04nn@91.193.4.154) (Ping timeout: 252 seconds)
03:42:47 × juhp quits (~juhp@bb116-14-48-29.singnet.com.sg) (Ping timeout: 240 seconds)
03:43:07 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 240 seconds)
03:46:40 markpythonicbtc joins (~textual@2601:647:5a00:35:b49f:c38:77c7:9b54)
03:47:51 juhp joins (~juhp@bb116-14-48-29.singnet.com.sg)
03:51:29 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
03:52:25 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
03:53:22 hyiltiz joins (~quassel@31.220.5.250)
03:54:21 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
04:02:48 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 250 seconds)
04:04:50 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:07:51 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
04:09:33 × markpythonicbtc quits (~textual@2601:647:5a00:35:b49f:c38:77c7:9b54) (Quit: My MacBook has gone to sleep. ZZZzzz…)
04:12:48 Guest1 joins (~Guest1@223.18.154.68)
04:16:25 markpythonicbtc joins (~textual@c-24-6-12-87.hsd1.ca.comcast.net)
04:16:44 Guest7 joins (~Guest7@50.47.115.102)
04:21:19 <Guest7> Do you use an alternative prelude (e.g. relude)? If so, which one?
04:29:37 × Guest7 quits (~Guest7@50.47.115.102) (Ping timeout: 256 seconds)
04:38:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
04:40:59 × retroid_ quits (~retro@5ec19a54.skybroadband.com) (*.net *.split)
04:40:59 × mrckndt quits (~mrckndt@user/mrckndt) (*.net *.split)
04:40:59 × elcaro quits (~anonymous@45.32.191.75) (*.net *.split)
04:40:59 × drakonis quits (drakonis@user/drakonis) (*.net *.split)
04:40:59 × dexterfoo quits (dexter@2a01:7e00::f03c:91ff:fe86:59ec) (*.net *.split)
04:40:59 × Unhammer quits (~Unhammer@user/unhammer) (*.net *.split)
04:40:59 × vgtw quits (~vgtw@c-9164205c.07-348-756d651.bbcust.telenor.se) (*.net *.split)
04:40:59 × thelounge9230681 quits (~thelounge@cpe-75-85-161-60.san.res.rr.com) (*.net *.split)
04:40:59 × teehemkay quits (sid14792@id-14792.tooting.irccloud.com) (*.net *.split)
04:40:59 × SethTisue__ quits (sid14912@id-14912.charlton.irccloud.com) (*.net *.split)
04:40:59 × JSharp quits (sid4580@id-4580.tooting.irccloud.com) (*.net *.split)
04:40:59 × darxun quits (sid504814@id-504814.tinside.irccloud.com) (*.net *.split)
04:40:59 × _0x47 quits (sid508683@id-508683.tinside.irccloud.com) (*.net *.split)
04:40:59 × jackdk quits (sid373013@cssa/jackdk) (*.net *.split)
04:40:59 × SoF quits (~skius@user/skius) (*.net *.split)
04:40:59 × kristjansson_ quits (sid126207@id-126207.tinside.irccloud.com) (*.net *.split)
04:40:59 × dsf_ quits (~dsf@cpe-66-75-56-205.san.res.rr.com) (*.net *.split)
04:40:59 × guibou quits (~guibou@163.172.83.213) (*.net *.split)
04:40:59 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (*.net *.split)
04:40:59 × incertia quits (~incertia@d4-50-26-103.nap.wideopenwest.com) (*.net *.split)
04:40:59 × fiddlerwoaroof quits (~fiddlerwo@user/fiddlerwoaroof) (*.net *.split)
04:40:59 × drdo quits (~drdo@overlord0.drdo.eu) (*.net *.split)
04:41:00 × Trattue quits (~Trattue@152.70.182.158) (*.net *.split)
04:41:00 × SquidDev quits (~SquidDev@autoclave.squiddev.cc) (*.net *.split)
04:41:00 × wz1000 quits (~zubin@static.11.113.47.78.clients.your-server.de) (*.net *.split)
04:41:00 × voldial quits (~user@user/voldial) (*.net *.split)
04:41:00 × janus quits (janus@anubis.0x90.dk) (*.net *.split)
04:41:00 × xerox quits (~edi@user/edi) (*.net *.split)
04:41:00 × bcoppens quits (~bartcopp@vpn2.bartcoppens.be) (*.net *.split)
04:41:00 × tlax quits (tlax@kapsi.fi) (*.net *.split)
04:41:00 × canta quits (~canta@user/canta) (*.net *.split)
04:41:00 × exarkun quits (~exarkun@user/exarkun) (*.net *.split)
04:41:00 × glowcoil quits (sid3405@id-3405.tinside.irccloud.com) (*.net *.split)
04:41:00 × dfordvm quits (~dfordivam@tk2-219-19469.vs.sakura.ne.jp) (*.net *.split)
04:41:00 × hubvu quits (sid495858@id-495858.tinside.irccloud.com) (*.net *.split)
04:41:00 × noddy quits (~user@user/noddy) (*.net *.split)
04:41:00 × jle` quits (~justin@cpe-23-240-75-236.socal.res.rr.com) (*.net *.split)
04:41:00 × agander_m quits (sid407952@id-407952.tinside.irccloud.com) (*.net *.split)
04:41:00 × pieguy128 quits (~pieguy128@bas1-montreal02-65-92-163-194.dsl.bell.ca) (*.net *.split)
04:41:00 × statusbot quits (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (*.net *.split)
04:41:00 × Flow quits (~none@gentoo/developer/flow) (*.net *.split)
04:41:00 × koz quits (~koz@121.99.240.58) (*.net *.split)
04:41:00 × drlkf quits (~drlkf@2001:41d0:a:62bb::1) (*.net *.split)
04:41:00 × sphynx quits (~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288) (*.net *.split)
04:41:00 × dme2 quits (~dme2@67.205.140.199) (*.net *.split)
04:41:08 tlax joins (tlax@kapsi.fi)
04:41:09 bcoppens joins (~bartcopp@vpn2.bartcoppens.be)
04:41:09 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
04:41:11 elcaro joins (~anonymous@45.32.191.75)
04:41:11 xerox joins (~edi@user/edi)
04:41:11 teehemkay joins (sid14792@id-14792.tooting.irccloud.com)
04:41:12 SethTisue__ joins (sid14912@id-14912.charlton.irccloud.com)
04:41:13 darxun joins (sid504814@id-504814.tinside.irccloud.com)
04:41:13 sphynx joins (~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288)
04:41:15 mrckndt joins (~mrckndt@user/mrckndt)
04:41:16 dexterfoo joins (dexter@2a01:7e00::f03c:91ff:fe86:59ec)
04:41:17 drlkf joins (~drlkf@2001:41d0:a:62bb::1)
04:41:17 exarkun joins (~exarkun@59.5.70.34.bc.googleusercontent.com)
04:41:17 koz joins (~koz@121.99.240.58)
04:41:18 thelounge9230681 joins (~thelounge@cpe-75-85-161-60.san.res.rr.com)
04:41:21 janus joins (janus@anubis.0x90.dk)
04:41:21 glowcoil joins (sid3405@id-3405.tinside.irccloud.com)
04:41:21 JSharp joins (sid4580@id-4580.tooting.irccloud.com)
04:41:22 dsf_ joins (~dsf@cpe-66-75-56-205.san.res.rr.com)
04:41:26 canta joins (~canta@cvm0.d5k.one)
04:41:31 drakonis joins (drakonis@2600:3c02::f03c:92ff:fe5e:b8bf)
04:41:31 wz1000 joins (~zubin@static.11.113.47.78.clients.your-server.de)
04:41:33 voldial joins (~user@195.179.201.175)
04:41:36 jle` joins (~justin@cpe-23-240-75-236.socal.res.rr.com)
04:41:37 × exarkun quits (~exarkun@59.5.70.34.bc.googleusercontent.com) (Changing host)
04:41:37 exarkun joins (~exarkun@user/exarkun)
04:41:39 Unhammer joins (~Unhammer@2a01:799:42:6a00::40c)
04:41:40 dfordvm joins (~dfordivam@tk2-219-19469.vs.sakura.ne.jp)
04:41:50 SquidDev joins (~SquidDev@autoclave.squiddev.cc)
04:41:51 Flow joins (~none@salem.informatik.uni-erlangen.de)
04:41:53 × canta quits (~canta@cvm0.d5k.one) (Changing host)
04:41:53 canta joins (~canta@user/canta)
04:42:00 _0x47 joins (sid508683@id-508683.tinside.irccloud.com)
04:42:01 kristjansson_ joins (sid126207@id-126207.tinside.irccloud.com)
04:42:02 × Unhammer quits (~Unhammer@2a01:799:42:6a00::40c) (Changing host)
04:42:02 Unhammer joins (~Unhammer@user/unhammer)
04:42:22 agander_m joins (sid407952@id-407952.tinside.irccloud.com)
04:42:26 jackdk joins (sid373013@cssa/jackdk)
04:42:27 hubvu joins (sid495858@id-495858.tinside.irccloud.com)
04:42:32 pieguy128 joins (~pieguy128@bras-base-mtrlpq5031w-grc-57-65-92-163-194.dsl.bell.ca)
04:42:34 statusbot joins (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
04:42:36 drdo joins (~drdo@overlord0.drdo.eu)
04:42:41 fiddlerwoaroof joins (~fiddlerwo@user/fiddlerwoaroof)
04:42:59 incertia joins (~incertia@d4-50-26-103.nap.wideopenwest.com)
04:43:14 dme2 joins (~dme2@67.205.140.199)
04:43:46 Trattue joins (~Trattue@152.70.182.158)
04:44:17 vgtw joins (~vgtw@c-9164205c.07-348-756d651.bbcust.telenor.se)
04:45:07 × awth13 quits (~awth13@user/awth13) (*.net *.split)
04:45:07 × Techcable quits (~Techcable@168.235.93.147) (*.net *.split)
04:45:07 × Dykam quits (Dykam@dykam.nl) (*.net *.split)
04:45:07 × Eoco quits (~ian@x-160-94-179-157.acm.umn.edu) (*.net *.split)
04:45:07 × polux quits (~polux@51.15.169.172) (*.net *.split)
04:45:07 × drewolson1 quits (~drewolson@user/drewolson) (*.net *.split)
04:45:07 × wrunt quits (~ajc@vmx14030.hosting24.com.au) (*.net *.split)
04:45:07 × orzo_ quits (joe@lasker.childrenofmay.org) (*.net *.split)
04:45:07 × glider quits (~glider@user/glider) (*.net *.split)
04:45:07 × Vq quits (~vq@90-227-195-41-no77.tbcn.telia.com) (*.net *.split)
04:45:07 × dave_uy quits (~dave_uy@108.61.193.26) (*.net *.split)
04:45:07 × Teacup quits (~teacup@user/teacup) (*.net *.split)
04:45:07 × glguy quits (x@libera/staff/glguy) (*.net *.split)
04:45:08 × Unode quits (~Unode@194.94.44.220) (*.net *.split)
04:45:08 × pierrot quits (~pi@user/pierrot) (*.net *.split)
04:45:08 × ellie quits (~ellie@user/ellie) (*.net *.split)
04:45:08 × tristanC quits (~tristanC@user/tristanc) (*.net *.split)
04:45:08 × relrod quits (~relrod@redhat/ansible.staff.relrod) (*.net *.split)
04:45:08 × aweinstock quits (~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com) (*.net *.split)
04:45:08 × arahael quits (~arahael@203.221.97.63) (*.net *.split)
04:45:08 × monochrom quits (trebla@216.138.220.146) (*.net *.split)
04:45:08 × lambdap quits (~lambdap@static.167.190.119.168.clients.your-server.de) (*.net *.split)
04:45:08 × paddymahoney quits (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (*.net *.split)
04:45:08 × L29Ah quits (~L29Ah@user/l29ah) (*.net *.split)
04:45:08 × adium quits (adium@user/adium) (*.net *.split)
04:45:08 × jonrh quits (sid5185@charlton.irccloud.com) (*.net *.split)
04:45:08 × whez quits (sid470288@tooting.irccloud.com) (*.net *.split)
04:45:08 × edwardk quits (sid47016@haskell/developer/edwardk) (*.net *.split)
04:45:08 × sm2n quits (~sm2n@user/sm2n) (*.net *.split)
04:45:08 × fjmorazan quits (~quassel@user/fjmorazan) (*.net *.split)
04:45:08 × energizer quits (~energizer@user/energizer) (*.net *.split)
04:45:08 × gabiruh quits (~gabiruh@vps19177.publiccloud.com.br) (*.net *.split)
04:45:08 × Clint quits (~Clint@user/clint) (*.net *.split)
04:45:08 × wanko quits (~wanko@51.15.4.226) (*.net *.split)
04:45:08 × remexre quits (~nathan@user/remexre) (*.net *.split)
04:45:08 × Patternmaster quits (~georg@li1192-118.members.linode.com) (*.net *.split)
04:45:08 × vk3wtf quits (~doc@220-245-2-190.tpgi.com.au) (*.net *.split)
04:45:08 × typedfern__ quits (~Typedfern@28.red-83-57-142.dynamicip.rima-tde.net) (*.net *.split)
04:45:08 × jackhill quits (~jackhill@kalessin.dragonsnail.net) (*.net *.split)
04:45:08 × EvanR quits (~evan@mail.evanr.info) (*.net *.split)
04:45:08 × spoonm quits (spoonm@inaba.spoonm.org) (*.net *.split)
04:45:08 × natechan quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (*.net *.split)
04:45:08 × drewr quits (~drew@user/drewr) (*.net *.split)
04:45:14 orzo joins (joe@lasker.childrenofmay.org)
04:45:14 Clint joins (~Clint@user/clint)
04:45:15 whez joins (sid470288@id-470288.tooting.irccloud.com)
04:45:16 wanko joins (~wanko@51.15.4.226)
04:45:18 EvanR joins (~evan@mail.evanr.info)
04:45:19 Dykam joins (Dykam@dykam.nl)
04:45:20 tristanC joins (~tristanC@163.172.94.116)
04:45:21 guibou joins (~guibou@163.172.83.213)
04:45:21 jackhill joins (~jackhill@kalessin.dragonsnail.net)
04:45:21 aweinstock joins (~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com)
04:45:22 monochrom joins (trebla@216.138.220.146)
04:45:23 Patternmaster joins (~georg@li1192-118.members.linode.com)
04:45:23 dave_uy joins (~dave_uy@108.61.193.26)
04:45:26 lambdap joins (~lambdap@static.167.190.119.168.clients.your-server.de)
04:45:28 relrod joins (~relrod@redhat/ansible.staff.relrod)
04:45:30 wrunt joins (~ajc@vmx14030.hosting24.com.au)
04:45:30 typedfern__ joins (~Typedfern@28.red-83-57-142.dynamicip.rima-tde.net)
04:45:31 polux joins (~polux@51.15.169.172)
04:45:36 × EvanR quits (~evan@mail.evanr.info) (Changing host)
04:45:36 EvanR joins (~evan@user/evanr)
04:45:40 × tristanC quits (~tristanC@163.172.94.116) (Changing host)
04:45:40 tristanC joins (~tristanC@user/tristanc)
04:45:41 Eoco joins (~ian@x-160-94-179-157.acm.umn.edu)
04:45:41 remexre joins (~nathan@207-153-38-50.fttp.usinternet.com)
04:45:46 vk3wtf joins (~doc@220-245-2-190.tpgi.com.au)
04:45:47 spoonm joins (spoonm@inaba.spoonm.org)
04:45:53 awth13 joins (~awth13@89.145.163.86)
04:45:57 jonrh joins (sid5185@id-5185.charlton.irccloud.com)
04:46:00 edwardk joins (sid47016@id-47016.charlton.irccloud.com)
04:46:15 natechan joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
04:46:16 × awth13 quits (~awth13@89.145.163.86) (Changing host)
04:46:16 awth13 joins (~awth13@user/awth13)
04:46:16 sm2n joins (~sm2n@bras-base-hmtnon143hw-grc-12-70-52-146-205.dsl.bell.ca)
04:46:18 × edwardk quits (sid47016@id-47016.charlton.irccloud.com) (Changing host)
04:46:18 edwardk joins (sid47016@haskell/developer/edwardk)
04:46:19 Unode joins (~Unode@194.94.44.220)
04:46:20 drewr joins (~drew@115.198.243.35.bc.googleusercontent.com)
04:46:22 × sm2n quits (~sm2n@bras-base-hmtnon143hw-grc-12-70-52-146-205.dsl.bell.ca) (Remote host closed the connection)
04:46:23 × drewr quits (~drew@115.198.243.35.bc.googleusercontent.com) (Changing host)
04:46:23 drewr joins (~drew@user/drewr)
04:46:24 glguy joins (x@libera/staff/glguy)
04:46:37 Techcable joins (~Techcable@168.235.93.147)
04:46:40 × remexre quits (~nathan@207-153-38-50.fttp.usinternet.com) (Client Quit)
04:46:49 paddymahoney joins (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com)
04:46:49 sm2n joins (~sm2n@user/sm2n)
04:46:52 pierrot joins (~pi@user/pierrot)
04:46:54 remexre joins (~nathan@user/remexre)
04:46:55 gabiruh joins (~gabiruh@vps19177.publiccloud.com.br)
04:46:59 glider joins (~glider@user/glider)
04:47:01 fjmorazan joins (~quassel@user/fjmorazan)
04:47:02 Teacup joins (~teacup@user/teacup)
04:47:23 energizer joins (~energizer@user/energizer)
04:48:09 jonathanx_ joins (~jonathan@dyn-8-sc.cdg.chalmers.se)
04:48:54 × jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Read error: Connection reset by peer)
04:49:07 adium joins (adium@user/adium)
04:50:27 Vq joins (~vq@90-227-195-41-no77.tbcn.telia.com)
04:50:28 retroid_ joins (~retro@5ec19a54.skybroadband.com)
04:55:59 peterhil joins (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi)
05:01:01 × Guest1 quits (~Guest1@223.18.154.68) (Quit: Client closed)
05:05:55 arahael joins (~arahael@203.221.97.63)
05:14:09 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 248 seconds)
05:19:25 fabfianda joins (~fabfianda@37.183.255.57)
05:22:47 × xff0x quits (~xff0x@2001:1a81:5283:ae00:5927:9529:db6:e6e9) (Ping timeout: 240 seconds)
05:23:48 xff0x joins (~xff0x@2001:1a81:5283:ae00:dd66:8a36:3ffc:6058)
05:26:47 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
05:32:37 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 250 seconds)
05:33:59 aegon joins (~mike@174.127.249.180)
05:34:05 × aegon quits (~mike@174.127.249.180) (Client Quit)
05:34:19 aegon joins (~mike@174.127.249.180)
05:38:04 × xff0x quits (~xff0x@2001:1a81:5283:ae00:dd66:8a36:3ffc:6058) (Ping timeout: 252 seconds)
05:38:59 xff0x joins (~xff0x@2001:1a81:5283:ae00:82de:9d03:d34b:f6a0)
05:41:57 lavaman joins (~lavaman@98.38.249.169)
05:43:25 Guest35 joins (~Guest35@223.18.154.68)
05:44:41 × aegon quits (~mike@174.127.249.180) (Remote host closed the connection)
05:44:58 michalz joins (~michalz@185.246.204.40)
05:46:19 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
05:48:49 × ubert quits (~Thunderbi@178.165.168.136.wireless.dyn.drei.com) (Ping timeout: 248 seconds)
05:48:52 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
05:48:52 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
05:48:52 wroathe joins (~wroathe@user/wroathe)
05:50:12 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
05:53:32 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 244 seconds)
05:57:32 <sim590> I'm trying to make an instance of this class: http://ix.io/3xoR. Here is my try: http://ix.io/3xoS. It's OK for the part of `dhExchange`, but when writing my implementation of `exponentiate`, I'm getting this error: http://ix.io/3xoU. I'm thinking that there's an issue with how I defined the signature of `exponentiate` (and `dhExchange`) with the constraint of MonadState. How can we explaine the
05:57:34 <sim590> issue? I'm not understanding quite yet.
06:07:30 chris joins (~chris@81.96.113.213)
06:07:33 chris is now known as Guest3947
06:08:13 × Guest35 quits (~Guest35@223.18.154.68) (Ping timeout: 256 seconds)
06:15:25 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
06:16:46 lortabac joins (~lortabac@151.53.201.45)
06:17:39 arjun joins (~Srain@user/arjun)
06:19:04 teddyc joins (theodorc@cassarossa.samfundet.no)
06:19:27 MQ-17J joins (~MQ-17J@8.6.144.209)
06:20:53 × arjun quits (~Srain@user/arjun) (Remote host closed the connection)
06:30:58 Guest35 joins (~Guest35@223.18.154.68)
06:30:59 × Guest35 quits (~Guest35@223.18.154.68) (Client Quit)
06:34:54 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
06:35:19 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:41:25 <tomsmeding> maerwald: when in doubt, bundle more sources :p
06:44:04 lavaman joins (~lavaman@98.38.249.169)
06:50:25 <maerwald[m]> tomsmeding: the alternative is trying to figure out how to statically link mingw libs
06:52:48 aman joins (~aman@user/aman)
06:54:11 <tomsmeding> maerwald[m]: doesn't sound like fun
06:56:19 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
06:57:02 acidjnk_new joins (~acidjnk@p200300d0c72b952094eaf2f81a5b0fde.dip0.t-ipconnect.de)
06:58:17 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
07:00:34 × xff0x quits (~xff0x@2001:1a81:5283:ae00:82de:9d03:d34b:f6a0) (Ping timeout: 252 seconds)
07:01:30 xff0x joins (~xff0x@2001:1a81:5283:ae00:3380:f428:346c:f5a)
07:02:08 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
07:03:09 <int-e> sim590: you may have better luck with a more complete question (including class definition, type for `use` and possibly `generator`; ideally a minimal source file with the necessary imports, declarations (`undefined` as implementation is fine)... it's much easier to figure out type errors interactively than by staring at a static type error. That said, one thing that stands out is this type...
07:03:15 <int-e> ...signature from the error message: exponentiate :: forall z (m :: * -> *). MonadState (DHMaterial z) m => MyDHComputableInteger -> m MyDHComputableInteger ...so it's supposed to work for any `DHMaterial z`, but the code you have only works for `DHMaterial MyDHComputableInteger`...
07:04:21 jumper149 joins (~jumper149@80.240.31.34)
07:05:13 hannessteffenhag joins (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
07:06:54 takuan joins (~takuan@178-116-218-225.access.telenet.be)
07:08:09 <tomsmeding> siers: cool that you understand my gdiff example code now :) I think that "being originally written in Agda" doesn't necessarily produce the GADT weirdness of gdiff; it's the other way round: they wanted to make a completely type-safe implementation, and this is the way that works out in Haskell
07:08:36 d0ku joins (~d0ku@178.43.56.75.ipv4.supernova.orange.pl)
07:09:22 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
07:12:33 <siers> tomsmeding, right, but my thinking was that if you want to write it in agda, you're probably going to make sure it's type-safe :)
07:13:17 × cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
07:14:18 azeem joins (~azeem@176.200.56.216)
07:15:41 gehmehgeh joins (~user@user/gehmehgeh)
07:16:22 <tomsmeding> siers: again, knowing the research group that this came out of, I think it was the other way round: they wanted type-safety, and they knew agda, and that worked well together :p
07:16:31 <tomsmeding> but true
07:16:55 <siers> fair enough, you probably know better. I was just speculating
07:21:46 kuribas joins (~user@ptr-25vy0i98x8tu9s1v8mf.18120a2.ip6.access.telenet.be)
07:23:08 Pickchea joins (~private@user/pickchea)
07:24:31 × Guest3947 quits (~chris@81.96.113.213) (Remote host closed the connection)
07:28:47 lavaman joins (~lavaman@98.38.249.169)
07:29:24 chris joins (~chris@81.96.113.213)
07:29:28 chris is now known as Guest3638
07:30:20 fendor joins (~fendor@178.165.182.151.wireless.dyn.drei.com)
07:33:01 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
07:33:46 × Guest3638 quits (~chris@81.96.113.213) (Ping timeout: 244 seconds)
07:36:17 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
07:40:43 × azeem quits (~azeem@176.200.56.216) (Ping timeout: 252 seconds)
07:41:15 azeem joins (~azeem@176.200.56.216)
07:41:17 kenran joins (~kenran@b2b-37-24-119-190.unitymedia.biz)
07:42:08 × charukiewicz quits (~quassel@irouteince04.i.subnet.rcn.com) (Remote host closed the connection)
07:43:18 charukiewicz joins (~quassel@irouteince04.i.subnet.rcn.com)
07:44:34 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:48:52 <kuribas> What do you think about this article? https://cuddly-octo-palm-tree.com/posts/2021-08-29-data-api/
07:50:02 <kuribas> I think his examples are a bit rubbish (why would I want to check if a line limit is not exceeded?).
07:50:35 <kuribas> But it's true that data centric programming is pretty easy in clojure, but not in haskell (when you want type-safety).
07:51:19 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
07:51:50 <kuribas> On the other hand, if I want to parse command line, configuration file, environment variables, etc... from the same source, I'd probably make my own effect.
07:53:04 <kuribas> the ability to inspect all data is convenient, but also breaks abstraction barriers, making code more brittle.
07:55:35 <maerwald[m]> Someone who coded more than half a year in clojure and didn't lose his mind over impossible to find bugs is a mystery to me
07:57:26 <kuribas> maerwald: if you drink the clojure cool-aid for so long, it means you're alread in it. Clojure developers don't care that much.
07:57:59 <kuribas> But it's a good point. You get code conciseness, but the price to pay for lack of safety is that you need a lot of tests.
07:58:01 × sjb0 quits (~stephen@1.145.117.24) (Quit: Leaving.)
07:58:55 <maerwald[m]> Refactoring clojure code is basically a gamble with the life of your company
07:58:57 cfricke joins (~cfricke@user/cfricke)
07:59:34 <maerwald[m]> Structural typing done wrong
07:59:42 <lortabac> in my experience refactoring simply doesn't happen with dynamically-typed languages
08:00:07 <lortabac> once the project reaches a certain size it somehow becomes "append-only"
08:00:15 <maerwald[m]> I mean, haskell doesn't have any
08:00:28 <lortabac> especially if the original developers are not there anymore
08:00:38 <kuribas> lortabac: we do refactor, but it's painful.
08:01:17 <lortabac> kuribas: wait 5 more years and you will stop refactoring :)
08:01:29 <lortabac> at some point it simply becomes too dangerous
08:02:38 <maerwald[m]> If you cherish clojure, you're probably coding in a bubble with no team and don't understand the horror effects it creates for everyone around you
08:03:30 max22- joins (~maxime@2a01cb0883359800e8f3a18d7241b1b5.ipv6.abo.wanadoo.fr)
08:03:49 <kuribas> maerwald[m]: I asked a new guy about it. His response was, that he doesn't try to understand the code, just run it in the repl and says what it does, which data goes where and how...
08:03:58 <maerwald[m]> Like a web page going blank in production, because you deleted a bracket at a wrong place and the code still compiled
08:04:38 <kuribas> maerwald[m]: we've had a client complaining because our code broke due to a type error.
08:04:48 <kuribas> email reporting I mean...
08:04:59 <maerwald[m]> Yes, the only advantage of clojure, interactive development
08:05:31 <kuribas> interactive development is much worse in haskell, but I still prefer it, because I am not "forced" to use the repl.
08:05:32 hendursa1 joins (~weechat@user/hendursaga)
08:05:42 <kuribas> I just use it when *I* want to.
08:06:16 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Quit: mikoto-chan)
08:06:39 <maerwald[m]> I stopped interactive development in haskell and it made me better at coding. Thinking for more than 5 minutes about code without compiling it has an interesting effect
08:07:28 <maerwald[m]> And it's a pleasure when things compile after you've been editing for 30 minutes
08:07:36 <kuribas> maerwald[m]: I test my code *after* writing it.
08:08:36 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 276 seconds)
08:12:49 × rbocquet quits (~weechat@2001:bc8:47a8:44e::1) (Quit: WeeChat 2.8)
08:16:10 rbocquet joins (~weechat@2001:bc8:47a8:44e::1)
08:17:15 arjun joins (~Srain@user/arjun)
08:17:53 <arjun> Hi, i'm inside a function with some constraints (MonadIO m, MonadCatch m .... etc)
08:18:08 <arjun> now one of the arguments is a Maybe FilePath
08:18:39 <arjun> and i can't seem to do ` dir <- givenPath ` inside the `do`
08:18:40 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds)
08:18:53 <arjun> " Couldn't match type ‘m’ with ‘Maybe’ "
08:19:18 <arjun> while, i could do `let dir = fromJust givenPath` just fine
08:19:26 <merijn> Maybe is not an instance of MonadIO, so you can't do that, no
08:20:19 × azeem quits (~azeem@176.200.56.216) (Ping timeout: 250 seconds)
08:20:21 <arjun> bump.
08:21:08 <arjun> what's the prefered way to do this kindda thing, just for my curiosity's sake
08:21:41 <kuribas> arjun: don't use fromJust, use fromMaybe instead.
08:21:45 <kuribas> :t fromJust
08:21:46 <lambdabot> Maybe a -> a
08:21:50 <kuribas> :t fromMaybe
08:21:50 <merijn> "preferred way to do this" <- you haven't really specified what "this" is
08:21:51 <lambdabot> a -> Maybe a -> a
08:22:24 <merijn> arjun: You have said "I have a Maybe FilePath", but not really anything about how you wanna use it or what you expect to happen
08:22:27 <kuribas> arjun: fromJust will crash when you pass a Nothing, with a very unhelpful message.
08:22:29 azeem joins (~azeem@62.18.127.19)
08:22:33 <arjun> kuribas: yea, just repl'd it. fromJust is unsafe if i get Nothing
08:23:08 <kuribas> arjun: as merijn said, you have to figure out what to do when it's `Nothing`.
08:23:45 <arjun> merijn: get a value from Just if it's Just (for eg get 5 from Just 5) and Nothing if it's Nothing from a polymorphic function with constraints ? does that make sense?
08:24:13 <arjun> merijn: i understand Maybe not having a MonadIO instance
08:24:25 <merijn> That doesn't really make sense no
08:24:38 <merijn> What does "getting Nothing if it's Nothing" mean
08:24:44 <arjun> kuribas: i see. i was hoping "<-" would take care of it for me : P
08:24:50 <merijn> <- is not magic
08:24:57 <merijn> <- is just sugar for >>=
08:25:00 <merijn> :t (>>=)
08:25:02 <lambdabot> Monad m => m a -> (a -> m b) -> m b
08:25:02 rtpg joins (sid443069@charlton.irccloud.com)
08:25:08 <kuribas> arjun: you mean, <- would pry into your mind, and do the right thing?
08:25:10 <merijn> That means all sides have to be the same 'm'
08:25:40 <kuribas> arjun: or better, infer the business logic that needs to apply in this case?
08:25:46 __monty__ joins (~toonn@user/toonn)
08:25:48 <arjun> kuribas: it should also write the docs, white it's at it : P
08:25:55 <merijn> arjun: Specifically, if you *did* use <- with Maybe, then they entire do block would be a "Maybe" type
08:25:58 <arjun> while*
08:26:03 <kuribas> arjun: cool, let me know when you find this :)
08:26:25 <merijn> arjun: And your function wouldn't be "foo :: MonadIO m => Maybe FilePath -> m ()" it'd just be "foo :: Maybe FilePath -> Maybe ()" or whatever
08:26:39 <arjun> merijn: yes, that's what the error is saying i suppose (hard to read for untrained eyes)
08:27:00 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
08:27:20 <arjun> my function is expected to return m Bool, but it returns a fixed type Maybe ..
08:27:38 <arjun> i see.
08:27:46 <arjun> thanks ! merijn
08:28:08 <rtpg> Has there ever been any discussion of having Haskell adopt anonymous sum types? That is to say, instead of using Either Int Bool, being able to write out Int | Bool and pattern match directly off of that? Essentially making sum types first-class in the same way products are
08:28:41 <[exa]> (product types are first class?)
08:28:47 <opqdonut> sums are first-class in exactly the same way as products
08:28:55 <opqdonut> both have their type constructor: (,) and Either
08:29:38 <opqdonut> (and you have the ADT syntax which allows you to define a custom collection of sums and products and give it a name)
08:29:39 <arjun> why do i always get the image of people evacuating the Titanic when it's drowning when people say "first class"
08:30:13 <rtpg> I think it's pretty easy to argue that tuples are ... more.... first-class (like I don't have to give names, I can do N-products instead of stacking with Either). But I get your point from a mechanical level
08:30:45 <kuribas> rtpg: tuples have type constructors as well.
08:31:24 <rtpg> At least for me, Typescript allows for using anonymous unions, and then is able to very easily deduce what your thing is without having you need to name some helper type like StringOrPropertyAccessorOrInteger
08:32:51 <kuribas> rtpg: you should never name things like that :)
08:33:25 <[exa]> rtpg: you can't reliably infer an anonymous union without abusing a closed-world assumption
08:34:51 <[exa]> rtpg: what about just making a tiny typeclass for that?
08:34:58 <rtpg> ah that's a good point, suddenly it's like "is this supposed to return A | B or is it meant to return A and B is a mistake"
08:35:34 <[exa]> stuff like "f :: MyFunctionWorksWith a => a -> a" is pretty common I'd say
08:35:38 <rtpg> I mean y'all never just have a bucket of things that exist in some inner function that don't have much semantic value beyond being the return type of a handful of objects?
08:36:27 <kuribas> rtpg: in lisps often they make one function do a lot of things. The haskell way is more to have different "combinators", to provide different features.
08:36:35 <kuribas> rtpg: it works better with static typing
08:36:53 <rtpg> though yeah I guess I don't mind making the function itself have to be explicit, it's more around callsites, I would love to pattern match directly on A | B without having to unwrap an Either first. But I guess with Rust I end up taking a trait anyways
08:36:56 <merijn> rtpg: Datatypes are cheap to define in Haskell
08:36:57 <[exa]> rtpg: or, say. `mySemanticOf :: HasMySemantics a => a -> Bool`, and use it to downcast the many possibilities to something predictable
08:37:09 <merijn> rtpg: So, might as well define a datatype
08:37:34 <kuribas> rtpg: err, how would you pattern match on A | B, if you don't have a constructor?
08:38:00 <merijn> rtpg: In fact, as my projects scale up, the more I love previous me for defining lots and lots of custom datatypes
08:39:33 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6) (Remote host closed the connection)
08:39:47 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 240 seconds)
08:40:05 <rtpg> let's say you have Foo = Bar Int | Baz String, and like Mouse Int, then Foo | Mouse you could pattern match like "f:: (Foo | Mouse) -> Int" and just directly "f (Bar i) = i; f (Baz s) = length s, f (Mouse m) = m"
08:41:11 <kuribas> merijn: the same for me. And my code becomes more readable.
08:41:31 <rtpg> this is very much a "thought about for a little bit" thing, where how the compiler turns this into executable code is probably tricky. TS doesn't have that problem since it doesn't have to actually evaluate the code of course
08:41:39 hyiltiz joins (~quassel@31.220.5.250)
08:42:26 <merijn> rtpg: How is writing (Foo | Mouse) in a function better than taking 1 line to define an ADT that implements that? :p
08:43:03 <rtpg> FooOrMouse = Either Foo Mouse , then I'm writing Left (Bar i) and Left (Baz s) blah blah blah.... it's all line noise to me in that case
08:43:29 <rtpg> like sometimes things don't have any conceptual meaning outside of one specific spot! Surely you have had situations where a thing just doesn't have a good name available for it right?
08:43:30 <kuribas> important semantic information /= line noise
08:44:53 <rtpg> I don't believe that saying Either and then Left/Right in this case is adding extra semantic information in these kinds of cases (where you're really just wanting a sum type). This isn't a general judgement on all sum types, just wondering if this is a thing that has been discussed
08:45:13 <merijn> rtpg: I didn't say either, I said defining your own ADT
08:45:48 × shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit)
08:46:36 <rtpg> You know that base lisp thing where if you want to define a variable with a let, you end up introducing indentation into your code that wouldn't exist in, say, Python/C? I feel the same way with introducing the intermediate ADT in my example (even if in the internals something would have to be done to get that to work)
08:47:59 <kuribas> rtpg: my take is that if you have lots of intermediate ADTs like that, your not thinking in a haskell way...
08:48:15 <kuribas> see my comment above
08:49:24 <kuribas> If I write my functions in haskell as I would write lisp, it may end up like that.
08:50:17 <kuribas> You don't write big functions with lots of functionality, but small functions which compose together to get the functionality.
08:50:28 <rtpg> you see the value of an anoymous function right? And why sometimes it's nice to not have to give everything a name?
08:50:34 SoF joins (~skius@user/skius)
08:50:45 <kuribas> rtpg: yes, that's how I use Either or (,).
08:50:47 <rtpg> or stuff like (+1)
08:51:10 <kuribas> rtpg: but honestly less and less, nowadays I often create intermedia datatypes.
08:51:35 <kuribas> same with anonymous functions, if they get too big, I just name them.
08:52:30 <rtpg> shrug, OK I guess this is not really a thing that's being thought about
08:53:14 <kuribas> Even using Either for something that is not an error, I consider a code smell...
08:54:09 <kuribas> rtpg: it is also just not how haskell works. It would make type inference impossible (or very hard).
08:55:39 <rtpg> yeah I get the inference argument. If the language existed just for me I would just say "ok you can use this but you have to explicitly write out the type for it to work" (since without that, inference would always be able to put A and B into A | B) but I mean... I get how that's probably far offbase from what anyone wants
08:55:40 <[exa]> rtpg: anonymous functions are okay, anonymous functions on types are okay too; the counter-image to anonymous types is actually anonymous data (think of "magical constants")
08:56:35 <[exa]> rtpg: you might want to have a look at the types in Julia; it neatly demonstrates how this "oh just allow both variants" easily evolves into a complete mess
08:57:41 <rtpg> oh... yep, Julia's Union is exactly what I was thinking about. Gonna read through these docs a bit
08:58:05 <[exa]> re anonymous data, you don't usually write stuff like "there can be `3` or `4` or `someString` here", right?
08:58:07 <kuribas> rtpg: I have actually been looking into the type clojure typesystem, and been comtemplating type inference, but it is *vastly* different from what haskell does.
08:58:45 <rtpg> There's so much more leeway to do random stuff when type info isn't actually used to , like, compile a program
08:59:16 <kuribas> I'd prefer not to do random stuff...
08:59:18 <rtpg> "random stuff" = "things that are extremely useful to establish invariants in your business logic"
08:59:48 <[exa]> ah, business logic
08:59:55 <kuribas> "invariants in business logic == types" for me...
09:00:25 <rtpg> The ability in Typescript to arbitrarily establish sum types, difference types (things like "this enum but without this specific value") is super duper usefl
09:00:25 <[exa]> I always read it as "business" means "no actual overlap with" there
09:01:04 <[exa]> rtpg: types aren't static checks
09:01:27 <[exa]> (can we finally rename that thing to StaticCheckScript? )
09:01:34 <rtpg> like imagine you have an enum with three variants, and you want something that only applies to two of those variants, and you want that to be checked statically
09:02:44 <[exa]> good, you add static checks and let your checker propagate them a bit
09:02:46 <kuribas> [exa]: aren't they?
09:03:12 <[exa]> kuribas: no, they don't evaluate
09:03:29 <kuribas> except in dependend languages?
09:03:39 <[exa]> yeah but let's not open that box now :D
09:03:56 <kuribas> or type families in haskell?
09:04:23 <kuribas> [exa]: if you restrict to haskell-2010 not I suppose...
09:04:45 <[exa]> type families evaluate types to types, that's still kinda okay
09:05:12 <[exa]> although they could cover the case with Int|Bool
09:06:45 <rtpg> I mean it's like... I just want the computer to verify things that it could theoretically verify (at least I think so). This probably requires a bit of a theory dive though, maybe in particular the idea of difference types makes some stuff just not work anymore
09:07:14 Gurkenglas joins (~Gurkengla@dslb-088-064-053-140.088.064.pools.vodafone-ip.de)
09:07:27 martin02 joins (~silas@141.84.69.76)
09:08:10 <rtpg> the fact that I can't restrict an input type to like... only certain ADT variants has always been a "we could potentially eliminate an entire class of bugs" thing for me, and yes I get that it's "not the same", but, y'know
09:10:06 <kuribas> rtpg: haskell isn't purescript. If you want to code like purescript, then code in... purescript?
09:10:27 <kuribas> rtpg: as merijn showed, this isn't a huge problem, just requires some wrapping and unwrapping.
09:12:20 <lortabac> rtpg: you can use Liquid Haskell to add this kind of restrictions to your types, if this is what you are looking for
09:12:39 <kuribas> just cosmetics or light boilerplate isn't a good reason to make complicated changes to a language IMO...
09:13:25 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Remote host closed the connection)
09:13:43 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
09:14:19 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Remote host closed the connection)
09:14:50 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
09:16:12 <rtpg> Oh you know what? I think Liquid Haskell might help out somewhat here with some of my use cases
09:17:22 <kuribas> rtpg: my guess is that you would be helped far better by refactoring your code, rather than jumping into liquid haskell.
09:19:12 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Ping timeout: 245 seconds)
09:21:21 <lortabac> TBH I haven't followed the whole discussion, I just proposed Liquid Haskell in response to "restricting input to certain variants"
09:30:05 × MQ-17J quits (~MQ-17J@8.6.144.209) (Ping timeout: 250 seconds)
09:32:06 <[exa]> rtpg: honestly you might eventually like that all restrictions actually need to be named
09:32:45 <[exa]> rtpg: consider someone else finding the `Bool|Int` sometime in the code sometime future-ish, and wondering "ah this is what breaks my usecase, let's just add the Float there"
09:33:02 <[exa]> s/sometime/somewhere
09:33:20 <rtpg> I consider that a feature not a bug
09:34:12 <[exa]> in the simplest crude case, you just do `class WorksInCaseX a` and add `instance WorksInCaseX Int` possibly with clear explanation comment
09:34:32 <[exa]> doesn't even need to have methods (but I guess that the usecase will find methods, at least for converting the values around)
09:36:24 <[exa]> also, it makes the thing a bit more maintainable, consider if someone starts to copy the Bool|Int around...
09:40:02 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
09:41:51 mc47 joins (~mc47@xmonad/TheMC47)
09:42:54 neo2 joins (~neo3@cpe-292712.ip.primehome.com)
09:44:16 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6) (Ping timeout: 250 seconds)
09:46:17 × lortabac quits (~lortabac@151.53.201.45) (Quit: WeeChat 2.8)
09:46:18 lavaman joins (~lavaman@98.38.249.169)
09:46:52 × ArctVaulMarsHMPJ quits (~pjetcetal@128-71-152-79.broadband.corbina.ru) (Read error: Connection reset by peer)
09:50:31 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
09:50:41 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 244 seconds)
09:51:19 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
09:52:07 MQ-17J joins (~MQ-17J@8.6.144.209)
09:52:21 ArctVaulMarsHMPJ joins (~pjetcetal@128-71-152-79.broadband.corbina.ru)
09:55:51 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Ping timeout: 244 seconds)
09:56:05 × Vooch quits (~iovoo@096-038-011-034.biz.spectrum.com) (Ping timeout: 250 seconds)
10:03:01 × MQ-17J quits (~MQ-17J@8.6.144.209) (Ping timeout: 250 seconds)
10:04:11 cfricke joins (~cfricke@user/cfricke)
10:05:55 × Pickchea quits (~private@user/pickchea) (Ping timeout: 252 seconds)
10:18:34 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
10:19:28 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:24:34 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
10:25:02 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:27:19 notzmv joins (~zmv@user/notzmv)
10:29:17 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
10:30:04 × APic quits (apic@apic.name) (Ping timeout: 252 seconds)
10:30:07 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
10:30:07 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 252 seconds)
10:30:53 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:33:20 jakalx parts (~jakalx@base.jakalx.net) ()
10:33:48 markus_ joins (~markus@80-121-50-158.adsl.highway.telekom.at)
10:34:39 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Ping timeout: 250 seconds)
10:35:57 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
10:37:05 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:37:18 jakalx joins (~jakalx@base.jakalx.net)
10:42:13 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
10:42:41 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:44:35 cfricke joins (~cfricke@user/cfricke)
10:45:58 × Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
10:46:12 kuribas parts (~user@ptr-25vy0i98x8tu9s1v8mf.18120a2.ip6.access.telenet.be) (ERC (IRC client for Emacs 26.3))
10:47:17 Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
10:48:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
10:48:53 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:49:00 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
10:49:58 × jushur quits (~human@user/jushur) (Quit: ¯\_(ツ)_/¯)
10:52:30 APic joins (apic@apic.name)
10:54:10 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
10:54:29 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:55:32 acidjnk_new3 joins (~acidjnk@p200300d0c72b9584cdff497abed31e64.dip0.t-ipconnect.de)
10:58:59 × Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
10:59:16 × acidjnk_new quits (~acidjnk@p200300d0c72b952094eaf2f81a5b0fde.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
10:59:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
11:00:22 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:01:02 alx741 joins (~alx741@186.178.108.114)
11:03:00 × kenran quits (~kenran@b2b-37-24-119-190.unitymedia.biz) (Quit: WeeChat info:version)
11:03:09 Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
11:05:27 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
11:06:21 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:08:11 × Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
11:09:00 × jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
11:09:44 AlexNoo_ joins (~AlexNoo@178.34.163.49)
11:12:01 × Alex_test quits (~al_test@94.233.240.82) (Ping timeout: 248 seconds)
11:12:33 × AlexZenon quits (~alzenon@94.233.240.82) (Ping timeout: 248 seconds)
11:13:07 × AlexNoo quits (~AlexNoo@94.233.240.82) (Ping timeout: 240 seconds)
11:16:42 AlexZenon joins (~alzenon@178.34.163.49)
11:16:47 × juhp quits (~juhp@bb116-14-48-29.singnet.com.sg) (Ping timeout: 240 seconds)
11:16:48 Alex_test joins (~al_test@178.34.163.49)
11:21:52 neo1 joins (~neo3@cpe-292712.ip.primehome.com)
11:22:28 × mc47 quits (~mc47@xmonad/TheMC47) (Read error: Connection reset by peer)
11:22:33 themc47 joins (~mc47@xmonad/TheMC47)
11:23:13 opac joins (~opac@ip-28-56.sn2.clouditalia.com)
11:24:48 × neo2 quits (~neo3@cpe-292712.ip.primehome.com) (Ping timeout: 250 seconds)
11:25:33 fendor_ joins (~fendor@91.141.74.138.wireless.dyn.drei.com)
11:26:31 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
11:27:50 × fendor quits (~fendor@178.165.182.151.wireless.dyn.drei.com) (Ping timeout: 250 seconds)
11:27:57 ahri joins (~ahri@195.158.248.151)
11:28:31 Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
11:29:08 kuribas joins (~user@ptr-25vy0i98x8tu9s1v8mf.18120a2.ip6.access.telenet.be)
11:29:41 <ahri> I think I'm being a bit dense here, but I can't guess the syntax to use a shared function in an instance definition, like with a "where" in a function definition
11:30:42 <ahri> https://paste.tomsmeding.com/QA1aEJhV is a syntax error
11:31:01 <Hecate> hmm
11:31:04 <Hecate> indeed
11:31:12 <Hecate> ahri: what does the code look like without the shared function?
11:31:38 <ahri> it's a bit messier because I'm using H
11:31:44 <ahri> sorry, mistyped
11:32:08 <ahri> I'm using GHC and Haste with the same codebase, so I have CPP enabled and some defined macros
11:32:22 <Hecate> ahri: did you think of putting the helper function outside of the instance?
11:32:39 <Hecate> in the end, you just have to not export it
11:32:54 <ahri> yeah, I was hoping I could keep it neater, but you're right; it's not a big deal
11:32:59 <Hecate> but if you let me see the code I can give you my opinion on the whole thing
11:33:55 × hannessteffenhag quits (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
11:34:03 <Hecate> ahri: but yeah, this is a minor detail, don't think too much into it :)
11:34:07 Pickchea joins (~private@user/pickchea)
11:34:09 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
11:34:54 benin0369329 joins (~benin@183.82.206.204)
11:35:39 <ahri> https://paste.tomsmeding.com/kMULblU0 is what it looks like - I'm writing JSON instances for Aeson and Haste at the same time
11:36:09 <ahri> this works, but Aeson is not encoding the JSON as I would like - the order of keys is non-deterministic (because it uses a map)
11:36:39 <ahri> so it seems I will need to add a `toEncoding` definition for my types
11:37:01 <ahri> I found an example at https://stackoverflow.com/questions/37865388/haskell-generating-json-with-aeson-gives-incorrect-order-of-fields
11:37:31 <ahri> but I would prefer not to have the maintenance burden of repeating everything, hence a shared helper
11:37:43 × benin036932 quits (~benin@183.82.206.204) (Ping timeout: 252 seconds)
11:37:43 benin0369329 is now known as benin036932
11:39:01 <ahri> the key problem I'm trying to solve is that many of my instances have a `type` property to switch on, and I want this to go first so that when I'm debugging my application I can see what events occurred, in what order, in a pretty way so that it's not mentally taxing to search through each line to understand the log event
11:39:26 <ahri> (I'm aware that the property order does not matter to the computers involved - but it does to me!)
11:41:55 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
11:42:37 <Hecate> ahri: yeah this is understandable
11:43:54 <merijn> If it used a Map, then wouldn't the order of keys be deterministic :p
11:44:00 <merijn> Unless it serialises the Map in a weird way
11:46:11 <ahri> I mis-spoke; the order may be deterministic but it's not in insertion order
11:46:28 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6) (Ping timeout: 250 seconds)
11:47:00 <ahri> I suppose it's in hashcode order :)
11:48:42 <kuribas> merijn: Aeson objects are hashmaps.
11:48:44 <ahri> Aeson is using Data.HashMap.Strict under the hood
11:48:47 <merijn> ah
11:48:50 <merijn> Bah
11:50:01 hannessteffenhag joins (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
11:50:06 <kuribas> ahri: make a newtype with a custom Aeson decoder.
11:50:23 <kuribas> ahri: where it checks for the "type" fields, then outputs that first.
11:50:29 × Gurkenglas quits (~Gurkengla@dslb-088-064-053-140.088.064.pools.vodafone-ip.de) (Ping timeout: 250 seconds)
11:50:56 <kuribas> ahri: then use that newtype to print to the log.
11:51:17 <ahri> thanks, I'll have a look at that!
11:51:19 <kuribas> ahri: hmm, or better, use deriving via
11:51:30 <kuribas> (via the newtype of course)
11:52:12 <kuribas> ahri: just make sure you don't make recursive definitions which loop!
11:53:36 <kuribas> ahri: if that doesn't work, you can also make a custom "Value" printer.
11:54:30 × hannessteffenhag quits (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
11:54:52 goepsilongo joins (~goepsilon@2603-7000-ab00-62ed-f994-ccd9-a78d-3463.res6.spectrum.com)
11:59:14 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
12:03:03 slowButPresent joins (~slowButPr@user/slowbutpresent)
12:04:30 lavaman joins (~lavaman@98.38.249.169)
12:05:41 hannessteffenhag joins (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
12:08:03 × Nahra quits (~user@static.161.95.99.88.clients.your-server.de) (Remote host closed the connection)
12:08:42 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
12:08:54 Nahra joins (~user@static.161.95.99.88.clients.your-server.de)
12:09:14 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
12:10:11 × hannessteffenhag quits (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 244 seconds)
12:15:16 × arjun quits (~Srain@user/arjun) (Remote host closed the connection)
12:20:40 × markpythonicbtc quits (~textual@c-24-6-12-87.hsd1.ca.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:21:11 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:24:03 fendor_ is now known as fendor
12:24:20 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
12:25:57 frobnicator joins (~frobnicat@185-227-75-147.dsl.cambrium.nl)
12:26:10 × acidjnk_new3 quits (~acidjnk@p200300d0c72b9584cdff497abed31e64.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
12:27:14 × qwedfg quits (~qwedfg@user/qwedfg) (Read error: Connection reset by peer)
12:27:27 <frobnicator> how do you pattern match on records. E.g.: data Tuple a b = Tuple {first :: a, second :: b} -- appFst f t@{first=a} = t { first=f a }
12:28:41 Erutuon joins (~Erutuon@user/erutuon)
12:29:04 qwedfg joins (~qwedfg@user/qwedfg)
12:29:34 goepsilongo_ joins (~goepsilon@2603-7000-ab00-62ed-41c9-c3be-94ad-0c24.res6.spectrum.com)
12:29:39 <kuribas> frobnicator: appFst f t@Tuple{first=a} = t { first = f a}
12:29:41 × ahri quits (~ahri@195.158.248.151) (Quit: zzz)
12:30:01 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 252 seconds)
12:30:13 <kuribas> frobnicator: the extensions recordWildCards and nameFieldPuns are also great.
12:30:24 <frobnicator> ahh I see, thanks
12:30:46 × goepsilongo quits (~goepsilon@2603-7000-ab00-62ed-f994-ccd9-a78d-3463.res6.spectrum.com) (Ping timeout: 256 seconds)
12:32:10 × jonathanx_ quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Ping timeout: 252 seconds)
12:33:10 × Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
12:35:14 hannessteffenhag joins (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
12:36:14 L29Ah joins (~L29Ah@user/l29ah)
12:36:28 vektor joins (~vektor@212.232.83.94)
12:37:02 Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
12:38:17 jonathanx_ joins (~jonathan@dyn-8-sc.cdg.chalmers.se)
12:38:39 × vektor quits (~vektor@212.232.83.94) (Client Quit)
12:39:12 Vektor joins (~Vektor@212.232.83.94)
12:39:38 × Pickchea quits (~private@user/pickchea) (Ping timeout: 244 seconds)
12:39:55 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
12:40:13 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
12:41:28 juhp joins (~juhp@128.106.188.220)
12:41:58 lortabac joins (~lortabac@62.98.7.122)
12:45:36 kenran joins (~kenran@200116b82beee700b3543c7d21744630.dip.versatel-1u1.de)
12:46:39 <Vektor> I'm struggling to sort out my types here: https://paste.tomsmeding.com/SjS9fUbr - probability is a complicated bit of logic that has the provided type. I could change some details if necessary. grad is a function of Numeric.AD, signature provided for convenience. I need a type signature for the "something" function. Usually, I'd let the compiler
12:46:40 <Vektor> sort this out, but in this case that's impossible for reasons that escape me.
12:47:45 <Vektor> Basicallý, type inference doesn't work with forall, afaict, and I need a forall in the signature of "something". Hence I need to explicitly provide that. I gave it my best shot, but ghc is insistent on using two different variables s and s1, which imo should be unified and I'd be golden.
12:47:58 <kuribas> Vektor: if it cannot match two "rigid variables", it almost always means you have to provide a type somewhere.
12:48:07 × max22- quits (~maxime@2a01cb0883359800e8f3a18d7241b1b5.ipv6.abo.wanadoo.fr) (Ping timeout: 250 seconds)
12:48:45 × opqdonut quits (opqdonut@pseudo.fixme.fi) (Remote host closed the connection)
12:48:56 <kuribas> Vektor: in particular, you want to fix the first argument of Reverse to someting.
12:49:31 opqdonut joins (opqdonut@pseudo.fixme.fi)
12:50:04 <kuribas> Vektor: what often helps is to enable scopedTypeVariables, and giving manual types to intermediate expressions.
12:50:15 qwedfg_ joins (~qwedfg@user/qwedfg)
12:50:18 <kuribas> When it typechecks, start removing the types to clean it up.
12:51:00 × qwedfg quits (~qwedfg@user/qwedfg) (Ping timeout: 244 seconds)
12:51:17 <Vektor> I've applied the last trick myself. Not with scopedTypeVariables, usually, but rather by testing things in global scope where I can annotate anyway. Hasn't helped me here this far.
12:51:36 <Vektor> The "explicit s" might be a good shout, I'll poke around numeric.AD for a clue.
12:54:35 <kuribas> Vektor: the rankN type in grad is probably the cause.
12:55:39 × qwedfg_ quits (~qwedfg@user/qwedfg) (Ping timeout: 244 seconds)
12:55:42 AlexNoo_ is now known as AlexNoo
12:56:01 qwedfg joins (~qwedfg@user/qwedfg)
12:57:03 × Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
12:57:04 × phma quits (~phma@host-67-44-208-231.hnremote.net) (Read error: Connection reset by peer)
12:57:18 Vajb joins (~Vajb@2001:999:65:a818:f418:a5b8:e792:8650)
13:00:40 phma joins (~phma@host-67-44-208-231.hnremote.net)
13:00:52 <kuribas> Vektor: perhaps that lambda passed to grad doesn't fix the `s` type variable?
13:02:14 <Vektor> could I explicitly omit the details of grad by... I dunno, wrapping it or something? I mean, if we know that forall Num a, Reverse s a is also Num, then that just means that grad can be applied to any function Num a, Functor f => f a -> a, and will give a gradient function of type f b -> f b (Num b), right? Can I provide something like grad_ ::
13:02:15 <Vektor> [..]; grad_ = grad that omits all that nonsense about Reverse and Reifies?
13:02:38 <Vektor> Ohh, the lambda messing things up is a good idea, I'll give that one a type.
13:03:15 <Vektor> *try
13:03:52 <kuribas> Vektor: I think it uses an intermediary type to compute the gradient, but if you leave it polymorphically, it will complain.
13:03:56 markpythonicbtc joins (~textual@50.228.44.6)
13:04:10 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 240 seconds)
13:04:27 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
13:05:46 <kuribas> Vektor: the constraint for something (Num a2, Reifies s Tape) says it has to use the type variable `s`, but ghc determines that it can also use other things besides `s`.
13:07:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Quit: Lost terminal)
13:07:57 <kuribas> So it complains.
13:08:03 <Vektor> You're not saying that simply changing s to s1 will fix it, right?
13:08:15 <kuribas> indeed, I am not saying that :)
13:08:23 <kuribas> s and s1 are free variables.
13:08:31 × Vajb quits (~Vajb@2001:999:65:a818:f418:a5b8:e792:8650) (Ping timeout: 252 seconds)
13:09:21 <kuribas> You need scopedTypeVariables, put a "forall s ." on "something", the provide a type annotation using "s" in the lambda.
13:09:28 Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
13:10:08 <kuribas> well s1 is a free variable, s is bound inside the type signator, but not available outside.
13:10:40 <kuribas> You can make s available inside the function body by writing a "forall s." and using scopeTypeVariables.
13:10:52 <Vektor> something:: forall s a2. (Num a2, Reifies s Tape) => [([Char], Expr (Reverse s a2))] -> Expr (Reverse s a2) -> Value (Reverse s a2) -> [a2] -> [a2] - pretty much the same error
13:12:01 <Vektor> Not sure if I'm expressing what I want to express there..
13:13:30 <kuribas> Vektor: no, you need to put a signature in the lambda body...
13:16:17 Boomerang joins (~Boomerang@xd520f68c.cust.hiper.dk)
13:17:54 <kuribas> Vektor: IMO they should have taken a proxy argument.
13:18:03 <Vektor> I've extracted the lambda into it's own function to see what ghc would think it is, and it's just :: Num a => ...
13:18:39 <Vektor> If I'm not mistaken, that means I don't need s in there and don't need a forall, right?
13:19:03 <kuribas> Vektor: yes, you do.
13:19:08 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
13:19:15 × lortabac quits (~lortabac@62.98.7.122) (Quit: WeeChat 2.8)
13:24:04 <Vektor> I've tried \(theta :: [Reverse s a2]) -> ....; still the same kind of error.
13:24:14 <Vektor> Is that what you had in mind?
13:24:15 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
13:25:00 <Vektor> https://paste.tomsmeding.com/d7tR8aJG - there's the error
13:26:41 renzhi joins (~xp@2607:fa49:6500:3d00::d986)
13:27:10 lep is now known as test
13:27:22 test is now known as lep
13:28:16 mastarija joins (~mastarija@78-3-210-70.adsl.net.t-com.hr)
13:30:27 × quantum quits (~quantum@user/quantum/x-8556232) (Quit: Reconnecting)
13:30:38 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
13:30:44 quantum joins (~quantum@user/quantum/x-8556232)
13:31:08 geekosaur joins (~geekosaur@xmonad/geekosaur)
13:31:55 lep is now known as lep-
13:32:24 <kuribas> Vektor: no, the a2 must be free.
13:32:47 <mastarija> Do we have a list of which GHC version uses which base?
13:34:50 <Vektor> kuribas: ok, tried "(\(theta :: Num a => [Reverse s a]) -> ..", same thing.
13:35:01 Morrow_ joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
13:36:02 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:36:26 Sgeo joins (~Sgeo@user/sgeo)
13:37:52 <kuribas> Vektor: (\theta -> unwrapP $ probability env theta expr sample) :: forall a .Expr (Reverse s a) -> Reverse s a
13:39:02 justsomeguy joins (~justsomeg@user/justsomeguy)
13:39:14 <Vektor> theta is [Reverse s a] instead of Expr (Reverse s a); I assume you just looked at the wrong parameter type, right?
13:39:34 <kuribas> Vektor: erm no, sorry that was wrong...
13:39:44 <kuribas> Vektor: the grad functions gets to choose the "s" type variable.
13:39:54 <kuribas> Vektor: So you cannot choose.
13:40:14 y04nn joins (~y04nn@91.193.4.154)
13:41:00 <kuribas> Vektor: so this is wrong: something :: (Num a2, Reifies s Tape) =>
13:41:12 <kuribas> Vektor: because it says "something" can choose the s type variable.
13:41:25 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 250 seconds)
13:42:30 acidjnk_new3 joins (~acidjnk@p200300d0c72b9584cdff497abed31e64.dip0.t-ipconnect.de)
13:42:53 <kuribas> Vektor: also, you cannot pass this to grad: [([Char], Expr (Reverse s a2))]
13:43:25 <kuribas> Vektor: basically, the "something" function should not have the "s" type variable, or "Reverse" type anywhere.
13:43:34 jippiedoe joins (~david@2a02-a44c-e14e-1-b13-831d-8b8c-690b.fixed6.kpn.net)
13:44:00 burnsidesLlama joins (~burnsides@client-8-91.eduroam.oxuni.org.uk)
13:44:00 <Vektor> Conceptually, I'd agree. How do I tell that to ghc? :D
13:45:03 <kuribas> Vektor: but in that case, env and expr would need to be polymorphic, no?
13:45:50 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
13:45:54 <Vektor> Kinda, yeah. I mean, conceptually what grad does is it wraps the parameters (theta in this case) into a more bespoke type that records what happens to the number.
13:46:02 <Vektor> That can be used to compute the gradient.
13:46:51 <Vektor> Therefore, any computation that is differentiated, must be Num a => f a -> a
13:47:21 <Vektor> Polymorphic over all Num, such that grad can feed in it's special Num type.
13:47:45 <merijn> Sounds like you want Rank2Types
13:47:55 <Vektor> How
13:48:01 <Vektor> 's that different from RankNTypes?
13:48:07 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
13:48:21 <merijn> RankN is just Rank2 generalised to, well, N :p
13:48:56 <merijn> I missed the start of the conversation, though, so that was a blind comment :p
13:49:06 <kuribas> it looks like impredicative types though...
13:49:29 hyiltiz joins (~quassel@31.220.5.250)
13:49:44 <merijn> If you want to *return* a RankNType, then yes
13:50:04 <kuribas> can you pass (forall a. Expr (Reverse s a2)) to a function?
13:50:14 <merijn> Wrap it in a newtype
13:50:26 <merijn> kuribas: You can
13:50:29 <kuribas> anyway, I have no idea what he is doing, so I am just guessing.
13:50:31 <merijn> kuribas: But you can't return it
13:50:58 <Vektor> merijn: https://paste.tomsmeding.com/SjS9fUbr - I have to find a proper type signature for "something". Type inference won't help, because a forall has to go somewhere there.
13:52:26 <Vektor> As far as I can tell, s and s1 in that type signature ought to be the same thing, but I don't know how to express that
13:52:27 × hololeap_ quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds)
13:52:58 <kuribas> Vektor: you cannot express it. You cannot choose s.
13:52:58 <merijn> not enough context
13:53:08 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving)
13:53:22 <kuribas> Vektor: the "grad" function decides what is "s".
13:53:54 <Vektor> kuribas: Conceptually, I agree. But what do I do with that info, in terms of writing a type signature?
13:54:07 lep- is now known as lep
13:54:24 <kuribas> Vektor: I have no idea, because I have no what you are doing.
13:54:27 <tomsmeding> Vektor: should the second => in the type of unwrapP be -> ?
13:54:57 <kuribas> Vektor: it's not just "conceptually", the type system prevents you from fixing the "s" to anything.
13:55:01 <Vektor> tomsmeding: Correct, sorry about that
13:55:43 <tomsmeding> Vektor: does 'Env a' resolve to '[([Char], Expr a)]' ?
13:56:14 <Vektor> Oh, did I leave that in? Yeah, it does. Sorry about the confusion
13:57:08 Pickchea joins (~private@user/pickchea)
13:57:57 <jippiedoe> grad wants its function argument to work on any `s`, whereas your `something` is trying to make it work on a specific `s`, so I think it will need more adjustment than we can do with only type annotations
13:58:03 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
13:58:14 <tomsmeding> yeah that's correct
13:58:42 aegon joins (~mike@174.127.249.180)
13:58:50 <Vektor> As for what I'm doing, I'm doing some machine learning. I want to maximize the probability of my data wrt. my model. My model is given as Expr a. Expr being a recursive type that encapsulates a language.
13:58:56 <tomsmeding> the three arguments to 'something' all have 's' in their types, meaning that the caller decides on that 's'
13:59:06 <Vektor> Value a are samples (again, polymorphic over numerical types to deal with grad.
13:59:12 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
13:59:19 <Vektor> And Env a is context for the computation.
13:59:25 <tomsmeding> Vektor: I think that the arguments to 'something' should not be of type Reverse s a, but of type a
14:00:01 <Vektor> In a nutshell: probability is relatively fixed in it's type signature. I want a gradient of the theta argument (the [a]).
14:00:24 × sm2n quits (~sm2n@user/sm2n) (Quit: Leaving)
14:00:31 <merijn> Vektor: I think you wanna existentially hide the polymorphic part from you types. But you paste doesn't have any type definitions, so it's hard to say
14:00:33 <Vektor> tomsmeding: That's a good point.
14:00:35 sm2n joins (~sm2n@user/sm2n)
14:00:55 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 250 seconds)
14:01:02 <Vektor> merijn: Which ones do you need? Expr, Value, Probability?
14:01:28 <merijn> Everything that appear in those type signatures? :p
14:01:37 <merijn> Else it's just random guess work
14:01:37 × aman quits (~aman@user/aman) (Quit: aman)
14:02:08 <kuribas> Vektor: or you can fix the type of the samples, and put a "fmap fromInteger" inside the lambda.
14:02:29 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
14:02:29 <jippiedoe> merijn: did you see https://paste.tomsmeding.com/SjS9fUbr too? It has some of those
14:02:39 aman joins (~aman@user/aman)
14:02:55 <merijn> jippiedoe: That paste has none of the datatypes?
14:03:31 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 252 seconds)
14:04:11 <Vektor> https://paste.tomsmeding.com/lMbNL2MS - try this, it's got the ones I made up. The others are part of Numeric.AD
14:05:06 <tomsmeding> Vektor: you should use 'auto' from the 'ad' library, which has type a -> Reverse s a
14:05:33 <tomsmeding> and take env, expr and sample with 'a' instead of 'Reverse s a' in their types, and use 'auto' to convert them to Reverse form
14:05:54 <tomsmeding> that is, assuming they are constants from the perspective of differentiation
14:06:01 notzmv joins (~zmv@user/notzmv)
14:06:30 <tomsmeding> 'Reverse' pairs a value with something that collects derivatives for that value, so to inject constants into the computation, you have to pair them with a "dummy" derivative collector that doesn't collect anything for this value
14:06:34 <tomsmeding> and that's exactly what 'auto' does
14:07:30 <Vektor> tomsmeding that makes sense. I think by failing to do that, I forced env, theta and expr to expose the ugly reverse innards of the differentiation to the function signature of something.
14:07:39 <Vektor> Which got me into this mess in the first place.
14:08:08 <tomsmeding> Vektor: kind of -- the 's' parameter is a phantom type parameter which ensures if you call 'grad' two times, their inner computations can't mix up
14:08:23 <tomsmeding> it's similar to the 's' type parameter in the ST monad in standard Haskell
14:09:04 <tomsmeding> so the very _purpose_ of that 's' type parameter is that it's impossible to let it "leak" outside of that lambda argument to 'grad'
14:09:12 <aegon> ghc's user guide seems to have some large warnings about using linear haskell. Anyone have experience using it out in the wild? Is it garunteed to break a project aside from exploratory use cases or is it more like, it might not do as expected etc... And if its part way there, what can i do to help with the development of it?
14:09:29 <tomsmeding> which is exactly what you tried to do, and the compiler rightfully denied that :) (Though the error is perhaps less intuitive than you might like)
14:10:15 <merijn> aegon: It's mostly a newly released, fairly fundamentally different, big extension to the type system
14:10:19 <Vektor> tomsmeding: Preach. Yeah, I was kind of confused when it tried to force my constants to become Reverse s a typed. Didn't understand the purpose of s though...
14:10:32 <merijn> aegon: So it's hard to predict how it affects things, hence warning signs
14:11:13 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
14:12:01 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
14:12:01 <aegon> merijn: awesome, sounds like it wouldn't be to crazy to go start applying it and hope nothing huge breaks then :)
14:12:10 <tomsmeding> Vektor: this question was easy for me to answer because I'm literally implementing a reverse AD algorithm at the moment :p
14:12:53 <Vektor> Heh. Is it better than what EKmett created? Should I use it? Or just for academic purposes?
14:13:18 <tomsmeding> it's not on Haskell directly, but on an embedded language, so it's not a replacement for 'ad' per se
14:13:43 <tomsmeding> 'ad' is great, use it if it works for what you want to do :)
14:14:11 <Vektor> embedded language as in you implemented a language within haskell?
14:14:21 × mastarija quits (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Ping timeout: 250 seconds)
14:14:28 <tomsmeding> if you want more parallelism, and Accelerate has the right building blocks for you, then I'm working on AD for Accelerate :p (https://hackage.haskell.org/package/accelerate)
14:14:40 <tomsmeding> I didn't, someone else did
14:15:32 <tomsmeding> but using accelerate for the first time can be a bit of a rabbit hole, so only try it if you want and have some time :)
14:15:53 <Vektor> Oh, AD is plenty rabbit hole for me, thankyouverymuch :)
14:16:35 <Vektor> Also, I don't think I want more parallelism because the kind of models I'm looking to differentiate aren't very parallelizable either. Makes sense, right?
14:17:12 <tomsmeding> I don't know what kind of models you're working on, but if they aren't parallelisable, then they aren't :p
14:17:24 <tomsmeding> are you doing probabilistic programming?
14:18:29 <Vektor> Is it that obvious? Yeah, I am
14:18:59 <tomsmeding> Probability + AD
14:19:11 <Vektor> fair point
14:19:20 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Quit: mikoto-chan)
14:21:07 × y04nn quits (~y04nn@91.193.4.154) (Ping timeout: 252 seconds)
14:21:39 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
14:21:39 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
14:21:39 wroathe joins (~wroathe@user/wroathe)
14:21:56 <Vektor> You're a PhD student as well. What are you working on?
14:22:05 <tomsmeding> currently, AD :p
14:22:17 <tomsmeding> not too sure what the future will hold yet
14:22:32 <Vektor> Now if that isn't a PhD candidate mood right there.
14:22:36 <tomsmeding> :D
14:22:47 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
14:23:02 <tomsmeding> mind if I ask what kind of models you're trying to optimise? and perhaps why you aren't using something like stan? (https://mc-stan.org/)
14:23:12 <tomsmeding> s/optimise/fit/
14:23:22 × tdammers quits (~tdammers@77.109.72.213) (Quit: WeeChat 2.3)
14:24:08 <Vektor> I assume you're working more on the engineering / parallelism side of AD then? From up here, AD looks like an otherwise solved problem.
14:25:02 <tomsmeding> yeah, basically how to do it in a 1. nice way (i.e. preferably mathematically proven correct), and 2. on specific languages, in particular Accelerate and Accelerate-like languages like Futhark
14:25:35 <tomsmeding> 'ad' doesn't work for (2.) because it uses fancy Haskell features that don't really work on a GPU or something
14:26:29 × michalz quits (~michalz@185.246.204.40) (Ping timeout: 250 seconds)
14:28:22 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
14:31:20 nschoe joins (~quassel@2a01:e0a:8e:a190:58d9:8430:bb92:1d4d)
14:32:12 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
14:35:12 michalz joins (~michalz@185.246.204.33)
14:39:49 × acidjnk_new3 quits (~acidjnk@p200300d0c72b9584cdff497abed31e64.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
14:41:09 shriekingnoise joins (~shrieking@186.137.144.80)
14:42:55 × haritzondo quits (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
14:43:22 haritz joins (~hrtz@62.3.70.206)
14:43:22 × haritz quits (~hrtz@62.3.70.206) (Changing host)
14:43:22 haritz joins (~hrtz@user/haritz)
14:44:24 lep is now known as lep-
14:44:38 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
14:48:54 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6) (Ping timeout: 250 seconds)
14:54:29 × azeem quits (~azeem@62.18.127.19) (Ping timeout: 244 seconds)
14:55:40 azeem joins (~azeem@62.18.127.19)
14:59:04 × goepsilongo_ quits (~goepsilon@2603-7000-ab00-62ed-41c9-c3be-94ad-0c24.res6.spectrum.com) (Ping timeout: 252 seconds)
15:00:35 goepsilongo joins (~goepsilon@2603-7000-ab00-62ed-41c9-c3be-94ad-0c24.res6.spectrum.com)
15:00:40 tdammers joins (~tdammers@77.109.72.213.res.static.edpnet.net)
15:01:52 rembo10_ joins (~rembo10@wally.codeshy.com)
15:02:05 Vooch joins (~iovoo@096-038-011-034.biz.spectrum.com)
15:02:20 × Boomerang quits (~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 250 seconds)
15:02:44 × fabfianda quits (~fabfianda@37.183.255.57) (Quit: Quit)
15:07:56 rembo10_ parts (~rembo10@wally.codeshy.com) ()
15:10:00 <sim590> int-e: about the miniaml example. Everything was contained in the two first linked files (ix.io links). There was a definition for generator and the class, no? Only, `use` is from Control.Lens.
15:10:08 max22- joins (~maxime@2a01cb08833598003c11741276acc8d8.ipv6.abo.wanadoo.fr)
15:10:26 rembo10 joins (~rembo10@wally.codeshy.com)
15:10:43 × bitmapper quits (uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity)
15:11:34 <sim590> int-e: is it possible to specify that the signature of the class should only require the code to work for some `DHMaterial z`. Is that done with like for instance the `exists` keyword? I'm not sure. I've seen that somewhere.
15:11:49 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
15:13:22 × alx741 quits (~alx741@186.178.108.114) (Ping timeout: 245 seconds)
15:17:46 × azeem quits (~azeem@62.18.127.19) (Ping timeout: 252 seconds)
15:18:17 <int-e> sim590: Oh I missed the first of the three links. I don't know, maybe you could have a type family to obtain z from v and/or b?
15:18:52 azeem joins (~azeem@62.18.127.19)
15:23:16 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
15:23:41 Everything joins (~Everythin@37.115.210.35)
15:25:37 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.2)
15:26:19 alx741 joins (~alx741@181.196.68.163)
15:27:52 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
15:28:04 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
15:28:28 hendursaga joins (~weechat@user/hendursaga)
15:28:57 <sim590> Actually, the design is supposed to make `z` independant from `v` and `b`. `z` is used to actually create `v` and `b`. Normally, a public key `b` is created by computing `z ^ v` where `v` is the private key. So, I had this class defined in order to required the retrival of `z` (that could be changed at any time by the user of the library. It's possible that at some point, the generator is changed
15:28:59 <sim590> and that new public and private keys must created. The private key is just a random number, but the public key is the exponentiation of `z` with `v`. But it wouldn't make sens to have `z` retrieved from `v` or `b`.
15:29:19 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
15:35:25 <sim590> Do I need to add `z` in the parameters of the class definition?
15:37:26 × Pickchea quits (~private@user/pickchea) (Ping timeout: 250 seconds)
15:39:06 × dajoer quits (~david@user/gvx) (Quit: leaving)
15:41:26 × markpythonicbtc quits (~textual@50.228.44.6) (Remote host closed the connection)
15:41:40 × kenran quits (~kenran@200116b82beee700b3543c7d21744630.dip.versatel-1u1.de) (Ping timeout: 240 seconds)
15:42:49 kenran joins (~kenran@200116b82beee70044dd35752422467f.dip.versatel-1u1.de)
15:46:24 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
15:46:24 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
15:46:24 wroathe joins (~wroathe@user/wroathe)
15:47:30 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
15:47:41 stiell joins (~stiell@gateway/tor-sasl/stiell)
15:47:56 xenon- joins (~bc8167eb@217.29.117.252)
15:49:48 lavaman joins (~lavaman@98.38.249.169)
15:50:46 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
15:50:46 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
15:51:27 × burnsidesLlama quits (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Remote host closed the connection)
15:51:42 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
15:52:00 burnsidesLlama joins (~burnsides@client-8-91.eduroam.oxuni.org.uk)
15:52:57 × d0ku quits (~d0ku@178.43.56.75.ipv4.supernova.orange.pl) (Ping timeout: 245 seconds)
15:53:54 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 244 seconds)
15:56:11 × burnsidesLlama quits (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Ping timeout: 250 seconds)
15:56:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
15:57:48 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:01:37 lavaman joins (~lavaman@98.38.249.169)
16:02:52 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
16:02:52 × azeem quits (~azeem@62.18.127.19) (Ping timeout: 252 seconds)
16:03:00 azeem joins (~azeem@62.18.127.19)
16:03:52 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:03:58 × markus_ quits (~markus@80-121-50-158.adsl.highway.telekom.at) (Ping timeout: 252 seconds)
16:05:35 lbseale joins (~lbseale@user/ep1ctetus)
16:08:19 drewolson joins (~drewolson@user/drewolson)
16:08:55 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
16:09:28 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:09:39 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6) (Remote host closed the connection)
16:10:01 × Vektor quits (~Vektor@212.232.83.94) (Ping timeout: 256 seconds)
16:11:38 goepsilongo_ joins (~goepsilon@2603-7000-ab00-62ed-d076-a878-a2d3-a90b.res6.spectrum.com)
16:13:05 × sleblanc quits (~sleblanc@user/sleblanc) (Ping timeout: 250 seconds)
16:13:50 × goepsilongo quits (~goepsilon@2603-7000-ab00-62ed-41c9-c3be-94ad-0c24.res6.spectrum.com) (Ping timeout: 250 seconds)
16:14:58 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
16:14:58 × kenran quits (~kenran@200116b82beee70044dd35752422467f.dip.versatel-1u1.de) (Ping timeout: 252 seconds)
16:16:37 × sm2n quits (~sm2n@user/sm2n) (Ping timeout: 252 seconds)
16:16:51 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
16:17:00 kenran joins (~kenran@200116b82beee70044dd35752422467f.dip.versatel-1u1.de)
16:17:40 Guest6371 joins (~Guest63@86.123.174.39)
16:17:44 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
16:20:43 × Guest6371 quits (~Guest63@86.123.174.39) (Client Quit)
16:22:47 mastarija joins (~mastarija@78-3-210-70.adsl.net.t-com.hr)
16:24:03 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2)
16:24:29 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
16:24:40 jaspervdj joins (~jaspervdj@2a04:ee41:3:52cb:ef96:f70:dfb8:90e3)
16:24:56 × kenran quits (~kenran@200116b82beee70044dd35752422467f.dip.versatel-1u1.de) (Quit: WeeChat info:version)
16:26:02 lep- is now known as lep
16:27:33 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
16:27:49 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
16:28:08 son0p joins (~ff@181.136.122.143)
16:29:08 <sim590> I've added `z` to the class parameters and it seems like it's fine now. Also, I mixed up the type of `z` when I wrote `(MyDHComputableInteger g) <- use generator`. I should have just written `g <- use generator` but that wasn't the whole problem. So yeah, adding `z` in the parameters of the class is the solution. It seems logical to me now that I understand the error message and the meaning of
16:29:10 <sim590> "rigid type variable" a bit more.
16:29:53 <sim590> int-e: I don't know about type families though. I'll have a look at that also.
16:29:58 <sim590> Thanks!
16:31:59 napping joins (~brandon@65.128.58.64)
16:32:09 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Quit: mikoto-chan)
16:36:16 × hannessteffenhag quits (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 244 seconds)
16:36:50 Gurkenglas joins (~Gurkengla@dslb-088-064-053-140.088.064.pools.vodafone-ip.de)
16:36:59 × aman quits (~aman@user/aman) (Quit: aman)
16:38:34 × amk quits (~amk@109.255.169.126) (Ping timeout: 252 seconds)
16:39:26 wroathe joins (~wroathe@user/wroathe)
16:40:47 amk joins (~amk@109.255.169.126)
16:41:21 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
16:43:21 × Axman6 quits (~Axman6@user/axman6) (*.net *.split)
16:43:21 × tubogram quits (~tubogram@user/tubogram) (*.net *.split)
16:43:45 tubogram joins (~tubogram@user/tubogram)
16:44:21 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
16:45:07 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
16:52:31 × neo1 quits (~neo3@cpe-292712.ip.primehome.com) (Ping timeout: 250 seconds)
16:52:48 × azeem quits (~azeem@62.18.127.19) (Ping timeout: 244 seconds)
16:52:57 azeem joins (~azeem@62.18.127.19)
16:53:04 hannessteffenhag joins (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
16:53:15 markus_ joins (~markus@193-154-202-236.adsl.highway.telekom.at)
16:57:06 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
16:57:10 × hannessteffenhag quits (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
16:57:18 lavaman joins (~lavaman@98.38.249.169)
16:57:48 × dwt_ quits (~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 272 seconds)
17:01:46 sm2n joins (~sm2n@user/sm2n)
17:02:10 × azeem quits (~azeem@62.18.127.19) (Ping timeout: 240 seconds)
17:02:22 azeem joins (~azeem@62.18.127.19)
17:03:27 × ystael quits (~ystael@user/ystael) (Quit: Lost terminal)
17:03:42 × jippiedoe quits (~david@2a02-a44c-e14e-1-b13-831d-8b8c-690b.fixed6.kpn.net) (Quit: Leaving)
17:04:56 Guest7 joins (~Guest7@50.47.115.102)
17:07:19 × Guest7 quits (~Guest7@50.47.115.102) (Client Quit)
17:07:21 ystael joins (~ystael@user/ystael)
17:07:57 × mastarija quits (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Quit: Leaving)
17:10:00 hannessteffenhag joins (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
17:11:45 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
17:14:11 × hannessteffenhag quits (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 250 seconds)
17:16:41 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
17:21:42 × xff0x quits (~xff0x@2001:1a81:5283:ae00:3380:f428:346c:f5a) (Ping timeout: 245 seconds)
17:23:00 xff0x joins (~xff0x@2001:1a81:5283:ae00:3380:f428:346c:f5a)
17:25:58 lavaman joins (~lavaman@98.38.249.169)
17:28:18 chris joins (~chris@81.96.113.213)
17:28:21 chris is now known as Guest806
17:30:35 hannessteffenhag joins (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
17:30:38 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2)
17:34:59 × hannessteffenhag quits (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 250 seconds)
17:34:59 × opac quits (~opac@ip-28-56.sn2.clouditalia.com) (Read error: Connection reset by peer)
17:36:08 opac joins (~opac@ip-28-56.sn2.clouditalia.com)
17:43:37 × jaspervdj quits (~jaspervdj@2a04:ee41:3:52cb:ef96:f70:dfb8:90e3) (Quit: Client closed)
17:45:25 lep is now known as lep-
17:49:58 lep- is now known as lep
17:50:47 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
17:51:18 jpds joins (~jpds@gateway/tor-sasl/jpds)
17:59:43 neo1 joins (~neo3@cpe-292712.ip.primehome.com)
18:02:22 hannessteffenhag joins (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
18:06:41 × hannessteffenhag quits (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 244 seconds)
18:06:55 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
18:08:03 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6) (Remote host closed the connection)
18:12:46 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
18:18:19 × azeem quits (~azeem@62.18.127.19) (Ping timeout: 250 seconds)
18:22:21 azeem joins (~azeem@62.18.127.19)
18:22:29 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
18:24:24 × Guest806 quits (~chris@81.96.113.213) (Remote host closed the connection)
18:27:21 × alx741 quits (~alx741@181.196.68.163) (Ping timeout: 244 seconds)
18:27:35 mastarija joins (~mastarija@78-3-210-70.adsl.net.t-com.hr)
18:27:47 ec_ joins (~ec@gateway/tor-sasl/ec)
18:28:24 hannessteffenhag joins (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
18:29:17 chris joins (~chris@81.96.113.213)
18:29:19 chris is now known as Guest7078
18:30:48 mizu_no_oto joins (~mizu_no_o@cpe-74-67-208-45.twcny.res.rr.com)
18:32:05 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
18:32:11 <mastarija> Has anyone played with haddock and internal libraries? When I do `cabal haddock` everything seems fine. I can even see the documentation from my "hidden" internal module from hidden library. But when I build with `cabal haddock --haddock-for-hackage` documentation for items I've exported from my internal module is no longer visible in the main module, only types are, but they are missing the documentation.
18:32:40 × hannessteffenhag quits (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
18:32:44 <mastarija> Not sure if this is because I'm viewing docs intended for hackage locally, or if this is how it'll be on the hackage as well.
18:33:10 <mastarija> Here's my cabal file: https://github.com/mastarija/valor/blob/new/valor.cabal
18:33:34 × Guest7078 quits (~chris@81.96.113.213) (Ping timeout: 252 seconds)
18:34:09 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
18:34:35 cheater joins (~Username@user/cheater)
18:35:16 chris joins (~chris@81.96.113.213)
18:35:20 chris is now known as Guest3410
18:36:00 × mizu_no_oto quits (~mizu_no_o@cpe-74-67-208-45.twcny.res.rr.com) (Quit: Client closed)
18:37:43 lavaman joins (~lavaman@98.38.249.169)
18:37:49 gentauro joins (~gentauro@user/gentauro)
18:38:17 mizu_no_oto joins (~textual@cpe-74-67-208-45.twcny.res.rr.com)
18:40:26 alx741 joins (~alx741@186.178.108.235)
18:41:46 Everything parts (~Everythin@37.115.210.35) ()
18:41:49 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 244 seconds)
18:42:15 <mastarija> hm... adding `docs all` to the incantation seems to fix the missing documentation for re-exported items
18:42:24 Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
18:44:42 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:51:34 <maerwald> What's the inverse class of IsString?
18:51:44 <dminuoso> Inverse in what sense?
18:52:18 <maerwald> sth like ToString
18:52:39 <Clint> IsntString
18:52:49 <dminuoso> maerwald: And what would that do, exactly?
18:52:52 <dminuoso> Other than say Show
18:53:01 <maerwald> huh?
18:53:17 <dminuoso> Oh
18:53:19 <maerwald> you don't call show when converting bytestring or Text to String
18:53:22 × azeem quits (~azeem@62.18.127.19) (Ping timeout: 252 seconds)
18:53:40 <dminuoso> I see, you mean some ToString class that you could roundtrip back again after IsString?
18:53:49 <maerwald> sth for my logger
18:53:52 <dminuoso> (akin to Read and Show?)
18:54:01 azeem joins (~azeem@62.18.127.19)
18:54:03 <maerwald> wanted to use https://hackage.haskell.org/package/fast-logger-3.0.5/docs/System-Log-FastLogger.html#t:ToLogStr first
18:54:08 <maerwald> but then realized I don't need the lib at all
18:54:24 <maerwald> except I don't have such a nice class
18:54:26 <dminuoso> 20:53:20 maerwald | you don't call show when converting bytestring or Text to String
18:54:37 <dminuoso> converting bytestring to String is not a clear operation what that should even do
18:54:47 <dminuoso> "convert binary data to string" - what's the semantics of that?
18:54:48 <maerwald> for my use case it's well-defined
18:54:56 <dminuoso> Sure, which is why a typeclass is a bad fit for it
18:55:17 <maerwald> i don't really care, it fits my use case if it does utf8 conversion
18:55:24 <dminuoso> You mean decoding?
18:58:56 hannessteffenhag joins (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
19:03:09 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
19:03:10 × hannessteffenhag quits (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
19:04:34 <monochrom> Do you really need it to be a class method?
19:05:10 × xff0x quits (~xff0x@2001:1a81:5283:ae00:3380:f428:346c:f5a) (Ping timeout: 240 seconds)
19:06:12 <maerwald> I just switched to Text and don't bother
19:09:41 xff0x joins (~xff0x@2001:1a81:5283:ae00:3380:f428:346c:f5a)
19:10:20 kenran joins (~kenran@200116b82beee7004dc0acd36ace2d8d.dip.versatel-1u1.de)
19:13:32 ec_ joins (~ec@gateway/tor-sasl/ec)
19:16:49 lavaman joins (~lavaman@98.38.249.169)
19:18:07 × azeem quits (~azeem@62.18.127.19) (Ping timeout: 252 seconds)
19:18:28 azeem joins (~azeem@62.18.127.19)
19:18:40 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
19:19:58 × kuribas quits (~user@ptr-25vy0i98x8tu9s1v8mf.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
19:20:53 <mastarija> Is there a way to silence haddock warnings, like not being able to link to GHC.Classes.Eq
19:21:25 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
19:21:46 pavonia joins (~user@user/siracusa)
19:22:05 hannessteffenhag joins (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
19:26:22 × hannessteffenhag quits (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
19:26:52 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Read error: Connection reset by peer)
19:27:18 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
19:33:44 × kenran quits (~kenran@200116b82beee7004dc0acd36ace2d8d.dip.versatel-1u1.de) (Quit: WeeChat info:version)
19:34:04 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
19:34:15 kayprish joins (~kayprish@cable-188-2-229-172.dynamic.sbb.rs)
19:34:38 kenran joins (~kenran@200116b82beee700b7996ab960c3ff15.dip.versatel-1u1.de)
19:34:48 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Quit: mikoto-chan)
19:40:59 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
19:41:07 ubert joins (~Thunderbi@178.115.67.30.wireless.dyn.drei.com)
19:41:14 × azeem quits (~azeem@62.18.127.19) (Ping timeout: 244 seconds)
19:41:28 azeem joins (~azeem@62.18.127.19)
19:44:01 _xft0 joins (~jaroslawj@185.234.208.208.r.toneticgroup.pl)
19:45:24 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
19:45:40 × azeem quits (~azeem@62.18.127.19) (Ping timeout: 240 seconds)
19:46:04 azeem joins (~azeem@62.18.127.19)
19:50:14 mjrosenb joins (~mrosenbe@4.7.173.100)
19:50:34 × azeem quits (~azeem@62.18.127.19) (Ping timeout: 252 seconds)
19:51:18 azeem joins (~azeem@62.18.127.19)
19:52:48 <mjrosenb> with lens, is there a way to do something like a zip? e.g. I have [(1, 'a'), (2, 'b')] and [4, 6], and with (*), I want to get [(4, 'a'), (12, 'b')]
19:54:38 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
19:55:12 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
19:55:15 × mjrosenb quits (~mrosenbe@4.7.173.100) (Read error: Connection reset by peer)
19:55:53 ec_ joins (~ec@gateway/tor-sasl/ec)
19:59:10 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Ping timeout: 250 seconds)
19:59:52 × mei quits (~mei@user/mei) (Ping timeout: 252 seconds)
20:02:45 × ystael quits (~ystael@user/ystael) (Ping timeout: 250 seconds)
20:02:45 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Quit: mikoto-chan)
20:03:38 × ubert quits (~Thunderbi@178.115.67.30.wireless.dyn.drei.com) (Read error: Connection reset by peer)
20:03:56 ubert joins (~Thunderbi@178.115.67.30.wireless.dyn.drei.com)
20:03:56 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 250 seconds)
20:04:05 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
20:04:11 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:05:07 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
20:05:10 × juhp quits (~juhp@128.106.188.220) (Ping timeout: 240 seconds)
20:06:55 juhp joins (~juhp@128.106.188.220)
20:08:10 × ubert quits (~Thunderbi@178.115.67.30.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
20:08:47 × mizu_no_oto quits (~textual@cpe-74-67-208-45.twcny.res.rr.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:13:17 dagi59194 is now known as dagit
20:13:38 <aegon> traverse and fst?
20:13:57 <aegon> oh, he quit
20:15:29 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Quit: mikoto-chan)
20:19:35 <dminuoso> aegon: that wouldnt do it.
20:20:06 <aegon> yeah, i think he was looking for Grates?
20:20:37 <aegon> dunno, started looking around after I thought about it, since he quit i'm going back to work instead of grokking grates, those seem like it though
20:20:43 <aegon> :P
20:20:59 mjrosenb joins (~mjrosenb@pool-108-54-97-96.nycmny.fios.verizon.net)
20:21:22 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
20:21:43 <dminuoso> I think what they were looking for is
20:21:44 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
20:21:46 <dminuoso> % :t partsOf
20:21:48 <yahb> dminuoso: Functor f => Traversing (->) f s t a a -> LensLike f s t [a] [a]
20:21:49 <mjrosenb> looks like logs aren't up yet, and my machine got bounced. Were there any responses to my question about an hour ago?
20:21:53 <dminuoso> mjrosenb: ^-
20:21:58 <mjrosenb> hrm, that looks relevant
20:22:01 <aegon> I'm still getting used to basic lenses
20:22:22 <dminuoso> mjrosenb: Do look up the docs, it's a highly unsafe primitive
20:22:36 <dminuoso> Well potentially unlawful.
20:22:49 <aegon> dminuoso: are Grates at all relevant to this or did I get sideholed down that package doc
20:23:12 <mjrosenb> I remeber seeing partsOf, and not thinking it relevant, but I'll look at it again.
20:23:18 <aegon> https://hackage.haskell.org/package/lens-family-core-2.1.0/docs/Lens-Family.html
20:23:25 <dminuoso> mjrosenb: Mmm, looking at it again and again, I dont think partsOf even helps here.
20:23:54 <dminuoso> mjrosenb: I'd probably use an indexed traversal, and then iover
20:23:59 <aegon> :t zipWithOf
20:24:00 <lambdabot> error:
20:24:00 <lambdabot> • Variable not in scope: zipWithOf
20:24:00 <lambdabot> • Perhaps you meant one of these:
20:24:32 <dminuoso> i.e. something like
20:24:37 <aegon> https://hackage.haskell.org/package/lens-family-core-2.1.0/docs/Lens-Family.html#v:zipWithOf
20:24:48 zebrag joins (~chris@user/zebrag)
20:25:13 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
20:25:40 × nschoe quits (~quassel@2a01:e0a:8e:a190:58d9:8430:bb92:1d4d) (Ping timeout: 240 seconds)
20:25:42 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
20:25:48 <dminuoso> % import qualified Data.Vector as V
20:25:48 <mjrosenb> aegon: well, the name zipWithOf sounds promising
20:25:48 <yahb> dminuoso:
20:25:58 <dminuoso> mjrosenb: that's outside the scope of regular lenses
20:26:14 <dminuoso> oh mmm
20:26:47 <dminuoso> This is indeed interesting
20:26:51 <mjrosenb> the problem with an indexed traversal is that it'll turn an o(n) operation into an o(n^2) operation
20:27:27 <dminuoso> Did you do profiling on this?
20:27:39 <dminuoso> It might not even be relevant
20:27:47 <mjrosenb> not that I expect n to be more than 10, but *shrug*
20:27:53 <dminuoso> ...
20:28:00 hannessteffenhag joins (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
20:28:14 <dminuoso> You can stuff it in a vector if you really care
20:28:30 <dminuoso> Data will stay inside a cache line
20:30:54 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
20:31:52 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Ping timeout: 244 seconds)
20:32:23 × hannessteffenhag quits (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 244 seconds)
20:39:06 × azeem quits (~azeem@62.18.127.19) (Ping timeout: 244 seconds)
20:39:18 azeem joins (~azeem@62.18.127.19)
20:41:20 ec_ joins (~ec@gateway/tor-sasl/ec)
20:47:05 × mastarija quits (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Quit: Leaving)
20:47:49 acidjnk_new3 joins (~acidjnk@p200300d0c72b9584cdff497abed31e64.dip0.t-ipconnect.de)
20:48:08 × azeem quits (~azeem@62.18.127.19) (Ping timeout: 250 seconds)
20:48:17 × xenon- quits (~bc8167eb@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
20:48:31 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
20:49:00 azeem joins (~azeem@62.18.127.19)
20:49:55 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
20:51:07 Lord_of_Life_ is now known as Lord_of_Life
20:51:30 Pickchea joins (~private@user/pickchea)
20:57:07 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 252 seconds)
20:57:34 × _xft0 quits (~jaroslawj@185.234.208.208.r.toneticgroup.pl) (Quit: Lost terminal)
21:05:28 sjb0 joins (~stephen@1.145.78.87)
21:06:12 <maerwald> tomsmeding: I'm down to 73 deps from 136!
21:06:28 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
21:06:32 <maerwald> by removing 4 packages
21:06:53 <tomsmeding> maerwald: 🎉
21:07:03 <tomsmeding> doing the good work
21:07:14 <tomsmeding> you got the logger as well?
21:07:33 <maerwald> I dropped loggers and rolled my own
21:07:34 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6) (Remote host closed the connection)
21:07:40 <maerwald> tried fast-logger first
21:07:53 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
21:07:56 × phma quits (~phma@host-67-44-208-231.hnremote.net) (Read error: Connection reset by peer)
21:08:18 lavaman joins (~lavaman@98.38.249.169)
21:09:33 wrengr_away is now known as wrengr
21:09:42 <Rembane_> maerwald: What architecture/idea/construction did you with for a logger?
21:10:12 <maerwald> I posted it here: https://www.reddit.com/r/haskell/comments/pe9109/good_reasonably_easy_log_library/hayzn3m?utm_source=share&utm_medium=web2x&context=3
21:10:35 phma joins (~phma@host-67-44-209-72.hnremote.net)
21:12:27 <Rembane_> maerwald: Thank you!
21:12:41 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 244 seconds)
21:13:43 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 244 seconds)
21:14:24 <maerwald> couldn't figure out how you combine loggers in fast-logger
21:14:39 <maerwald> and LogCallback isn't enough imo
21:14:40 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 240 seconds)
21:14:47 acidjnk_new joins (~acidjnk@p200300d0c72b958461a8e0175dc7ce9e.dip0.t-ipconnect.de)
21:14:57 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
21:15:36 hyiltiz joins (~quassel@31.220.5.250)
21:15:42 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:16:24 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
21:16:41 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
21:17:28 <Rembane_> maerwald: I like the code of your logger, it's very simple and extendable.
21:18:02 × acidjnk_new3 quits (~acidjnk@p200300d0c72b9584cdff497abed31e64.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
21:18:12 <maerwald> the only thing that fast-logger gives me is O(1) append for LogStr
21:19:29 <maerwald> Rembane_: yeah, you just add stuff to LoggerConfig, adjust logInternal and pass it in when you construct your reader
21:22:25 <maerwald> I guess MonadLogger allows logging in pure code too
21:22:26 d0ku joins (~d0ku@178.43.56.75.ipv4.supernova.orange.pl)
21:22:58 <maerwald> but not sure that matters for most
21:23:00 <Rembane_> I've never needed logging in pure code, do you?
21:23:12 <maerwald> if I do, I just add MonadIO :p
21:23:59 <Rembane_> ^^
21:24:39 <Rembane_> Either the pure functions work as intended, or I Debug.Trace them until they do.
21:26:38 <maerwald> tomsmeding: so it was: string-interpolate, zip, monad-logger and yaml
21:26:43 gogo joins (~gogo@212.83.184.228)
21:26:58 ec_ joins (~ec@gateway/tor-sasl/ec)
21:28:12 <maerwald> tomsmeding: how did you analyze the deps again?
21:28:17 <gogo> hello please a server for cvv and prepayer card sorry
21:30:49 <maerwald> I guess one could add a golden test that uses `cabal-plan topo`
21:30:58 <Lycurgus> https://github.com/commercialhaskell/stack-templates appears to be the complete set, intimations to the contrary notwithstanding, is that the case?
21:32:19 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
21:33:07 lavaman joins (~lavaman@98.38.249.169)
21:33:13 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
21:33:21 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 244 seconds)
21:34:44 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
21:36:18 minimario joins (~minimario@2603:900a:1600:ba00:fd6a:eb62:ef42:2446)
21:38:55 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
21:39:12 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
21:40:30 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
21:40:34 × Morrow_ quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 252 seconds)
21:40:49 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
21:48:34 × gogo quits (~gogo@212.83.184.228) (Remote host closed the connection)
21:49:40 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
21:49:40 × azeem quits (~azeem@62.18.127.19) (Ping timeout: 250 seconds)
21:52:14 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:10be:968:241f:1aa6)
21:52:34 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
21:52:56 azeem joins (~azeem@62.18.127.19)
21:56:24 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:58:41 × kenran quits (~kenran@200116b82beee700b7996ab960c3ff15.dip.versatel-1u1.de) (Quit: WeeChat info:version)
21:58:47 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 245 seconds)
22:01:15 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
22:01:57 Achylles joins (~Achylles_@2804:431:d725:af0f:65ee:a58:ea07:2607)
22:02:07 acidjnk_new3 joins (~acidjnk@p200300d0c72b958461a8e0175dc7ce9e.dip0.t-ipconnect.de)
22:04:08 × Guest3410 quits (~chris@81.96.113.213) (Remote host closed the connection)
22:05:19 × acidjnk_new quits (~acidjnk@p200300d0c72b958461a8e0175dc7ce9e.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
22:11:31 ec_ joins (~ec@gateway/tor-sasl/ec)
22:11:47 × pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer)
22:11:58 pavonia joins (~user@user/siracusa)
22:13:55 pbrisbin joins (~patrick@pool-108-16-214-93.phlapa.fios.verizon.net)
22:14:01 × goepsilongo_ quits (~goepsilon@2603-7000-ab00-62ed-d076-a878-a2d3-a90b.res6.spectrum.com) (Quit: Textual IRC Client: www.textualapp.com)
22:14:24 × themc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
22:15:22 mizu_no_oto joins (~textual@cpe-74-67-208-45.twcny.res.rr.com)
22:16:17 × max22- quits (~maxime@2a01cb08833598003c11741276acc8d8.ipv6.abo.wanadoo.fr) (Quit: Leaving)
22:17:59 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
22:17:59 jushur joins (~human@user/jushur)
22:19:37 × kayprish quits (~kayprish@cable-188-2-229-172.dynamic.sbb.rs) (Ping timeout: 252 seconds)
22:21:26 oxide joins (~lambda@user/oxide)
22:29:47 × Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
22:30:11 × azeem quits (~azeem@62.18.127.19) (Ping timeout: 244 seconds)
22:30:26 azeem joins (~azeem@62.18.127.19)
22:30:37 bitmapper joins (uid464869@id-464869.tooting.irccloud.com)
22:30:41 xenon- joins (~bc8167eb@217.29.117.252)
22:31:44 × fendor quits (~fendor@91.141.74.138.wireless.dyn.drei.com) (Ping timeout: 244 seconds)
22:33:41 mastarija joins (~mastarija@78-3-210-70.adsl.net.t-com.hr)
22:34:47 × minimario quits (~minimario@2603:900a:1600:ba00:fd6a:eb62:ef42:2446) (Ping timeout: 256 seconds)
22:35:14 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
22:35:15 Morrow_ joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
22:37:12 × drakonis quits (drakonis@2600:3c02::f03c:92ff:fe5e:b8bf) (Quit: WeeChat 3.1)
22:37:38 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
22:38:19 × neo1 quits (~neo3@cpe-292712.ip.primehome.com) (Ping timeout: 252 seconds)
22:41:43 × michalz quits (~michalz@185.246.204.33) (Remote host closed the connection)
22:44:09 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
22:46:16 × _xor quits (~xor@74.215.232.67) (Quit: WeeChat 3.2)
22:48:47 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 244 seconds)
22:49:04 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
22:51:10 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
22:51:10 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
22:51:10 wroathe joins (~wroathe@user/wroathe)
22:53:57 × d0ku quits (~d0ku@178.43.56.75.ipv4.supernova.orange.pl) (Ping timeout: 244 seconds)
22:54:22 ec_ joins (~ec@gateway/tor-sasl/ec)
22:54:22 × mizu_no_oto quits (~textual@cpe-74-67-208-45.twcny.res.rr.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:55:30 × Gurkenglas quits (~Gurkengla@dslb-088-064-053-140.088.064.pools.vodafone-ip.de) (Ping timeout: 244 seconds)
22:55:55 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
22:56:12 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
22:57:05 cjb joins (~cjb@user/cjb)
22:57:35 sami joins (~sami@wnpgmb0903w-ds01-52-54.dynamic.bellmts.net)
22:58:29 × sami quits (~sami@wnpgmb0903w-ds01-52-54.dynamic.bellmts.net) (Client Quit)
22:58:44 sami joins (~05st@wnpgmb0903w-ds01-52-54.dynamic.bellmts.net)
22:59:25 <sami> test
23:02:39 sami is now known as abc
23:02:46 abc is now known as st05
23:02:55 st05 is now known as _05st
23:03:06 hannessteffenhag joins (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de)
23:03:29 <jackdk> Does this function have a common name? `Semigroup g => These g g -> g`
23:03:45 <maerwald> gg? :D
23:05:36 <maerwald> maybe `both`?
23:06:30 × mastarija quits (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Quit: Leaving)
23:06:58 <maerwald> `mergeThese :: (a -> a -> a) -> These a a -> a ` is the closest
23:07:10 × hannessteffenhag quits (~hannesste@ip4d14ffee.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
23:07:55 <maerwald> mappendThese
23:09:18 lavaman joins (~lavaman@98.38.249.169)
23:12:38 × _05st quits (~05st@wnpgmb0903w-ds01-52-54.dynamic.bellmts.net) (Quit: WeeChat 3.2)
23:13:35 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 244 seconds)
23:14:44 <haveo> I don't think the Bifoldable1 instance for These is actually defined anywhere but the answer should be bifold1
23:16:04 sleblanc joins (~sleblanc@user/sleblanc)
23:16:44 <jackdk> gg maerwald =). It is frustrating that we still call it "mappend" even though it's really relaxed to Semigroup
23:17:24 jeslie0 joins (~user@108.162.150.9)
23:25:17 hololeap_ joins (~hololeap@user/hololeap)
23:26:34 sm2n_ joins (~sm2n@user/sm2n)
23:28:21 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
23:28:34 × sm2n quits (~sm2n@user/sm2n) (Ping timeout: 244 seconds)
23:29:06 <monochrom> Semigroup has <>, which is more popular anyway.
23:32:56 skykanin joins (~skykanin@115.81-166-221.customer.lyse.net)
23:33:52 × jeslie0 quits (~user@108.162.150.9) (Ping timeout: 252 seconds)
23:33:58 <hpc> jackdk: we should also put some emphasis on its algebraic properties too, rather than alluding to lists
23:34:02 <hpc> clearly it should be named "sadd"
23:34:33 <jackdk> how about "smoosh"?
23:35:03 <hpc> (bonus points if you manage to use it in combination with https://hackage.haskell.org/package/happy)
23:35:09 <hpc> hah, smoosh
23:35:12 <hpc> even better
23:35:31 <jackdk> it mooshes things together, semigroupally, which is why is starts with an s
23:35:38 <jackdk> proposal: rename mappend to moosh
23:36:06 <hpc> and of course, rename (++) to oosh
23:36:52 abrantesasf joins (~abrantesa@2804:14d:b086:4b3c:2e56:dcff:fedb:62f)
23:36:59 <monochrom> A parser is some kind of inverse of <>
23:37:09 <jackdk> What if we tool `(+)` out of `Num` and made it the `Semigroup` operation? What could possibly go wrong?
23:37:15 × acidjnk_new3 quits (~acidjnk@p200300d0c72b958461a8e0175dc7ce9e.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
23:37:16 <monochrom> Happily, happy is some kind of inverse of sad. >:)
23:37:28 <jackdk> Nothing, I say! Nothing at all!
23:39:07 ec_ joins (~ec@gateway/tor-sasl/ec)
23:40:59 skykanin is now known as antimatter
23:43:11 antimatter is now known as verixor
23:45:56 verixor is now known as antagonist
23:45:57 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:47:53 antagonist is now known as antares
23:48:04 antares is now known as antagonist
23:49:47 antagonist is now known as desantra
23:54:48 × desantra quits (~skykanin@115.81-166-221.customer.lyse.net) (Changing host)
23:54:48 desantra joins (~skykanin@user/skykanin)
23:57:01 Axman6 joins (~Axman6@user/axman6)
23:58:04 × zebrag quits (~chris@user/zebrag) (Remote host closed the connection)
23:59:32 chris joins (~chris@81.96.113.213)
23:59:36 chris is now known as Guest729

All times are in UTC on 2021-08-30.