Home liberachat/#haskell: Logs Calendar

Logs on 2023-03-24 (liberachat/#haskell)

00:05:24 mauke_ joins (~mauke@user/mauke)
00:06:28 slac23932 joins (~slack1256@186.11.53.81)
00:07:01 × mauke quits (~mauke@user/mauke) (Ping timeout: 240 seconds)
00:07:01 mauke_ is now known as mauke
00:07:32 cheater joins (~Username@user/cheater)
00:08:31 × slack1256 quits (~slack1256@181.42.50.18) (Ping timeout: 240 seconds)
00:09:40 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
00:10:17 × hays quits (rootvegeta@fsf/member/hays) (Remote host closed the connection)
00:10:19 <dibblego> which function/parser-combinator did I just reinvent?
00:10:20 <dibblego> skipUntil :: Alternative f => f a -> f e -> f e
00:10:21 <dibblego> skipUntil p x = x <|> p *> skipUntil p x
00:10:38 cheater_ joins (~Username@user/cheater)
00:12:31 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
00:12:31 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds)
00:12:34 cheater_ is now known as cheater
00:12:35 <EvanR> there's skipManyTill :: MonadPlus m => m a -> m end -> m end
00:12:47 lagash joins (lagash@lagash.shelltalk.net)
00:13:18 <dibblego> ah thank you
00:13:29 hays joins (rootvegeta@fsf/member/hays)
00:21:25 × cheater quits (~Username@user/cheater) (Ping timeout: 265 seconds)
00:22:14 gurkenglas joins (~gurkengla@dynamic-046-114-182-005.46.114.pool.telefonica.de)
00:36:49 × gurkenglas quits (~gurkengla@dynamic-046-114-182-005.46.114.pool.telefonica.de) (Ping timeout: 276 seconds)
00:47:17 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
00:53:59 cheater joins (~Username@user/cheater)
00:57:00 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
00:57:29 srz_ joins (~srz@179.36.81.180)
00:58:31 lagash joins (lagash@lagash.shelltalk.net)
00:59:01 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
01:00:39 × srz quits (~srz@181.228.49.93) (Ping timeout: 268 seconds)
01:00:39 × ridcully_ quits (~ridcully@p508acd69.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
01:00:55 ridcully_ joins (~ridcully@p57b52e16.dip0.t-ipconnect.de)
01:01:24 cheater joins (~Username@user/cheater)
01:02:07 × califax quits (~califax@user/califx) (Remote host closed the connection)
01:02:31 cheater_ joins (~Username@user/cheater)
01:02:58 dipper_ joins (~dipper@117.61.126.31)
01:03:09 califax joins (~califax@user/califx)
01:06:12 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
01:06:19 cheater_ is now known as cheater
01:09:05 merijn joins (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl)
01:11:43 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:17:50 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:18:47 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:acf4:2d59:900d:be3a)
01:19:42 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 255 seconds)
01:20:50 freeside joins (~mengwong@103.252.202.85)
01:23:01 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:acf4:2d59:900d:be3a) (Ping timeout: 240 seconds)
01:23:17 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
01:23:44 × gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
01:23:44 × tusko quits (~yeurt@user/tusko) (Ping timeout: 255 seconds)
01:24:41 tusko joins (~yeurt@user/tusko)
01:25:34 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 276 seconds)
01:26:01 gehmehgeh joins (~user@user/gehmehgeh)
01:26:06 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
01:27:30 cheater_ joins (~Username@user/cheater)
01:27:31 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
01:27:35 cheater_ is now known as cheater
01:29:05 freeside joins (~mengwong@103.252.202.85)
01:29:46 johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
01:33:57 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 268 seconds)
01:42:44 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
01:43:06 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
01:43:08 × xff0x quits (~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 246 seconds)
01:43:16 lagash joins (lagash@lagash.shelltalk.net)
01:43:49 × merijn quits (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
01:49:56 Square2 joins (~Square4@user/square)
01:52:43 zer0bitz joins (~zer0bitz@2001:2003:f443:d600:b49b:29c2:a815:97ea)
01:53:10 nate4 joins (~nate@98.45.169.16)
01:54:08 × zer0bitz_ quits (~zer0bitz@2001:2003:f443:d600:3048:24b6:d2fe:5f2e) (Ping timeout: 248 seconds)
01:57:18 jargon joins (~jargon@174-22-223-2.phnx.qwest.net)
01:58:43 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 276 seconds)
02:00:05 × meinside quits (uid24933@id-24933.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
02:01:35 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 248 seconds)
02:06:35 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
02:10:35 lagash joins (lagash@lagash.shelltalk.net)
02:15:34 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
02:15:34 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
02:15:34 wroathe joins (~wroathe@user/wroathe)
02:16:07 razetime joins (~Thunderbi@117.193.3.141)
02:18:59 gmg joins (~user@user/gehmehgeh)
02:20:26 × gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
02:25:10 cheater_ joins (~Username@user/cheater)
02:26:02 robobub joins (uid248673@id-248673.uxbridge.irccloud.com)
02:27:55 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
02:28:08 cheater__ joins (~Username@user/cheater)
02:28:08 cheater__ is now known as cheater
02:29:20 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:31:01 × cheater_ quits (~Username@user/cheater) (Ping timeout: 240 seconds)
02:33:41 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
02:39:38 merijn joins (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl)
02:40:21 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:acf4:2d59:900d:be3a)
02:40:37 × slac23932 quits (~slack1256@186.11.53.81) (Ping timeout: 265 seconds)
02:46:10 freeside joins (~mengwong@103.252.202.85)
02:46:47 nate4 joins (~nate@98.45.169.16)
02:50:31 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 240 seconds)
02:50:31 × codaraxis quits (~codaraxis@user/codaraxis) (Ping timeout: 240 seconds)
02:51:07 lagash joins (lagash@lagash.shelltalk.net)
03:05:18 cheater_ joins (~Username@user/cheater)
03:06:43 × cheater quits (~Username@user/cheater) (Ping timeout: 265 seconds)
03:06:44 cheater_ is now known as cheater
03:07:41 × mei quits (~mei@user/mei) (Remote host closed the connection)
03:08:22 mei joins (~mei@user/mei)
03:10:29 × jero98772 quits (~jero98772@2800:484:1d80:d8ce:9815:cfda:3661:17bb) (Remote host closed the connection)
03:12:21 × td_ quits (~td@i53870924.versanet.de) (Ping timeout: 250 seconds)
03:13:13 × hugo- quits (znc@verdigris.lysator.liu.se) (Ping timeout: 250 seconds)
03:14:08 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
03:14:20 td_ joins (~td@i5387091E.versanet.de)
03:14:28 × merijn quits (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
03:14:46 × srz_ quits (~srz@179.36.81.180) (Quit: Leaving)
03:22:03 nek0 joins (~nek0@2a01:4f8:222:2b41::12)
03:24:20 lagash joins (lagash@lagash.shelltalk.net)
03:29:41 × Techcable quits (~Techcable@user/Techcable) (Ping timeout: 250 seconds)
03:31:29 hugo joins (znc@verdigris.lysator.liu.se)
03:39:03 Techcable joins (~Techcable@user/Techcable)
03:42:33 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 256 seconds)
03:44:38 cheater_ joins (~Username@user/cheater)
03:44:40 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 276 seconds)
03:44:43 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
03:44:53 cheater_ is now known as cheater
03:45:28 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:45:28 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:45:28 finn_elija is now known as FinnElija
03:47:23 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
03:48:31 × razetime quits (~Thunderbi@117.193.3.141) (Ping timeout: 240 seconds)
03:48:32 lagash joins (lagash@lagash.shelltalk.net)
03:49:01 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
03:49:51 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
03:53:24 hugo joins (znc@verdigris.lysator.liu.se)
03:58:24 freeside joins (~mengwong@103.252.202.85)
04:02:51 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 248 seconds)
04:06:35 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 248 seconds)
04:10:12 merijn joins (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl)
04:12:07 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
04:12:22 × lagash quits (lagash@lagash.shelltalk.net) (Read error: Connection reset by peer)
04:12:37 lagash joins (lagash@lagash.shelltalk.net)
04:14:31 × merijn quits (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
04:14:58 talismanick joins (~talismani@2601:200:c000:f7a0::5321)
04:17:35 hugo joins (znc@verdigris.lysator.liu.se)
04:22:56 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
04:26:19 × jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 248 seconds)
04:28:11 jle` joins (~jle`@cpe-23-240-75-236.socal.res.rr.com)
04:30:28 cheater joins (~Username@user/cheater)
04:35:31 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
04:35:50 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
04:36:18 cheater joins (~Username@user/cheater)
04:36:55 razetime joins (~Thunderbi@117.193.3.141)
04:37:51 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 248 seconds)
04:37:57 lagash joins (lagash@lagash.shelltalk.net)
04:39:06 cheater_ joins (~Username@user/cheater)
04:39:17 xiliuya joins (~xiliuya@user/xiliuya)
04:39:50 × cheater_ quits (~Username@user/cheater) (Read error: Connection reset by peer)
04:40:45 cheater_ joins (~Username@user/cheater)
04:41:13 × cheater quits (~Username@user/cheater) (Ping timeout: 276 seconds)
04:41:19 × cheater_ quits (~Username@user/cheater) (Read error: Connection reset by peer)
04:42:49 cheater_ joins (~Username@user/cheater)
04:42:49 cheater_ is now known as cheater
04:45:46 cheater_ joins (~Username@user/cheater)
04:48:15 × ensyde quits (ensyde@2600:3c02::f03c:93ff:fef7:5529) (Quit: WeeChat 3.8)
04:49:10 cheater__ joins (~Username@user/cheater)
04:49:40 × cheater quits (~Username@user/cheater) (Ping timeout: 276 seconds)
04:49:45 cheater__ is now known as cheater
04:50:42 freeside joins (~mengwong@122.11.248.245)
04:52:15 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 256 seconds)
04:52:34 × cheater_ quits (~Username@user/cheater) (Ping timeout: 265 seconds)
04:54:32 mbuf joins (~Shakthi@49.207.178.186)
04:55:37 freeside_ joins (~mengwong@202.161.55.11)
04:55:40 × euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 246 seconds)
04:56:09 × freeside quits (~mengwong@122.11.248.245) (Ping timeout: 255 seconds)
05:01:24 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
05:03:42 hugo joins (znc@verdigris.lysator.liu.se)
05:04:21 Sgeo_ joins (~Sgeo@user/sgeo)
05:04:26 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
05:10:06 cheater_ joins (~Username@user/cheater)
05:10:24 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
05:10:26 slack1256 joins (~slack1256@186.11.53.81)
05:10:30 cheater_ is now known as cheater
05:10:44 merijn joins (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl)
05:11:52 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
05:13:05 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 246 seconds)
05:14:03 lagash joins (lagash@lagash.shelltalk.net)
05:15:01 × mikoto-chan quits (~mikoto-ch@87-95-58-79.bb.dnainternet.fi) (Ping timeout: 276 seconds)
05:17:37 × slack1256 quits (~slack1256@186.11.53.81) (Ping timeout: 276 seconds)
05:20:26 euandreh joins (~Thunderbi@189.6.18.7)
05:23:37 hugo joins (znc@verdigris.lysator.liu.se)
05:27:53 Square2 is now known as Square
05:28:47 × phma quits (phma@2001:5b0:211f:ddb8:2d78:5150:d16:dc20) (Read error: Connection reset by peer)
05:29:20 phma joins (~phma@host-67-44-208-120.hnremote.net)
05:32:27 cheater_ joins (~Username@user/cheater)
05:35:01 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
05:35:02 cheater_ is now known as cheater
05:35:42 × euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 268 seconds)
05:36:31 cheater_ joins (~Username@user/cheater)
05:40:00 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
05:40:07 cheater_ is now known as cheater
05:41:27 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Quit: use-value)
05:42:17 × thegeekinside quits (~thegeekin@189.141.115.134) (Ping timeout: 250 seconds)
05:45:01 × merijn quits (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
05:48:43 euandreh joins (~Thunderbi@189.6.18.7)
05:50:37 trev joins (~trev@user/trev)
05:52:04 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 276 seconds)
05:56:27 freeside joins (~mengwong@122.11.248.245)
05:58:01 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
05:58:30 × freeside_ quits (~mengwong@202.161.55.11) (Ping timeout: 268 seconds)
05:59:53 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
06:00:46 dcoutts_ joins (~duncan@host86-149-51-125.range86-149.btcentralplus.com)
06:01:00 × freeside quits (~mengwong@122.11.248.245) (Ping timeout: 252 seconds)
06:02:31 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
06:02:47 × dcoutts quits (~duncan@host86-149-51-125.range86-149.btcentralplus.com) (Ping timeout: 246 seconds)
06:06:53 ramin_hal9001 joins (~user@126.249.179.97)
06:07:29 cheater joins (~Username@user/cheater)
06:08:01 × cheater quits (~Username@user/cheater) (Client Quit)
06:08:18 chomwitt joins (~chomwitt@2a02:587:7a19:3600:1ac0:4dff:fedb:a3f1)
06:13:34 cheater joins (~Username@user/cheater)
06:15:07 lagash joins (lagash@lagash.shelltalk.net)
06:17:46 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:18:21 cheater_ joins (~Username@user/cheater)
06:20:05 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
06:23:30 × tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving)
06:24:09 cheater__ joins (~Username@user/cheater)
06:24:09 cheater__ is now known as cheater
06:24:31 × cheater_ quits (~Username@user/cheater) (Ping timeout: 248 seconds)
06:25:22 tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
06:34:14 cheater_ joins (~Username@user/cheater)
06:34:17 × cheater quits (~Username@user/cheater) (Ping timeout: 246 seconds)
06:34:18 cheater_ is now known as cheater
06:36:47 jakalx parts (~jakalx@base.jakalx.net) ()
06:38:16 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
06:41:32 merijn joins (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl)
06:42:31 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
06:43:17 cheater joins (~Username@user/cheater)
06:43:17 michalz joins (~michalz@185.246.207.203)
06:45:31 jakalx joins (~jakalx@base.jakalx.net)
06:45:42 × jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
06:47:58 × Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
06:50:04 × xiliuya quits (~xiliuya@user/xiliuya) (Quit: Bye)
06:56:07 lagash joins (lagash@lagash.shelltalk.net)
06:57:38 cheater_ joins (~Username@user/cheater)
06:59:11 × cheater quits (~Username@user/cheater) (Ping timeout: 246 seconds)
07:00:18 cheater__ joins (~Username@user/cheater)
07:00:18 cheater__ is now known as cheater
07:02:59 × cheater_ quits (~Username@user/cheater) (Ping timeout: 246 seconds)
07:07:52 cheater_ joins (~Username@user/cheater)
07:10:31 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
07:10:39 cheater_ is now known as cheater
07:12:03 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 255 seconds)
07:13:40 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
07:14:21 cheater_ joins (~Username@user/cheater)
07:14:38 ubert joins (~Thunderbi@p200300ecdf216c77c362d35fab61ca09.dip0.t-ipconnect.de)
07:15:49 cheater__ joins (~Username@user/cheater)
07:16:34 × merijn quits (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 276 seconds)
07:17:01 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
07:17:34 kenran joins (~user@user/kenran)
07:18:54 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
07:18:55 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:18:55 cheater___ joins (~Username@user/cheater)
07:18:55 cheater___ is now known as cheater
07:19:01 × ubert quits (~Thunderbi@p200300ecdf216c77c362d35fab61ca09.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
07:19:19 × cheater_ quits (~Username@user/cheater) (Ping timeout: 260 seconds)
07:19:20 ubert joins (~Thunderbi@p200300ecdf216c77c362d35fab61ca09.dip0.t-ipconnect.de)
07:20:29 × wagle quits (~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
07:20:59 wagle joins (~wagle@quassel.wagle.io)
07:21:07 × cheater__ quits (~Username@user/cheater) (Ping timeout: 276 seconds)
07:24:40 ubert1 joins (~Thunderbi@p200300ecdf216c77fe5efe35ee3dae02.dip0.t-ipconnect.de)
07:25:31 cheater_ joins (~Username@user/cheater)
07:26:40 lagash joins (lagash@lagash.shelltalk.net)
07:28:01 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
07:28:08 cheater_ is now known as cheater
07:31:38 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:acf4:2d59:900d:be3a) (Remote host closed the connection)
07:32:15 cheater_ joins (~Username@user/cheater)
07:35:00 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
07:35:01 cheater_ is now known as cheater
07:39:08 × dsrt^ quits (~dsrt@c-24-30-76-89.hsd1.ga.comcast.net) (Remote host closed the connection)
07:43:14 cheater_ joins (~Username@user/cheater)
07:44:10 cheater__ joins (~Username@user/cheater)
07:45:47 × cheater quits (~Username@user/cheater) (Ping timeout: 264 seconds)
07:45:56 cheater__ is now known as cheater
07:46:12 nate4 joins (~nate@98.45.169.16)
07:47:31 × cheater_ quits (~Username@user/cheater) (Ping timeout: 240 seconds)
07:50:39 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
07:51:01 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
07:51:19 cheater_ joins (~Username@user/cheater)
07:52:07 lortabac joins (~lortabac@2a01:e0a:541:b8f0:3aed:4a10:f448:7afe)
07:53:35 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
07:53:45 cheater_ is now known as cheater
07:55:00 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
07:55:17 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
07:56:39 ub joins (~Thunderbi@p548c9c54.dip0.t-ipconnect.de)
07:57:50 × ubert quits (~Thunderbi@p200300ecdf216c77c362d35fab61ca09.dip0.t-ipconnect.de) (Remote host closed the connection)
07:57:50 ub is now known as ubert
07:58:08 Guest96 joins (~Guest96@2604:4080:11a5:8050:9ca3:338e:932a:37d5)
07:59:32 <Guest96> hey all, i've been working through haskellbook and in ch 13, i git cloned haskellbook/hello like it said, but when i stack build, i get Prelude.chr: bad argument: 2634022915 in Setup.hs
08:00:01 <Guest96> google search says i must have object files built with the wrong version of ghc? but i don't see anything and blowing away .stack-work doesn't fix it
08:00:24 × michalz quits (~michalz@185.246.207.203) (Remote host closed the connection)
08:01:31 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
08:01:59 <Guest96> it says it's using ghc 8.6.5 which matches lts-14.16 and ghcup tui confirms that it's installed (just not system default)
08:02:44 lagash joins (lagash@lagash.shelltalk.net)
08:02:52 cheater joins (~Username@user/cheater)
08:02:53 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
08:04:12 <tomsmeding> Guest96: if you're using stack, then it will use whatever stack.yaml contains, disregarding whatever ghcup installs
08:04:36 <tomsmeding> (unless you've set 'system-ghc: True' or something, but usually people don't)
08:04:42 cheater_ joins (~Username@user/cheater)
08:05:15 dcoutts joins (~duncan@host86-151-9-67.range86-151.btcentralplus.com)
08:05:30 <Guest96> yeah, i assume 8.6.5 is selected by lts-14.16 because i didn't set it myself
08:05:35 <Guest96> but why is it unable to build?
08:05:47 <tomsmeding> Guest96: what happens if you change the lts-14.16 in stack.yaml to lts-18.28?
08:06:12 madjestic joins (~madjestic@188-207-87-53.mobile.kpn.net)
08:06:17 <Guest96> lemme try, ghcup needs to pull 8.10.7
08:06:21 <mauke> whoa, that's some error
08:06:25 <mauke> is that the full message?
08:06:27 <tomsmeding> Guest96: no, stack needs that
08:06:32 <tomsmeding> Guest96: ghcup is not involved in stack
08:06:49 × madjestic quits (~madjestic@188-207-87-53.mobile.kpn.net) (Remote host closed the connection)
08:06:49 <Guest96> no, but stack build auto triggers ghcup to install the needed ghc version
08:07:01 <tomsmeding> Guest96: oh is that integrated nowadays? O.o
08:07:03 <tomsmeding> that's cool
08:07:04 <Guest96> yes
08:07:14 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
08:07:27 <Guest96> at least with stack installed via ghcup? i can't remember how the dependencies are all interlinked anymore lol
08:07:30 × dcoutts_ quits (~duncan@host86-149-51-125.range86-149.btcentralplus.com) (Ping timeout: 252 seconds)
08:07:31 <tomsmeding> yeah
08:07:47 <Guest96> that's what i meant about 8.6.5 being installed before when i had the old lts
08:07:55 × razetime quits (~Thunderbi@117.193.3.141) (Ping timeout: 276 seconds)
08:07:55 <Guest96> okay, seems like that built
08:08:02 <tomsmeding> anyway, given the strangeness of your error I'm hoping that there's something wrong with the 8.6.5 installation (which is a couple years old at this point), and hoping that 8.10.7, which is newer and still very widely used, will not have that bug
08:08:14 <tomsmeding> maybe something in that new stack-ghcup interaction that wasn't tested with older ghcs
08:08:19 × cheater quits (~Username@user/cheater) (Ping timeout: 265 seconds)
08:08:23 <tomsmeding> Guest96: I see
08:08:24 <Guest96> yeah i know 8.6.5 isn't recent or anything but i thought the point of stackage was to avoid bitrot
08:08:29 <tomsmeding> yes of course
08:08:30 cheater_ is now known as cheater
08:08:37 vpan joins (~0@212.117.1.172)
08:08:41 <tomsmeding> _ostensibly_ what you did should work
08:08:42 <Guest96> and the book is a couple years old too so i figured it would still build equivalent to whatever was new at that time
08:08:51 <tomsmeding> however :p
08:08:52 <Guest96> huh, weird
08:10:15 <Guest96> hm, i reverted the lts version and now it builds on 14.16 too
08:10:24 <tomsmeding> interesting
08:10:32 <tomsmeding> perhaps some Setup.hs only ran once
08:10:43 <tomsmeding> and it failed but nobody cared so the next time everything is fine?
08:11:02 <Guest96> i guess it needed to clobber something in my $HOME/.stack?
08:11:10 <tomsmeding> presumably
08:11:19 <Guest96> weird, well, thanks for the help
08:11:31 codaraxis joins (~codaraxis@user/codaraxis)
08:11:39 <tomsmeding> if you want to continue experimenting you could remove some stuff in ~/.stack and try again, to see if the error reappears
08:11:46 <tomsmeding> but in any case you seem to have a working setup now
08:11:51 <Guest96> haha i think i'm not gonna look a gift horse in the mouth for now
08:11:58 <tomsmeding> as I suspected :)
08:12:21 merijn joins (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl)
08:12:30 × Guest96 quits (~Guest96@2604:4080:11a5:8050:9ca3:338e:932a:37d5) (Quit: Client closed)
08:12:48 × talismanick quits (~talismani@2601:200:c000:f7a0::5321) (Remote host closed the connection)
08:13:55 cheater_ joins (~Username@user/cheater)
08:13:56 dcoutts_ joins (~duncan@host165-120-97-41.range165-120.btcentralplus.com)
08:15:07 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
08:15:21 zeenk joins (~zeenk@2a02:2f04:a307:2300::7fe)
08:15:21 michalz joins (~michalz@185.246.207.203)
08:15:57 cheater joins (~Username@user/cheater)
08:17:15 × dcoutts quits (~duncan@host86-151-9-67.range86-151.btcentralplus.com) (Ping timeout: 268 seconds)
08:18:31 × cheater_ quits (~Username@user/cheater) (Ping timeout: 240 seconds)
08:19:31 × Square quits (~Square4@user/square) (Ping timeout: 240 seconds)
08:21:31 pony joins (sid524992@smol/hors)
08:21:33 CiaoSen joins (~Jura@p200300c9571fe6002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
08:25:07 coot joins (~coot@213.134.170.228)
08:25:28 × coot quits (~coot@213.134.170.228) (Remote host closed the connection)
08:26:06 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
08:26:14 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
08:26:31 × kimjetwav quits (~user@2607:fea8:235e:b600:3d66:fa8b:402c:9466) (Ping timeout: 250 seconds)
08:26:56 cheater_ joins (~Username@user/cheater)
08:27:41 codaraxis__ joins (~codaraxis@user/codaraxis)
08:28:26 × cheater quits (~Username@user/cheater) (Ping timeout: 246 seconds)
08:28:33 cheater_ is now known as cheater
08:30:51 freeside joins (~mengwong@103.252.202.85)
08:31:01 × codaraxis quits (~codaraxis@user/codaraxis) (Ping timeout: 240 seconds)
08:32:08 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:acf4:2d59:900d:be3a)
08:33:38 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
08:34:56 razetime joins (~Thunderbi@117.193.3.141)
08:35:31 mastarija joins (~mastarija@188.252.197.99)
08:36:28 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:acf4:2d59:900d:be3a) (Ping timeout: 252 seconds)
08:37:16 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
08:38:20 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
08:38:28 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
08:47:44 × mastarija quits (~mastarija@188.252.197.99) (Quit: WeeChat 3.7.1)
08:49:41 mastarija joins (~mastarija@188.252.197.99)
08:49:45 cheater joins (~Username@user/cheater)
08:52:03 chele joins (~chele@user/chele)
08:52:27 acidjnk joins (~acidjnk@p200300d6e715c457c536ba982fab447f.dip0.t-ipconnect.de)
08:57:33 × ft quits (~ft@62.155.196.67) (Quit: leaving)
08:59:59 cheater_ joins (~Username@user/cheater)
09:00:17 × kadenwolff[m] quits (~kadenwolf@2001:470:69fc:105::1:d97f) (Quit: You have been kicked for being idle)
09:02:23 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
09:02:25 cheater_ is now known as cheater
09:04:45 gurkenglas joins (~gurkengla@dynamic-046-114-182-005.46.114.pool.telefonica.de)
09:05:43 × jinsl quits (~jinsl@2408:8207:255d:b420:211:32ff:fec8:6aea) (Ping timeout: 260 seconds)
09:05:56 jinsl joins (~jinsl@2408:8207:2552:9fc0:211:32ff:fec8:6aea)
09:08:49 lagash joins (lagash@lagash.shelltalk.net)
09:15:09 × hays quits (rootvegeta@fsf/member/hays) (Read error: Connection reset by peer)
09:17:22 × zeenk quits (~zeenk@2a02:2f04:a307:2300::7fe) (Quit: Konversation terminated!)
09:20:36 razetime1 joins (~Thunderbi@117.193.3.141)
09:21:17 × razetime quits (~Thunderbi@117.193.3.141) (Ping timeout: 246 seconds)
09:21:18 razetime1 is now known as razetime
09:21:50 cheater_ joins (~Username@user/cheater)
09:23:13 cheater__ joins (~Username@user/cheater)
09:23:16 × phma quits (~phma@host-67-44-208-120.hnremote.net) (Read error: Connection reset by peer)
09:24:01 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
09:24:13 phma joins (~phma@host-67-44-208-27.hnremote.net)
09:25:39 cheater___ joins (~Username@user/cheater)
09:25:39 cheater___ is now known as cheater
09:26:35 × cheater_ quits (~Username@user/cheater) (Ping timeout: 264 seconds)
09:27:39 × cheater__ quits (~Username@user/cheater) (Ping timeout: 260 seconds)
09:30:55 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
09:31:22 cheater joins (~Username@user/cheater)
09:31:44 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
09:32:10 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
09:35:38 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
09:45:11 azimut joins (~azimut@gateway/tor-sasl/azimut)
09:46:01 cheater_ joins (~Username@user/cheater)
09:47:31 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
09:47:37 cheater_ is now known as cheater
09:52:38 × Flow quits (~none@gentoo/developer/flow) (Quit: WeeChat 3.7.1)
09:53:04 Flow joins (~none@gentoo/developer/flow)
09:55:56 × maerwald quits (~maerwald@user/maerwald) (Quit: gone)
09:59:57 × razetime quits (~Thunderbi@117.193.3.141) (Quit: See You Space Cowboy)
10:00:56 × shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 265 seconds)
10:02:11 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:51a8:e4ff:15ed:6357)
10:05:50 × kenran quits (~user@user/kenran) (Remote host closed the connection)
10:06:10 kenran joins (~user@user/kenran)
10:10:13 maerwald joins (~maerwald@mail.hasufell.de)
10:12:29 × maerwald quits (~maerwald@mail.hasufell.de) (Changing host)
10:12:29 maerwald joins (~maerwald@user/maerwald)
10:13:31 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 240 seconds)
10:25:03 cheater_ joins (~Username@user/cheater)
10:27:02 × cheater quits (~Username@user/cheater) (Ping timeout: 265 seconds)
10:27:09 cheater_ is now known as cheater
10:28:29 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
10:29:13 gmg joins (~user@user/gehmehgeh)
10:30:55 hays joins (rootvegeta@fsf/member/hays)
10:33:17 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
10:35:29 <pkal> Does anyone know what .hs-boot files are?
10:38:18 × mastarija quits (~mastarija@188.252.197.99) (Quit: WeeChat 3.7.1)
10:41:10 mastarija joins (~mastarija@188.252.197.99)
10:45:11 <int-e> Yes: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/separate_compilation.html#how-to-compile-mutually-recursive-modules
10:47:43 × ramin_hal9001 quits (~user@126.249.179.97) (Ping timeout: 268 seconds)
10:53:06 __monty__ joins (~toonn@user/toonn)
10:54:30 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
10:56:29 cheater joins (~Username@user/cheater)
11:00:08 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
11:07:49 cheater_ joins (~Username@user/cheater)
11:07:50 Inst joins (~Inst@2601:6c4:4081:54f0:b848:a37f:7ef6:16ca)
11:08:01 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 240 seconds)
11:08:26 mncheck joins (~mncheck@193.224.205.254)
11:09:16 × cheater quits (~Username@user/cheater) (Ping timeout: 276 seconds)
11:09:26 cheater_ is now known as cheater
11:09:47 × CiaoSen quits (~Jura@p200300c9571fe6002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
11:20:51 xff0x joins (~xff0x@ai098135.d.east.v6connect.net)
11:32:58 <pkal> Does it make sense that HLS suggests these files are places where functions are defined?
11:36:21 <dminuoso> What do zou mean_
11:36:26 cheater_ joins (~Username@user/cheater)
11:36:27 <dminuoso> Oh. What do you mean?
11:37:01 L29Ah joins (~L29Ah@wikipedia/L29Ah)
11:38:54 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
11:39:02 cheater_ is now known as cheater
11:40:33 <pkal> Sometimes in Emacs when I use M-. to jump to a definition, I am given to file locations, one .hs the other .hs-boot
11:40:51 <pkal> (Context, I am working on Agda, and for some reason these files were added to the repo)
11:47:41 nate4 joins (~nate@98.45.169.16)
11:48:17 <siers69> (Why) Do typeclasses have to have laws? That doesn't seem entirely necessary.
11:51:16 <__monty__> Laws are what make them useful wrt reasoning about them.
11:52:37 <__monty__> You can only abstract over Functors or Monads because you can rely on the laws. The fact they're a typeclass is just an implementation detail.
11:52:43 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 248 seconds)
11:54:02 <pkal> siers69: "(Why) Do typeclasses have to have laws?" No, in the sense that the compiler doesn't enforce them, but yes in the sense that they are expected for the abstraction to work. Or why do you think they are not necessary?
11:56:09 <dminuoso> siers69: The *why* part is a really good question, actually.
11:56:09 <siers69> Ok, first, tell me what about the list typeclass? What laws would that have? "class List a where nil :: List a; cons :: a -> List a -> List a" (I hope I didn't screw anything up in the code.)
11:56:37 <dminuoso> siers69: I think you have it backward.
11:56:47 <siers69> I just might and that's why I'm here.
11:56:49 cheater_ joins (~Username@user/cheater)
11:56:55 <dminuoso> There's a rough consensus amongst many Haskellers that a typeclass should only exist *if* it is lawful.
11:57:40 <dminuoso> The thing is, haskell typeclasses arent quite like `interfaces` or `behaviors` from other languages.
11:58:00 <dminuoso> So the beginning question is, what can you infer from `f :: F a => ... a ...`?
11:58:36 <dminuoso> In a setting where you use `F` as a kind of interface, it might be suitable in the sense of `HasLogging` perhaps
11:58:42 <dminuoso> Those are fine, and dont need laws really.
11:59:01 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
11:59:06 <dminuoso> However, there's a greater family of things where its hard to describe what the typeclass really embodies.
11:59:31 <dminuoso> Take `Functor` for instance. It doesnt embody anything but its laws. However, if you do that, it opens up code transformations and reasoning based on just the laws.
12:01:05 <siers69> how come they aren't? aren't technically or aren't supposed to be?
12:01:09 <Axman6> the Default class is a good example of a lawless class, where knowing that a type has an instance tells you basically nothing, other that you can make _something_ of that type. That something tends to follow some conventions, but without laws (which you'd struggle to define for that class), you can't then start to write code that is generic over types which are instances of Default
12:02:29 <Axman6> foo :: Default a => ... a ... basically doesn't tell me anything
12:02:55 × cheater_ quits (~Username@user/cheater) (Ping timeout: 256 seconds)
12:03:39 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:51a8:e4ff:15ed:6357) (Remote host closed the connection)
12:03:48 <siers69> It's a selling point for "typeclasses are more useful, if they're lawless".
12:03:57 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:51a8:e4ff:15ed:6357)
12:04:16 <Axman6> I'm not sure how you could come to that conclusion from what I've said
12:04:24 <Axman6> did you mean lawful?
12:04:30 <siers69> yes, lawful, sorry
12:04:31 <Axman6> or, have laws?
12:04:41 <Axman6> ok :)
12:05:28 <maerwald[m]> Laws are for conformists
12:05:37 <Axman6> \m/
12:06:54 <maerwald[m]> Would be interesting if GHC had knowledge of the monad/applicative laws and be able to apply more optimization/rewrites
12:07:04 <siers69> qa
12:07:22 <maerwald[m]> But right now they are only in your head
12:07:27 <Axman6> siers69: Also worth mentioning that your code above doesn't make a whole lot of sense, I guess you could have something like this though: class List t where nil :: t a; cons :: a -> t a -> t a (depending on what you what that class to be able to achieve).
12:07:30 <maerwald[m]> No monad police
12:08:08 <siers69> Axman6, I thought I was missing something, yeah I wanted to define the list algebra over some set.
12:08:45 <Axman6> can we write instance specific RULES though? If we know a particular monad obeys the laws, then have monomorphic RULES
12:09:31 <__monty__> Monomorphic or monadmorphic?
12:09:53 <Axman6> por que no los dos?
12:11:48 kaskal joins (~kaskal@089144220250.atnat0029.highway.webapn.at)
12:13:47 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
12:16:50 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
12:17:52 <siers69> Axman6, does the list algebra have any laws?
12:19:13 <Axman6> not sure, it would probably need some operations that use t a to have laws
12:19:49 <Axman6> like adding (+++) :: t a -> t a -> t a
12:19:51 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 255 seconds)
12:19:58 <Axman6> or foldr
12:21:00 motherfsck joins (~motherfsc@user/motherfsck)
12:21:04 lagash joins (lagash@lagash.shelltalk.net)
12:21:27 cheater_ joins (~Username@user/cheater)
12:21:27 cheater_ is now known as cheater
12:22:41 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
12:25:59 × cheater quits (~Username@user/cheater) (Ping timeout: 264 seconds)
12:26:34 <dminuoso> 13:06:54 maerwald[m] | Would be interesting if GHC had knowledge of the monad/applicative laws and be able to apply more optimization/rewrites
12:26:46 <dminuoso> Yes, consider the amount of GHC bug reports when it applies a "wrong" optimization.
12:27:14 <dminuoso> Without a checkable proof, I think it's a bad idea.
12:28:00 <dminuoso> Just consider that many bugs arising from improper accursedUnutterablePerformIO usage ended up as GHC bugs before they were identified as bytestring bugs or what not.
12:29:08 <dminuoso> I'd rather use Yoneda manually than have GHC incorrectly assume correct Functor laws
12:29:29 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:32:47 cheater_ joins (~Username@user/cheater)
12:32:47 cheater_ is now known as cheater
12:36:02 <zzz> little help: f x y = pure $ g x y === f x = pure . g x === f = ???
12:36:32 <zzz> @pl pure $ g x y
12:36:32 <lambdabot> pure (g x y)
12:38:15 <dminuoso> f = pure .: g
12:38:18 <zzz> f = (pure .) . g -- ?
12:38:25 <dminuoso> sure, that'ss the same expression.
12:38:31 <dminuoso> .: = (.) . (.)
12:38:35 <dminuoso> .: = (.) `fmap` (.)
12:38:39 <dminuoso> .: = fmap fmap fmap\
12:38:57 <dminuoso> I frequently define .: or .:: on the spot when its convenient
12:39:12 <zzz> oh ok
12:39:21 <zzz> i think ill use a lambda for readability
12:39:22 <dminuoso> `.: = fmap . fmap` or `.:: = fmap . fmap . fmap` is what I usuallyw rite then
12:39:25 <dminuoso> Yeah that's great too.
12:39:44 <zzz> :)
12:39:46 <dminuoso> I tend to use .: when its useful for vertical alignment
12:40:01 <dminuoso> zzz: https://gist.github.com/dminuoso/23bb703a4b355027a93b56e369d41145
12:40:03 <dminuoso> like here
12:40:21 <dminuoso> (well not quite alignment, but you get the idea - it fits better visually)
12:41:02 <dminuoso> the nice thing about .:: is that is you stare at just the bottom row, you can visually see the nth argument it composes into.
12:41:19 <dminuoso> . composes for the first argument, .: for the second, .:: for the third, and so on :)
12:41:42 <zzz> i dont know why but my functional intuition was that there would be some elegant way to express this
12:41:55 <dminuoso> and additionally nice is that the total number of dots remains the same when you write `(.::) = (.) . (.) . (.)`
12:42:02 <dminuoso> there's some cool symmetry there. :)
12:42:19 <zzz> :) nice
12:42:50 <dminuoso> `(f .) . g` I dislike however though, it takes extra mental effort to decipher it for me.
12:43:00 <dminuoso> It looks like output from lambdabots @pl
12:43:01 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 240 seconds)
12:44:34 <Profpatsch> class IntegerLiteral a where
12:44:35 <Profpatsch> integerLiteral :: Integer -> a
12:44:46 <Profpatsch> instance IntegerLiteral num => Num (NumLiteralOnly sym num) where
12:45:25 <Profpatsch> data Foo instance IntegerLiteral (Enc x) where
12:45:34 <Profpatsch> huh
12:45:40 <Profpatsch> Oh, sorry lol, I’m gonna paste
12:45:53 <Profpatsch> It’s only two more lines though hrm
12:46:20 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
12:46:45 <Profpatsch> data Foo a = … deriving (Num) via (NumLiteralOnly "Foo" (Foo a)) instance IntegerLiteral (Foo a) where
12:46:49 <Profpatsch> Am I haskelling this right
12:47:11 <Profpatsch> I think I’m gonna make a gist
12:47:35 <Profpatsch> the idea is that I want a blanket newtype instance that allows my types to only implement `fromInteger` in Num, and throw useful errors otherwise
12:47:51 <Profpatsch> at runtime ofc, but that’s the best one can do afaik
12:50:50 <Profpatsch> https://gist.github.com/Profpatsch/b49c5f4bace41fa07338e8c07252d712
12:50:57 <Profpatsch> This is the full code
12:51:26 <Profpatsch> I implement `IntegerLiteral` and get `Num` for “free” via the NumLiteralOnly instance
12:54:08 <Profpatsch> Okay, I used the wrong instance, now it should be better
12:54:38 hugo joins (znc@verdigris.lysator.liu.se)
12:54:48 <Profpatsch> > Foo 4 + Foo 4
12:54:50 <lambdabot> error:
12:54:50 <lambdabot> Data constructor not in scope: Foo :: t0 -> aerror:
12:54:50 <lambdabot> Data constructor not in scope: Foo :: t1 -> a
12:54:50 <Profpatsch> *** Exception: Only use as numeric literal allowed for Foo, you tried to multiply (NumLiteralOnly)
12:55:09 <Profpatsch> but
12:55:11 <Profpatsch> > 4 :: Foo
12:55:13 <lambdabot> error:
12:55:13 <lambdabot> Not in scope: type constructor or class ‘Foo’
12:55:13 <Profpatsch> Foo 4
12:55:33 × Benzi-Junior quits (~BenziJuni@dsl-149-66-52.hive.is) (Quit: ZNC 1.8.2 - https://znc.in)
12:55:53 <Profpatsch> lambdabot should use a symbol that’s not the commonly used quote syntax or REPL symbol :(
12:56:48 <Hecate> yes
12:56:50 <Hecate> agreed
12:56:56 <Hecate> who's the master of puppets here?
12:57:26 <Profpatsch> Hecate: beware, it’s been that way for 1 or 2 decades, people are gonna explode if you propose to change it :P
12:57:28 <byorgey> I thought the fact that it's a commonly used REPL symbol is exactly *why* lambdabot uses it =)
12:58:30 <Profpatsch> byorgey: well, obviously lambdabot should use λ or Λ :P
12:58:52 <Profpatsch> or \x.
12:59:40 CiaoSen joins (~Jura@p200300c9571fe6002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
13:00:04 cheater_ joins (~Username@user/cheater)
13:00:14 <byorgey> obviously =)
13:01:59 × cheater quits (~Username@user/cheater) (Ping timeout: 264 seconds)
13:02:01 cheater_ is now known as cheater
13:02:11 <yushyin> i know a few irc channel bots that use the @ symbol. In the past this was not much of a problem, however, nowadays it is.
13:02:37 <yushyin> :)
13:04:04 <geekosaur> I know of bots in 3 or 4 channels/channel groups that use @
13:04:26 <geekosaur> in one it's to distinguish from other bots
13:04:41 <geekosaur> (granting we don't expect other bots to show uphere)
13:05:07 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:51a8:e4ff:15ed:6357) (Remote host closed the connection)
13:05:25 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:51a8:e4ff:15ed:6357)
13:06:17 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
13:09:40 × phma quits (~phma@host-67-44-208-27.hnremote.net) (Read error: Connection reset by peer)
13:10:03 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
13:10:35 phma joins (phma@2001:5b0:2144:4f68:9b04:52b2:83ef:e696)
13:11:07 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
13:11:18 Guest|17 joins (~Guest|17@1.144.104.218)
13:11:48 B-J joins (~BenziJuni@dsl-149-66-52.hive.is)
13:18:12 srz joins (~srz@181.228.49.93)
13:18:14 cheater joins (~Username@user/cheater)
13:20:06 cheater_ joins (~Username@user/cheater)
13:20:36 × B-J quits (~BenziJuni@dsl-149-66-52.hive.is) (Quit: ZNC 1.8.2 - https://znc.in)
13:21:37 <Guest|17> Hi! I have come here, unfortunately, with an issue that I am unsure how to solve. I was intending to get back into using haskell and thought to look for how to install it. I found this page - https://www.haskell.org/ghcup/install/#manual-installation - and since I am using WSL 2 with Ubuntu 20.04, I thought that just using `curl --proto '=https'
13:21:37 <Guest|17> --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh` should do the trick. During the installation prompts, I chose to append the PATH variable and to install the HLS and enable the enhanced intergration with stack (though later I tried other combinations with no apparent difference).
13:21:38 <Guest|17> Unfortunately, every time I tried this, the installation failed at the download stage. The usual output looks something like
13:21:38 <Guest|17> ```
13:21:39 <Guest|17>  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
13:21:39 <Guest|17>                                  Dload  Upload   Total   Spent    Left  Speed
13:21:40 <Guest|17>   0     0    0     0    0     0      0      0 --:--:--  0:03:04 --:--:--     0
13:21:40 <Guest|17> curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to downloads.haskell.org:443
13:21:41 <Guest|17> "curl -Lf https://downloads.haskell.org/~ghcup/0.1.19.2/x86_64-linux-ghcup-0.1.19.2" failed!
13:21:41 <Guest|17> ```
13:21:42 <Guest|17> Sometimes a Total of about 15Mb is present, and one time several other sections were filled out, but the Speed is always 0 with no progress being made, and an eventual end to the connection (though I have also killed this on the occasion it stayed alive for over 5 minutes). I couldn't really find any issue on the boards that seemed similar to mine
13:21:42 <Guest|17> and so I am here to ask whether anyone has encountered this before/has an idea on what the issue is and how to fix it.
13:22:28 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
13:24:18 cheater__ joins (~Username@user/cheater)
13:24:19 cheater__ is now known as cheater
13:24:30 × Guest|17 quits (~Guest|17@1.144.104.218) (Quit: Connection closed)
13:24:40 × cheater_ quits (~Username@user/cheater) (Ping timeout: 252 seconds)
13:25:37 Guest|17 joins (~Guest|17@CPE-18-51.dsl.OntheNet.net)
13:29:54 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
13:31:25 npmania1 joins (~Thunderbi@45.8.223.223)
13:34:52 × npmania quits (~Thunderbi@45.8.223.208) (Ping timeout: 276 seconds)
13:34:52 npmania1 is now known as npmania
13:35:56 B-J joins (~BenziJuni@dsl-149-66-52.hive.is)
13:36:43 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:acf4:2d59:900d:be3a)
13:41:01 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:acf4:2d59:900d:be3a) (Ping timeout: 240 seconds)
13:47:30 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
13:48:11 cheater joins (~Username@user/cheater)
13:53:43 × cheater quits (~Username@user/cheater) (Ping timeout: 276 seconds)
13:54:22 cheater joins (~Username@user/cheater)
13:54:48 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
13:59:28 cheater_ joins (~Username@user/cheater)
13:59:30 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
13:59:31 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
13:59:31 wroathe joins (~wroathe@user/wroathe)
14:02:03 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
14:02:31 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
14:02:31 allbery_b joins (~geekosaur@xmonad/geekosaur)
14:02:34 allbery_b is now known as geekosaur
14:03:41 × cheater_ quits (~Username@user/cheater) (Ping timeout: 246 seconds)
14:05:00 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
14:05:08 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
14:11:22 jero98772 joins (~jero98772@2800:484:1d80:d8ce:9815:cfda:3661:17bb)
14:12:41 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
14:14:18 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
14:15:27 cheater_ joins (~Username@user/cheater)
14:15:28 cheater_ is now known as cheater
14:18:58 cheater_ joins (~Username@user/cheater)
14:19:47 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds)
14:19:54 thegeekinside joins (~thegeekin@189.141.115.134)
14:20:43 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
14:23:31 × cheater_ quits (~Username@user/cheater) (Ping timeout: 260 seconds)
14:25:34 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 276 seconds)
14:25:52 MangoIV[m] joins (~mangoivma@2001:470:69fc:105::2:8417)
14:26:25 ratapaca joins (~ratapaca@98.40.240.33)
14:27:47 cheater_ joins (~Username@user/cheater)
14:27:47 cheater_ is now known as cheater
14:28:18 simendsjo joins (~user@185.83.164.132)
14:28:32 × simendsjo quits (~user@185.83.164.132) (Remote host closed the connection)
14:29:12 jmdaemon joins (~jmdaemon@user/jmdaemon)
14:33:58 razetime joins (~Thunderbi@117.193.3.141)
14:34:40 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
14:35:12 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 248 seconds)
14:35:45 ft joins (~ft@p3e9bc443.dip0.t-ipconnect.de)
14:35:58 Lord_of_Life_ is now known as Lord_of_Life
14:37:08 × euandreh quits (~Thunderbi@189.6.18.7) (Quit: euandreh)
14:37:35 <zzz> what's the simplest library for playing simple waveforms (just a couple of sine/saw/triangle waves interacting) ?
14:38:06 <dminuoso> Mmm, it would be so awesome if I could get getpeername from the socket in a wai application. :(
14:38:10 <dminuoso> Say in warp
14:38:36 <dminuoso> I would be even fine reinjecting that as a http header or something
14:38:49 <dminuoso> Is there a unix domain socket proxy that would do this for me?
14:40:02 cheater_ joins (~Username@user/cheater)
14:40:50 <geekosaur> zzz, cross-platform audio is annoyingly difficult, and nobody's done a single-platform library. which means pretty much the only option is sdl_audio which is hardly lightweight
14:41:30 <dminuoso> geekosaur: there's qt
14:41:32 ht_ joins (~Thunderbi@194.110.115.10)
14:41:59 <dminuoso> but I guess that doesnt quite match the "lightweight" requirement :)
14:42:03 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
14:42:08 cheater_ is now known as cheater
14:42:20 <EvanR> there's portaudio bindings
14:42:56 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Ping timeout: 246 seconds)
14:42:57 ht_ is now known as _ht
14:43:26 <EvanR> there doesn't seem to be any fmod bindings...
14:44:45 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 255 seconds)
14:51:05 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:53:30 <zzz> i'm not as interested in lightweight as i am in simple to use
14:54:56 × ratapaca quits (~ratapaca@98.40.240.33) (Quit: Leaving)
14:55:14 <zzz> all i want is something like `play $ sine (Hz 446.0) <> saw (Hz 200.0) <> custom [whatever]`
14:56:54 × Guest|17 quits (~Guest|17@CPE-18-51.dsl.OntheNet.net) (Ping timeout: 255 seconds)
14:57:11 <zzz> i'm currently exploring https://hackage.haskell.org/package/synthesizer-core-0.8.3/docs/Synthesizer-Generic-Oscillator.html
14:57:40 <stefan-_> there seem to be libraries related to SuperCollider, e.g. https://hackage.haskell.org/package/hsc3
15:00:40 <zzz> o.o
15:00:42 Sgeo joins (~Sgeo@user/sgeo)
15:00:47 <zzz> this is going to be harder than i thought
15:01:02 <EvanR> SDL_Mixer touted itself as easier to use for a long time
15:01:27 <EvanR> you can also shell out to e.g. aplay (linux ALSA)
15:02:03 × ubert1 quits (~Thunderbi@p200300ecdf216c77fe5efe35ee3dae02.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
15:02:06 <dminuoso> Where is the documentation on the -N RTS flag?
15:02:14 <dminuoso> I cant seem to find it under https://downloads.haskell.org/ghc/latest/docs/users_guide/runtime_control.html#rts-options-for-concurrency-and-parallelism
15:03:49 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:04:40 <geekosaur> https://downloads.haskell.org/ghc/latest/docs/users_guide/using-concurrent.html#parallel-options
15:04:53 <geekosaur> which your link links to
15:05:27 <dminuoso> Gah that's some poor UX. :(
15:05:30 <dminuoso> Thanks
15:06:17 <dminuoso> geekosaur: It would have been nice if they were listed under 5.7 Runtime system (RTS) options
15:06:26 <geekosaur> yeh
15:06:27 <dminuoso> Not under 5.4 "Using Concurrent Haskell"
15:06:44 <geekosaur> there's also random -f flags that aren't listed in the master list of options
15:12:40 × razetime quits (~Thunderbi@117.193.3.141) (Quit: See You Space Cowboy)
15:14:37 × cheater quits (~Username@user/cheater) (Ping timeout: 265 seconds)
15:15:03 cheater joins (~Username@user/cheater)
15:17:19 × CiaoSen quits (~Jura@p200300c9571fe6002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
15:18:45 <zzz> hmm... so i have a tone but it block gloss rendering https://paste.jrvieira.com/1679671082730
15:18:48 <zzz> what am i doing wrong?
15:19:03 <zzz> s/block/blocks
15:19:48 <zzz> oops, wrong paste! this is the correct one: https://paste.jrvieira.com/1679671178614
15:21:23 <[exa]> you might want to fork off the "soudn rendering" from "picture rendering" using say forkIO
15:22:41 cheater_ joins (~Username@user/cheater)
15:23:28 <EvanR> audio is usually handled using a callback. The OS calls your callback to get more samples when the sound system is about to runout. Or you could use a blocking strategy and push samples out as fast as they will be accepted. Either way it needs to involve threads if you want something else to be happening concurrently
15:23:48 × cheater quits (~Username@user/cheater) (Ping timeout: 265 seconds)
15:23:53 <EvanR> like the gloss main loop
15:23:55 cheater_ is now known as cheater
15:26:13 <EvanR> zzz, here's an oldie but goodie https://hackage.haskell.org/package/csound-expression
15:26:22 <EvanR> if you want to screw around with waves
15:32:51 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
15:33:58 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
15:35:07 <zzz> thanks i'll take a look
15:35:50 <zzz> i have no experience with concurrency
15:36:59 <EvanR> you got your forkIO, you got your MVars, you got your TVars, you got your Async (library)
15:37:22 <zzz> i get the theory, just never done it
15:37:23 <dminuoso> Mmm, is there an unforkIO, and if yes, what would it do?
15:37:38 <EvanR> is unfork like pthreads join?
15:37:45 <dminuoso> Is it? I dont know!
15:37:52 <EvanR> which would be async's await
15:37:57 <zzz> *never done it in Haskell
15:38:06 <dminuoso> 16:35:50 zzz | i have no experience with concurrency
15:38:16 <dminuoso> Honestly, if this your first experience, it will be a blast. :)
15:38:24 <zzz> in Haskell
15:38:32 <zzz> i've done it in other languages
15:38:32 <EvanR> there will be plenty of "fun" for sure
15:38:42 <EvanR> not nearly as "fun" as other languages though
15:38:54 <zzz> unsafeFun ?
15:39:53 <zzz> hmm... killThread is not working
15:39:55 <zzz> i mean
15:40:17 <zzz> let's ignore the fact that i'm creating a thread every frame and killing the previous one
15:40:20 <zzz> https://paste.jrvieira.com/1679672197883
15:41:26 <EvanR> "not working"
15:41:50 <zzz> it keeps adding sines to the signal until it explodes
15:42:03 <geekosaur> if it's making an FFI call to play the audio, and that FFI call is not marked as interruptible, killThread won't work
15:42:13 <zzz> oh
15:42:22 <zzz> there you go
15:42:24 <zzz> thanks
15:42:46 <EvanR> you wouldn't want to be killing this thread anyway because you want it to remain ready to handle the ongoing audio
15:43:05 <zzz> yes, i was just experimenting
15:43:13 <EvanR> in your playIO send control messages to the other threads via MVars or something
15:43:29 <zzz> oh i get it
15:44:06 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:acf4:2d59:900d:be3a)
15:44:17 <zzz> when will concurrency be elegant?
15:44:27 <EvanR> and then when you want music to sound right you set up a sequencer... and when you want the synthesizer or sound right you get sucked into Digital Signal Processing Arcana
15:44:49 <zzz> no no, i just want simple oscillators
15:45:22 <zzz> but sound processing is my jam, i would love to do it
15:45:33 <EvanR> since you're up against the raw OS audio API it's not going to be incredibly elegant
15:46:01 <zzz> i mean functional concurrency in general
15:46:05 <EvanR> there was a dream at one time you could hide that behind some FRP and handle time varying signals as is
15:47:04 <EvanR> well, if you have no experience with haskell's concurrency and lots of experience with traditional pthreads(crap)-like libraries, better hold off on judgements
15:47:59 <[exa]> zzz: literally just type forkIO before your call of `sound` there :]
15:48:29 <zzz> i only have experience with simple consurrency in imperative languages. zero experience with audio APIs
15:48:31 × Inst quits (~Inst@2601:6c4:4081:54f0:b848:a37f:7ef6:16ca) (Ping timeout: 240 seconds)
15:49:00 <[exa]> zzz: the problem there is that the program starts generating the sound, but never gets to actually drawing anything because you only have 1 thread
15:49:13 nate4 joins (~nate@98.45.169.16)
15:50:06 <EvanR> simple concurrency in imperative languages, sounds like a contradiction xD
15:50:14 <[exa]> yeah
15:51:01 <zzz> ha
15:51:15 <zzz> [exa]: ok it's working
15:51:33 <[exa]> lol really? cool
15:52:16 <[exa]> I kinda wanted to start a dramatic narrative on how managing the pthreads is super complex and in haskell at least we have kinda safe abstract operation with the IO "fibers" above that
15:52:22 <[exa]> but lo, it was simpler
15:53:43 <[exa]> I guess the next problem will be to sync the threads properly, but that might be doable with a few shared IORefs for communication
15:54:12 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds)
15:54:15 <zzz> ok i need to read up on how to communicate with the thread now
15:56:23 <zzz> drawing the waveforms was infinitely simpler than producing the sound
15:56:34 <zzz> i would not expect that
15:56:46 <[exa]> Gloss is good for this
15:56:52 <zzz> yeah i blame gloss
15:57:10 <zzz> we need Glass for audio :)
15:57:39 <[exa]> btw there are some audio synth projects around that actually use gloss
15:57:54 <zzz> are there?
15:59:03 × mbuf quits (~Shakthi@49.207.178.186) (Quit: Leaving)
15:59:07 <[exa]> https://hackage.haskell.org/package/synthesizer-core -- environs of this thing might be good
15:59:59 <zzz> i was exploring that
16:00:40 <zzz> i mean, that's actually what i'm using
16:01:10 <zzz> i need to close the 19 SDL tabs in my browser
16:01:56 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
16:02:45 Guest|61 joins (~Guest|61@91-167-181-228.subs.proxad.net)
16:02:52 <Guest|61> hello
16:03:16 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
16:03:21 econo joins (uid147250@user/econo)
16:04:17 <[exa]> zzz: the "usual" workflow with SDL and others that each graphics frame you also generate a tiny piece of the sound buffer, typically using some library that remembers which sounds were just playing and from where. That should also work here (with playIO) but I'd say it might be better to simply keep the 2 threads separated and use some environment to communicate. The main API problem there would be to have
16:04:23 <[exa]> the synthesizer react to results of IO actions (mainly readIORef)
16:04:27 <[exa]> Guest|61: well hello there
16:06:03 <zzz> ok so rethinking all of this, what i should do is probably stream this, because that's what i'm using to draw the oscilloscope points https://paste.jrvieira.com/1679673953461
16:06:34 × Guest|61 quits (~Guest|61@91-167-181-228.subs.proxad.net) (Client Quit)
16:08:14 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
16:08:17 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
16:08:35 <[exa]> zzz: yeah, more like `x` and `y` should be made "global parameters" with the IORef
16:08:53 × malte quits (~malte@mal.tc) (Ping timeout: 250 seconds)
16:09:05 <zzz> they depend on input
16:09:06 <zzz> wait
16:09:52 <azure_vermilion> does ghc still do stream fusion or has something else replaced it? cos looking at the base library I can't see it
16:10:23 __ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
16:10:24 <EvanR> MVar instead of IORef would let you wait for the next "message", as well as polling if you wanted (like IORef)
16:10:45 <EvanR> TVar would let you poll but magically causes it to block until polling would do anything differently
16:11:50 <[exa]> EvanR: it's sound, no waiting
16:11:51 <davean> So wakeup semantics is important.
16:12:01 × _ht quits (~Thunderbi@194.110.115.10) (Ping timeout: 240 seconds)
16:12:01 __ht is now known as _ht
16:12:06 <zzz> [exa]: https://jrvieira.com/static/liss.mp4
16:12:13 <zzz> [exa]: https://jrvieira.com/static/lisss.mp4
16:12:23 <EvanR> [exa], it's sound. You spend most of your time waiting for the sound to play xD
16:12:29 <EvanR> but that's another thread
16:12:58 <EvanR> 44100 samples per second vs 4 GHz cpu
16:13:23 <davean> well you don't have to wait, you can schedule.
16:13:25 <[exa]> that's okay, unless the OS decides to nope
16:13:48 <davean> But to schedule well you need priority inversion and such.
16:14:02 <davean> or just be entirely scheduled
16:14:06 cheater joins (~Username@user/cheater)
16:14:08 <EvanR> schedule is another way to say block. Unless you want to keep piling more and more audio buffer, which just would introduce egregious lag for an interactive thing
16:14:37 <[exa]> azure_vermilion: tbh afaik they never "removed" anything like it and e.g. Text relies heavily on fusion; maybe you might check there
16:15:37 lagash joins (lagash@lagash.shelltalk.net)
16:16:54 <geekosaur> most fusion shows as RULES pragmas, not as functions or etc.
16:20:45 <zzz> just keep adding 's' to the name of the file in my url if you want more fun
16:21:01 <zzz> it goes up to 10 s
16:21:56 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
16:24:43 Midjak joins (~Midjak@82.66.147.146)
16:25:04 <[exa]> zzz: no rickroll on the end :<
16:26:03 jwiegley joins (~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net)
16:27:24 <geekosaur> not sure kids these days even remember that or its referent 🙂
16:27:30 × dipper_ quits (~dipper@117.61.126.31) (Ping timeout: 268 seconds)
16:27:58 <zzz> i think that era ended when rick astley himself was rickrolled by a random redditor
16:28:28 MacSlow joins (~MacSlow@p57bb2fc5.dip0.t-ipconnect.de)
16:28:34 <MacSlow> Greetings everybody!
16:28:54 <[exa]> o/
16:32:04 <byorgey> hi MacSlow
16:32:31 <byorgey> how's Haskell?
16:33:55 <MacSlow> Very interesting... but still a bit odd when one comes from C/C++ land.
16:35:53 <EvanR> something about how C is a purely functional language
16:36:14 × kenran quits (~user@user/kenran) (Remote host closed the connection)
16:36:26 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:51a8:e4ff:15ed:6357) (Remote host closed the connection)
16:36:44 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:51a8:e4ff:15ed:6357)
16:37:12 <zzz> i just had a small heart attack when pulling stuff from github to my server
16:37:28 <zzz> it turns out they changed their host key yesterday https://github.blog/2023-03-23-we-updated-our-rsa-ssh-host-key/
16:37:36 <zzz> PSA
16:38:34 <MacSlow> zzz: :) can imagine
16:39:08 <darkling> We had to reconfigure our build servers this morning for that.
16:39:11 <MacSlow> once forgot I updated keys on one of my servers... :)
16:39:43 <MacSlow> that was a 'chilling' sensation until I remebered the key-update.
16:41:24 <[exa]> imagine the meta-fun of pushing the privkeys to github when they are actually github keys.
16:42:56 cheater_ joins (~Username@user/cheater)
16:45:01 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
16:46:38 cheater__ joins (~Username@user/cheater)
16:46:38 cheater__ is now known as cheater
16:49:16 × cheater_ quits (~Username@user/cheater) (Ping timeout: 252 seconds)
16:49:57 × trev quits (~trev@user/trev) (Remote host closed the connection)
16:50:01 <geekosaur> gleh, my known-hosts is the hashed format and I have to figure out how to delete the right hash(es)
16:50:46 <EvanR> wasn't there a command to operate on the known-hosts file...
16:50:55 cheater_ joins (~Username@user/cheater)
16:51:39 <zzz> i think ssh-keygen
16:51:39 trev joins (~trev@user/trev)
16:51:43 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
16:53:01 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:3aed:4a10:f448:7afe) (Ping timeout: 240 seconds)
16:53:51 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
16:54:01 cheater_ is now known as cheater
16:55:50 <geekosaur> yeh, ssh-keygen -R github.com
16:56:22 <geekosaur> (or -F in place of -R to see if/where it is_
16:56:26 <geekosaur> )
16:57:56 <tomsmeding> geekosaur: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints
16:58:11 <tomsmeding> remove all github.com entries and add those, I guess
16:59:56 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
17:01:44 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
17:13:52 Nezteb parts (sid594012@id-594012.tinside.irccloud.com) ()
17:15:57 <geekosaur> and then there's the ip address, sigh (decided to test it immediately)
17:17:58 cheater_ joins (~Username@user/cheater)
17:18:16 lagash joins (lagash@lagash.shelltalk.net)
17:18:23 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 248 seconds)
17:20:04 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
17:22:34 cheater__ joins (~Username@user/cheater)
17:22:34 cheater__ is now known as cheater
17:24:19 × cheater_ quits (~Username@user/cheater) (Ping timeout: 276 seconds)
17:26:11 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
17:29:35 hugo joins (znc@verdigris.lysator.liu.se)
17:30:37 jmdaemon joins (~jmdaemon@user/jmdaemon)
17:30:53 jakalx joins (~jakalx@base.jakalx.net)
17:32:41 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
17:41:18 × phma quits (phma@2001:5b0:2144:4f68:9b04:52b2:83ef:e696) (Read error: Connection reset by peer)
17:42:11 phma joins (phma@2001:5b0:210d:9a38:acff:41d6:73ae:16da)
17:42:27 sp00kins joins (~sp00kins@97.sub-174-216-176.myvzw.com)
17:44:50 <MacSlow> bbl
17:44:55 × MacSlow quits (~MacSlow@p57bb2fc5.dip0.t-ipconnect.de) (Quit: leaving)
17:53:36 _xor joins (~xor@74.215.46.17)
17:54:36 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
18:00:43 × cheater quits (~Username@user/cheater) (Ping timeout: 276 seconds)
18:02:05 cheater joins (~Username@user/cheater)
18:07:02 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
18:07:07 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 248 seconds)
18:08:42 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
18:09:10 × vpan quits (~0@212.117.1.172) (Quit: Leaving.)
18:16:40 <dminuoso> Okay I would really like a unix socket proxy that can inject getpeername as a header.
18:17:19 <dminuoso> Or a hook for warp that allows the same, after staring at warp for quite a while, I just dont see any ergonomical way to provide a hook that has a reasonable chance of getting accepted.
18:18:05 <dminuoso> Unless it would be something very specific like `setPeernameHeader :: T.Text -> Settings -> Settings`
18:18:22 <dminuoso> Or well, `Maybe T.Text -> Settings -> Settings` rather I suppose
18:18:28 <dminuoso> Any thoughts?
18:18:59 slack1256 joins (~slack1256@186.11.53.81)
18:20:58 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
18:22:49 hugo- joins (znc@verdigris.lysator.liu.se)
18:23:39 slac48422 joins (~slack1256@191.126.99.83)
18:25:31 × slack1256 quits (~slack1256@186.11.53.81) (Ping timeout: 240 seconds)
18:26:14 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
18:26:40 jpds joins (~jpds@gateway/tor-sasl/jpds)
18:29:48 Square joins (~Square4@user/square)
18:31:55 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
18:33:21 × azure_vermilion quits (~Thunderbi@164.39.138.83) (Quit: azure_vermilion)
18:33:50 azure_vermilion joins (~Thunderbi@164.39.138.83)
18:34:52 × azure_vermilion quits (~Thunderbi@164.39.138.83) (Client Quit)
18:35:10 × Square quits (~Square4@user/square) (Ping timeout: 276 seconds)
18:35:10 azure_vermilion joins (~Thunderbi@164.39.138.83)
18:37:31 × gurkenglas quits (~gurkengla@dynamic-046-114-182-005.46.114.pool.telefonica.de) (Ping timeout: 240 seconds)
18:37:54 cheater_ joins (~Username@user/cheater)
18:38:51 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
18:39:00 cheater_ is now known as cheater
18:39:41 gurkenglas joins (~gurkengla@dynamic-046-114-182-005.46.114.pool.telefonica.de)
18:40:37 shriekingnoise joins (~shrieking@186.137.175.87)
18:41:46 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
18:42:09 ec joins (~ec@gateway/tor-sasl/ec)
18:46:18 slack1256 joins (~slack1256@186.11.48.2)
18:48:37 jakalx parts (~jakalx@base.jakalx.net) ()
18:48:43 × slac48422 quits (~slack1256@191.126.99.83) (Ping timeout: 268 seconds)
18:52:12 jakalx joins (~jakalx@base.jakalx.net)
18:54:03 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 265 seconds)
18:55:01 × hugo- quits (znc@verdigris.lysator.liu.se) (Ping timeout: 240 seconds)
18:55:42 cyphase joins (~cyphase@user/cyphase)
19:01:37 johnw parts (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (ERC 5.4 (IRC client for GNU Emacs 28.2))
19:11:36 × gurkenglas quits (~gurkengla@dynamic-046-114-182-005.46.114.pool.telefonica.de) (Ping timeout: 255 seconds)
19:13:38 gurkenglas joins (~gurkengla@dynamic-089-015-238-223.89.15.238.pool.telefonica.de)
19:22:56 × cheater quits (~Username@user/cheater) (Ping timeout: 246 seconds)
19:23:10 jumper149 joins (~jumper149@base.felixspringer.xyz)
19:26:08 zer0bitz_ joins (~zer0bitz@2001:2003:f443:d600:10e:27fe:cd37:4cd1)
19:27:31 × zer0bitz quits (~zer0bitz@2001:2003:f443:d600:b49b:29c2:a815:97ea) (Ping timeout: 240 seconds)
19:32:05 × chele quits (~chele@user/chele) (Remote host closed the connection)
19:38:53 hugo- joins (znc@verdigris.lysator.liu.se)
19:40:00 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
19:40:35 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
19:41:21 ub joins (~Thunderbi@p548c9c54.dip0.t-ipconnect.de)
19:42:12 × slack1256 quits (~slack1256@186.11.48.2) (Ping timeout: 255 seconds)
19:43:13 kenran joins (~user@user/kenran)
19:43:21 × ubert quits (~Thunderbi@p548c9c54.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
19:43:22 ub is now known as ubert
19:45:21 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 255 seconds)
19:45:35 × hugo- quits (znc@verdigris.lysator.liu.se) (Ping timeout: 248 seconds)
19:45:51 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
19:46:01 lagash joins (lagash@lagash.shelltalk.net)
19:48:09 × zer0bitz_ quits (~zer0bitz@2001:2003:f443:d600:10e:27fe:cd37:4cd1) ()
19:49:25 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
19:50:45 nate4 joins (~nate@98.45.169.16)
19:51:38 zer0bitz joins (~zer0bitz@2001:2003:f443:d600:10e:27fe:cd37:4cd1)
19:53:38 jade1024[m] is now known as riley[m]
19:55:19 Albina_Pavlovna joins (~Albina_Pa@2603-7000-76f0-76e0-7893-ded3-4e0c-2135.res6.spectrum.com)
19:55:31 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
19:55:59 cheater joins (~Username@user/cheater)
19:56:42 × trev quits (~trev@user/trev) (Remote host closed the connection)
19:58:01 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 240 seconds)
19:59:56 hugo- joins (znc@verdigris.lysator.liu.se)
20:02:59 Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
20:03:07 cyphase joins (~cyphase@user/cyphase)
20:07:35 × hugo- quits (znc@verdigris.lysator.liu.se) (Ping timeout: 260 seconds)
20:13:22 cheater_ joins (~Username@user/cheater)
20:13:31 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
20:13:36 cheater_ is now known as cheater
20:13:54 slack1256 joins (~slack1256@186.11.48.2)
20:14:06 hugo- joins (znc@verdigris.lysator.liu.se)
20:17:00 zeenk joins (~zeenk@2a02:2f04:a307:2300::fba)
20:18:01 × slack1256 quits (~slack1256@186.11.48.2) (Ping timeout: 240 seconds)
20:18:55 × hugo- quits (znc@verdigris.lysator.liu.se) (Ping timeout: 250 seconds)
20:28:18 hugo- joins (znc@verdigris.lysator.liu.se)
20:33:31 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
20:39:28 vglfr joins (~vglfr@88.155.57.120)
20:40:15 Guest|17 joins (~Guest|17@CPE-18-51.dsl.OntheNet.net)
20:42:39 × Albina_Pavlovna quits (~Albina_Pa@2603-7000-76f0-76e0-7893-ded3-4e0c-2135.res6.spectrum.com) (Quit: ZZZzzz…)
20:48:08 riley[m] is now known as jade1024[m]
20:51:31 lortabac joins (~lortabac@2a01:e0a:541:b8f0:2938:b910:506b:4cb7)
20:58:53 cheater joins (~Username@user/cheater)
21:01:21 × kimiamania quits (~65804703@user/kimiamania) (Quit: PegeLinux)
21:01:41 kimiamania joins (~65804703@user/kimiamania)
21:02:01 × Guest|17 quits (~Guest|17@CPE-18-51.dsl.OntheNet.net) (Ping timeout: 240 seconds)
21:03:12 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
21:04:22 Albina_Pavlovna joins (~Albina_Pa@2603-7000-76f0-76e0-7893-ded3-4e0c-2135.res6.spectrum.com)
21:05:14 cheater joins (~Username@user/cheater)
21:09:41 Ashkan joins (~Ashkan@a119011.upc-a.chello.nl)
21:12:49 euandreh joins (~Thunderbi@189.6.18.7)
21:16:27 malte joins (~malte@mal.tc)
21:19:16 × srz quits (~srz@181.228.49.93) (Quit: Leaving)
21:34:16 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
21:36:53 dsrt^ joins (~dsrt@c-24-30-76-89.hsd1.ga.comcast.net)
21:39:56 qp joins (~qp@user/qp)
21:41:07 <Ashkan> Hello Hello
21:41:07 <Ashkan> I'm having difficulty with dearimgui bindings. I realised its not on stackage so I added it to the `extra-deps` in `stack.yaml` but `import DearImGui` throws an error (module not recognised) and I see its not added to my project `.cabal` file
21:41:54 <Ashkan> every other package I added as a dependency I can find in the project `.cabal` file but this one
21:42:33 <geekosaur> editing stack.yaml adds nothing to the cabal file. were you perhaps using package.yaml also?
21:44:09 <Ashkan> geekosaur yes. there is a `package.yaml`
21:44:19 <geekosaur> then you need to add it there as well
21:45:41 <Ashkan> So add it both in `extra-deps` and in `package.yaml` ?
21:45:50 <geekosaur> yes. they do different things
21:46:06 qp parts (~qp@user/qp) (WeeChat 3.8)
21:46:08 <geekosaur> (it's a long story)
21:46:09 <Ashkan> now I get this `Cabal-simple_SvXsv1f__3.6.3.0_ghc-9.2.5: The pkg-config package 'glew' is
21:46:09 <Ashkan> dear-imgui > required but it could not be found.` some progress but then what is this `glew` ?
21:46:30 <Ashkan> Build system in Haskell beats Scala's in crappiness:D
21:46:31 <geekosaur> it's an external C or C++ library
21:46:35 mayanhavoc joins (~mayanhavo@2607:fb90:b126:4244:a919:fd57:240f:2c7)
21:46:44 <Ashkan> I see ... so install it on my OS ?
21:46:58 <geekosaur> yes
21:47:13 <geekosaur> apt-cache on my ubuntu system says libglew-dev
21:47:21 <geekosaur> this will vary on other distributions
21:47:22 <Ashkan> geekosaur like the good old C++ days (y)
21:47:36 <geekosaur> exactly like, since it *is* those days
21:47:47 <Ashkan> mine is a mac, most probably brew has got it
21:47:58 <geekosaur> we don';t reimplement the whole world in Haskell, we use external C/C++/etc. libraries for things
21:48:12 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:48:23 <mayanhavoc> I'm trying to follow the Haskell Programming from First Principles book and I'm already stuck on the first chapter.
21:48:23 <mayanhavoc> I'm trying to understand currying.
21:48:24 <mayanhavoc> Could someone help me understand how you go from
21:48:24 <mayanhavoc> (λxy.xxy)(λx.xy)(λx.xz)
21:48:25 <mayanhavoc> to
21:48:25 <mayanhavoc> (λxyz.xz(yz))(λmn.m)(λp.p).
21:48:26 <mayanhavoc> I can work through the previous examples where you substituted z for x and then worked it out by replacing z for x in the body, but I don't understand why instead of replacing z for x, there are now three arguments in the first function and two in the second one.
21:48:26 <mayanhavoc> I've tried writing it out but it just gets confusing:
21:48:27 <mayanhavoc> (λx(λy.xxy)(λx.xxy)(λx.xz)
21:48:27 <mayanhavoc> x:= (λx.xy)
21:48:28 <mayanhavoc> (λy.(λx.xy)xy)(λx.xz)
21:48:28 <mayanhavoc> y:=(λx.xz)
21:48:29 <mayanhavoc> How do I go from here?
21:48:55 lagash joins (lagash@lagash.shelltalk.net)
21:50:29 <Ashkan> mayanhavoc in `\xy.xxy` for example, the `x` and `y` are *bound* because they are named after the lambda symbol. You can replace them with anything you want as long as there is no confusion with the *free* variables. You understand so far ?
21:50:51 <mayanhavoc> Ashkan Yup
21:51:01 <Ashkan> So for all purposes `\xy.xxy` is exactly same as `\ab.aab`
21:52:51 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:2938:b910:506b:4cb7) (Quit: WeeChat 2.8)
21:53:40 <Ashkan> Okay, I'm actually looking at it and it looks more complicated than I first thought ... give me a min to figure this out. I'm in the second 3/th of the book myself so don't expect much from me:D
21:54:40 <mayanhavoc> Ashkan no worries!
21:55:50 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
21:56:04 <Ashkan> Alright, next comes the application: `(\x.xy)(e) --> e` . Like a function call. You give it a name in your head `f(x) =  xy` then call it with `e` so you have `f(e) = ey` so `(\x.xy)(e) -> ey` . Following so far ?
21:57:27 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
21:57:30 <mayanhavoc> Wait. So the application is (\x.xz)?
21:57:50 × Albina_Pavlovna quits (~Albina_Pa@2603-7000-76f0-76e0-7893-ded3-4e0c-2135.res6.spectrum.com) (Quit: ZZZzzz…)
21:57:53 <mayanhavoc> Sorry, what I mean is, is (e) == (\x.xz)?
21:58:15 <Ashkan> Eee ... no, `\x.xz` is an *abstraction* `f(x)=xz`
21:58:46 <Ashkan> defined a function, anonymous function (has no name). To ease the understanding I give them names in my head like `f` here
21:59:43 <int-e> Ashkan: I assume the missing `y` from `(\x.xy)(e) --> ey` was a typo?
22:00:08 Albina_Pavlovna joins (~Albina_Pa@2603-7000-76f0-76e0-7893-ded3-4e0c-2135.res6.spectrum.com)
22:00:10 <Ashkan> Again, IIUC, I have to say no. So an *application* is when you call the (anonymous) function with an actual argument. Lambda calculus doesn't have named functions so you can just say `f(e)`
22:00:57 <Ashkan> They way you write an application is like this : (abstraction)(expression) which means "apply the expression (argument) to the abstraction (function)"
22:00:58 <mayanhavoc> Ok ok
22:01:41 <Ashkan> So when you see `(\x.something)(e)` it means "replace every `x` in `something` with `e`
22:01:47 <Ashkan> So far good ?
22:01:57 <mayanhavoc> Yes! So far I'm with you
22:02:00 <jade1024[m]> yes
22:02:35 <mayanhavoc> OOOHH... it's ey because only x is bound
22:03:50 <Ashkan> Alright then. You now have all it takes to reduce the whole thing yourself:)  only catch is this :
22:03:51 <Ashkan> Sometimes the *bound* variables (function parameter names) appear a lot in totally unrelated expressions and if you just mechanically replace them with some value in the *application*, you then change the meaning of the expression in a wrong way
22:04:27 <Ashkan> mayanhavoc Yes you got it. Because only `x` is the argument (is bound). Everything else is free and stays as is
22:05:24 <Ashkan> So as I was saying, in order to prevent the application from messing up the expression, sometimes we need to first to a *rename*ing of the bound variables. That's what you see with all the new names in the final results
22:07:01 <mayanhavoc> Ok, but I still don't understand how you end up with a bound variable `z`. Is that the application of (\x.xy)(e)? And is (e) in this case representing (\x.xz)?
22:08:46 <Ashkan> Lets do it together  : `(λx.xy)(λx.xz)` means apply `\x.xz` to `\x.xy`
22:10:06 × kenran quits (~user@user/kenran) (Remote host closed the connection)
22:10:38 <Ashkan> now you see we have to totally unrelated lambdas, both having a bound `x` (totally unrelated to each other). You can say `(\a.az)(\b.by)` and it means exactly the same
22:10:58 <mayanhavoc> Ahhh... ok
22:12:28 <Ashkan> only one catch, I'm not sure about the associativity and it is important. Can change the meaning. For example `abc` could be `(ab)c` or `a(bc)`. I'm assuming the later but I'm actually thinking application is left-associative
22:13:09 <mayanhavoc> Ok, that I'm pretty sure is correct. Function application is left associative
22:14:09 <Ashkan> Yup just checked it. Its left associative. So we actually should have started with `(λxy.xxy)(λx.xy)`
22:14:32 <mauke> (page 8)
22:15:08 <Ashkan> `(\ab.aab)(\c.cy)` you understand the equivalence ?
22:15:31 <mayanhavoc> Correct, just changing letters so it's not confusing right?
22:15:36 <Ashkan> yes
22:15:37 <mauke> also, as far as I can tell, the first two terms you were asking about have nothing to do with each other
22:15:59 <Ashkan> note the first `y` got changed because it was bound. The second `y` was not so it sayed.
22:16:45 <mayanhavoc> Right!!! Ok, I follow you
22:16:52 <Ashkan> now `\ab.aab` has two arguments. Its `\a.\b.aab` this is just currying
22:16:56 <Ashkan> Good ?
22:17:07 <mayanhavoc> Good!
22:17:29 cheater_ joins (~Username@user/cheater)
22:18:01 <Ashkan> this currying is important because when you want to do the application, you replace the outermost argument (`a` here, not the `b`)
22:19:11 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
22:19:22 cheater_ is now known as cheater
22:20:06 <Ashkan> so `f (a, b) = aab`, compute `f(\c.cy)` so this is in fact a higher order function application. You should replace the first argument with a value which is itself an abstraction
22:20:13 <Ashkan> Can you do it ?
22:21:02 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
22:21:17 × mastarija quits (~mastarija@188.252.197.99) (Quit: WeeChat 3.7.1)
22:21:51 gmg joins (~user@user/gehmehgeh)
22:22:29 <mayanhavoc> Ok, here is where I start getting lost. Would this be: ` (\c.cy, b) = aab`?
22:22:46 <Ashkan> Nope:)
22:23:04 <Ashkan> in the `aab`, replace the `a`s with the `\c.cy`
22:23:32 <Ashkan> `(\c.cy)(\c.cy)b`
22:23:39 <mayanhavoc> Ok, so more like \b = (\c.cy)(\c.cy)b?
22:23:45 <Ashkan> perfect
22:23:50 <Ashkan> do you understand why ?
22:23:50 <mayanhavoc> Ok ok
22:24:42 <mayanhavoc> Yes, because we are replacing c.cy for a, we remove the a. Sort of like 'b' in terms of 'a'?
22:25:47 <Ashkan> We are *applying* `\c.cy` to `\ab.aab` which means to call it with first argument = `\c.cy`
22:26:27 <mayanhavoc> Ok, I'm getting it, I promise
22:26:41 <Ashkan> Give the `\c.cy` its own name, like `Z`. Now apply this `Z` to `\ab.aab`. Its `\b.ZZb` now expand `Z`
22:27:05 <Ashkan> okay
22:27:16 <Ashkan> now we have `(\c.cy)(\c.cy)b`
22:27:24 <mayanhavoc> Correct
22:28:04 <Ashkan> again we are in the same situation as before , with the associatively :
22:28:04 <Ashkan> `((\c.cy)(\c.cy))b`
22:28:15 × thegeekinside quits (~thegeekin@189.141.115.134) (Ping timeout: 255 seconds)
22:28:31 <Ashkan> so first do the `(\c.cy)(\c.cy)`
22:29:45 <Ashkan> rename to avoid confusion : `(\a.ay)(\b.by)` --> `(\b.by)y` --> `yy`
22:30:03 × euandreh quits (~Thunderbi@189.6.18.7) (Quit: euandreh)
22:32:39 <EvanR> I'm a number not a name
22:32:55 <mayanhavoc> Just a sec, I'm trying to figure this out
22:33:13 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
22:33:15 <int-e> EvanR: you'll love de Bruijn indices then
22:33:32 <EvanR> (1 y)(1 y) => (1 y) y
22:33:45 <int-e> EvanR: you still need the lambdas though
22:33:55 <EvanR> nah it's obvious xD
22:34:01 <int-e> \\1 is different from \1
22:34:12 <EvanR> fine
22:34:20 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
22:35:23 <mayanhavoc> Ok, so IIUC... (\a.ay) and (\b.by) are identity functions, so applying (\b.by) to (\a.ay) gives you \b.by. Right?
22:35:57 <EvanR> (\a . a y) x = x y which is not x necessarily
22:36:03 <Ashkan> Err identity function is `\x.x`
22:36:23 <Ashkan> '\x.xy` is most definitely not identity
22:36:57 <EvanR> id x = x
22:37:10 <EvanR> what x = what
22:37:22 <int-e> It makes no real difference here, but "applying (\b.by) to (\a.ay)" means (\b.by)(\a.ay)
22:37:35 <Ashkan> For example apply `1` to `\a.ay` , its `1y` which is *not* the same as `1`
22:38:03 <int-e> (You apply a function to its argument.)
22:38:09 <EvanR> apply x to y = apply y to x? xD
22:38:36 <EvanR> that'd be quite an equivocation
22:38:39 <int-e> EvanR: Maybe if it applies to oranges. (Does that pun work?)
22:39:02 <Ashkan> Yes my wording was confusing. Apply `\a.ay` to `1`
22:39:59 <Ashkan> Anywasy, `(\a.ay)(\b.by)` means "replace  `a` with `\b.by`"
22:40:11 <int-e> (in `ay`)
22:40:28 <Ashkan> in `ay` , yes:)
22:40:59 <mayanhavoc> Ok... so what confuses me here is why is (\a.ay)(\b.by) not (\b(\b.by))y?
22:41:12 × michalz quits (~michalz@185.246.207.203) (Remote host closed the connection)
22:41:27 <int-e> (\x.M[x])N -> M[N] -- usually with the restriction that no free variables of N are bound in M, though there are weaker versions.
22:41:38 <int-e> mayanhavoc: the lambda is "consumed" by the beta step.
22:42:04 <int-e> Actually
22:42:18 <int-e> mayanhavoc: I should ask where the first \b in the result comes from.
22:42:26 <Ashkan> first `\b.\b. anything` would be wrong since two arguments are named the same. Can'y have different bound variables with the same nme
22:42:50 <mayanhavoc> int-e How do you mean? I thought by replacing (\b.by) for the 'a' in (\a.ay), you get rid of the `\a`? No?
22:43:02 <Ashkan> You did
22:43:17 <mayanhavoc> Ashkan So, how do you replace \b.by in \a.ay?
22:43:31 <int-e> mayanhavoc: Yes, the first \a disappears; the replacement only happens in the body of the abstraction, `ay`.
22:43:41 <Ashkan> you got rid of *both* the `\a.` part (the abstraction) and the `a`s in the body
22:43:58 <mayanhavoc> OHHHHHH
22:44:22 <int-e> So you replace `a` in `ay` by `(\b.by)`, resulting in (\b.by)y. Which allows *another* beta step.
22:44:57 <Ashkan> when you call `f(x) = x + 1` like `f(2)` you are removing *both* the `f(x) =` and `x` in `x + 1` by replacing it with `2`
22:45:28 <mayanhavoc> Yes, I understand. Sorry, I have a hard time with abstraction
22:45:38 <Ashkan> so `f(2) = 2 + 1` , no more arguments
22:45:56 <int-e> Ashkan: Hmm, I don't think I've ever seen anyone forbid `\a.\a.ab` (the a in `ab` would simply refer to the inner lambda)
22:46:46 thegeekinside joins (~thegeekin@189.141.115.134)
22:46:57 <int-e> Though, of course, I wouldn't go out of my way to write terms like this when explaining how the lambda-calculus works.
22:47:11 <Ashkan> int-e in your example its clear they are different variables
22:47:30 <Ashkan> `\a.\a.aa`
22:47:38 <EvanR> first a is shadowed in \a.\a.aa
22:48:05 <int-e> \a.\a.aa means \a.(\a.aa) by convention (lambdas extend as far to the right as possible)
22:48:39 <int-e> so both those bound `a`s are tied to the inner lambda. \a.(\a.a)a would be different.
22:48:40 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
22:48:42 Bocaneri joins (~sauvin@user/Sauvin)
22:49:03 <Ashkan> EvanR that's one way to disambiguate it but to my knowledge lambda calculus itself doesn't have shadowing. That's something programming languages have. I might be wrong though ! don't wanna get into academics on this
22:49:05 Bocaneri is now known as Guest6875
22:49:33 <EvanR> it's not like were going to discover a cosmic truth here, it's all made up
22:49:35 <int-e> anyway, this is a tangent, it has nothing to do with reducing (\a.ay)(\b.by).
22:49:48 <Ashkan> yeah
22:50:27 <Ashkan> mayanhavoc left the class room:D
22:51:19 <mayanhavoc> No, no, I'm still here
22:51:22 × Sauvin quits (~sauvin@user/Sauvin) (Ping timeout: 265 seconds)
22:51:46 Sauvin joins (~sauvin@user/Sauvin)
22:52:28 <Ashkan> I have to go deal with own problem, leave you to the very capable hands of people here. Just don't let them trick you into converting to De Bruijn indices:D
22:52:52 <int-e> b-but... numbers!
22:53:09 <mayanhavoc> Ashkan thank you very much, I really appreciate your help
22:53:18 <Ashkan> I would say first make sure you have a firm grasp of the *abstraction*
22:53:20 <int-e> (No, you first have to experience the pain of alpha-renamings before de Bruijn indices have any hope of making sense.)
22:53:31 × Guest6875 quits (~sauvin@user/Sauvin) (Ping timeout: 240 seconds)
22:54:20 <int-e> And really, de Bruijn indices are for computers.
22:54:24 <Ashkan> mayanhavoc I have a lot of debt to give back. You are most welcome. Welcome to the tribe by the way. You literally picked the longest, most boring book on Haskell:D
22:54:25 <EvanR> to reduce (\a.whatever) e, the answer is whatever with all free a replaced with e (perhaps after renaming inappropriately interfering variables)
22:54:29 <EvanR> simple
22:55:14 × cheater quits (~Username@user/cheater) (Ping timeout: 265 seconds)
22:55:18 <mayanhavoc> Ashkan Hahahaha Thank you for the welcome! I am honestly happily suffering through it
22:55:21 <EvanR> one day they will make a computer chip that can do this operation more efficiently
22:55:50 <int-e> hahaha
22:56:03 <mayanhavoc> EvanR wait... isn't a bound in this example?
22:56:26 <int-e> mayanhavoc: what's bound in \a.M may be free in M.
22:56:30 <EvanR> it is bound in (\a.whatever) but in whatever by itself those a are not bound anymore
22:56:46 lagash joins (lagash@lagash.shelltalk.net)
22:56:56 <int-e> `a` is bound in `\a.a` but is free in `a`.
22:57:00 <Ashkan> mayanhavoc Also keep in mind some of the examples are intentionally contrived. More so due that twisted sense of "this is important !" which is characteristic of academic people. Its not like you gotta deal with such absurdities in your real world Haskell
22:57:54 <int-e> mayanhavoc: consider this: (\a.a(\a.a))y -> y(\a.a) ... the innermost `a` is still bound in a(\a.a), so it's not replaced.
22:57:57 <EvanR> substituting arguments where the bound variables are is a great way to understand haskell code
22:58:10 <EvanR> thanks to purity
22:58:19 <mayanhavoc> Hahahaha I really, really hope so! I'm really trying to practice and understand what I'm doing in the hopes that my mind will get used to all this abstraction
22:58:55 <EvanR> substitution is pretty simple and intuitive on the face of it. And then it ends up being complicated if you define it precisely
22:59:21 <mayanhavoc> int-e oh man... i'm going to need a second for that one
22:59:59 <int-e> mayanhavoc: You'll probably need days to weeks to really become used to this. I know I did.
23:00:26 <mayanhavoc> int-e that's really good to hear, I'm literally sweating over here trying to not get lost
23:00:44 <EvanR> to understand the binding structure of (\a.a(\a.a)) you could write it down with colored pencils, write all the a bound by the same lambda in one color
23:01:03 <EvanR> enable IRC colors for the channel!
23:01:11 <int-e> eww
23:01:14 <EvanR> lol
23:01:23 <int-e> (it's okay, I just won't see them)
23:01:36 <mayanhavoc> EvanR thank you! That's a great idea!
23:02:03 accord joins (uid568320@id-568320.hampstead.irccloud.com)
23:02:22 <int-e> you can do alpha-renaming instead too; (\a.a(\a.a)) is alpha-equivalent to (\a.a(\b.b))
23:02:37 <EvanR> (\red.red(\blue.blue))
23:02:55 <int-e> one lambda, two lambdas, red lambda, blue lambda.
23:04:03 × Ashkan quits (~Ashkan@a119011.upc-a.chello.nl) (Quit: Client closed)
23:04:26 <mayanhavoc> so (\red.red(\blue.blue)) \blue(\blue.blue) right?
23:05:00 <int-e> not sure what that means
23:05:17 <int-e> if those are two separate terms, they're not equivalent
23:05:18 <EvanR> having \blue(\blue.blue) kind of defeats the purpose
23:05:29 <EvanR> should be different colors
23:07:24 <EvanR> and while you do that color game, write free variables in normal pencil to indicate there's no lambda for it
23:08:02 irrgit__ joins (~irrgit@176.113.74.74)
23:08:25 × hugo- quits (znc@verdigris.lysator.liu.se) (Ping timeout: 260 seconds)
23:08:26 × puke quits (~puke@user/puke) (Read error: Connection reset by peer)
23:09:56 <mayanhavoc> Ok... I'm going to go try practice this, see if I can make it make sense. Thank you so much for the help!!
23:10:11 <int-e> EvanR: there are many shades of blue
23:10:41 mayanhavoc parts (~mayanhavo@2607:fb90:b126:4244:a919:fd57:240f:2c7) ()
23:10:53 mayanhavoc joins (~mayanhavo@2607:fb90:b126:4244:a919:fd57:240f:2c7)
23:11:00 × irrgit_ quits (~irrgit@86.106.90.226) (Ping timeout: 255 seconds)
23:11:02 × mayanhavoc quits (~mayanhavo@2607:fb90:b126:4244:a919:fd57:240f:2c7) (Quit: Client closed)
23:11:33 Ashkan joins (~Ashkan@a119011.upc-a.chello.nl)
23:11:56 <EvanR> https://i.imgur.com/9VXbiUS.png drat too late
23:18:00 mayanhavoc joins (~mayanhavo@2607:fb90:b126:4244:a919:fd57:240f:2c7)
23:18:40 × mayanhavoc quits (~mayanhavo@2607:fb90:b126:4244:a919:fd57:240f:2c7) (Client Quit)
23:19:25 hugo joins (znc@verdigris.lysator.liu.se)
23:20:19 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
23:20:41 <int-e> EvanR: https://int-e.eu/~bf3/tmp/blue.png
23:22:30 <EvanR> that's why you can store infinite information in the spin of an electron. a*up + b*down where a (or b) are reals (complex)
23:23:02 <EvanR> keep subdividing until you have enough megabits
23:23:13 <int-e> That's just fairies dancing on a pin.
23:23:46 × Techcable quits (~Techcable@user/Techcable) (Ping timeout: 276 seconds)
23:23:58 lagash joins (lagash@lagash.shelltalk.net)
23:24:44 <EvanR> something something James Burke Connections about the smallest noticable difference
23:25:14 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
23:33:10 Techcable joins (~Techcable@user/Techcable)
23:40:22 ioldoortdddddotm joins (~ioldoortd@c-24-30-76-89.hsd1.ga.comcast.net)
23:43:14 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:43:50 × sp00kins quits (~sp00kins@97.sub-174-216-176.myvzw.com) (Quit: sp00kins)
23:47:09 × Albina_Pavlovna quits (~Albina_Pa@2603-7000-76f0-76e0-7893-ded3-4e0c-2135.res6.spectrum.com) (Quit: ZZZzzz…)
23:47:26 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
23:48:00 Albina_Pavlovna joins (~Albina_Pa@2603-7000-76f0-76e0-7893-ded3-4e0c-2135.res6.spectrum.com)
23:49:37 sp00kins joins (~sp00kins@97.sub-174-216-176.myvzw.com)
23:50:38 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
23:50:38 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
23:50:38 wroathe joins (~wroathe@user/wroathe)
23:50:49 lagash joins (lagash@lagash.shelltalk.net)
23:52:01 × acidjnk quits (~acidjnk@p200300d6e715c457c536ba982fab447f.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
23:52:16 nate4 joins (~nate@98.45.169.16)
23:56:43 × sp00kins quits (~sp00kins@97.sub-174-216-176.myvzw.com) (Quit: sp00kins)
23:56:54 × mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 255 seconds)
23:57:34 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 276 seconds)

All times are in UTC on 2023-03-24.