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.