Home liberachat/#haskell: Logs Calendar

Logs on 2025-04-29 (liberachat/#haskell)

00:00:01 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
00:05:09 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
00:05:21 × gadot quits (Angelz@user/angelz) (Ping timeout: 268 seconds)
00:07:34 mange joins (~user@user/mange)
00:10:18 xff0x joins (~xff0x@2409:251:9040:2c00:42ff:c32a:d7a0:a5f4)
00:10:28 × msa quits (msa@msa.planetofnix.com) (Read error: Connection reset by peer)
00:15:47 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
00:18:59 msa joins (msa@msa.planetofnix.com)
00:21:07 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
00:31:37 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
00:31:54 × hgolden quits (~hgolden@2603:8000:9d00:3ed1:88e0:76ff:fe9c:b21e) (Remote host closed the connection)
00:32:23 × califax quits (~califax@user/califx) (Remote host closed the connection)
00:33:53 califax joins (~califax@user/califx)
00:34:34 hgolden joins (~hgolden@2603:8000:9d00:3ed1:88e0:76ff:fe9c:b21e)
00:36:33 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
00:41:16 × otto_s quits (~user@p4ff27ad7.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
00:42:22 otto_s joins (~user@p5de2faf5.dip0.t-ipconnect.de)
00:43:40 Angelz joins (Angelz@angelz.oddprotocol.org)
00:47:24 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
00:51:08 × machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 252 seconds)
00:54:03 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
00:54:36 × juri_ quits (~juri@implicitcad.org) (Ping timeout: 265 seconds)
00:56:05 juri_ joins (~juri@implicitcad.org)
00:57:28 × gorignak quits (~gorignak@user/gorignak) (Quit: quit)
00:57:45 gorignak joins (~gorignak@user/gorignak)
00:57:50 × euleritian quits (~euleritia@dynamic-176-006-135-001.176.6.pool.telefonica.de) (Remote host closed the connection)
00:58:42 euleritian joins (~euleritia@dynamic-176-006-135-001.176.6.pool.telefonica.de)
00:59:36 × euleritian quits (~euleritia@dynamic-176-006-135-001.176.6.pool.telefonica.de) (Remote host closed the connection)
01:00:26 euleritian joins (~euleritia@dynamic-176-006-135-001.176.6.pool.telefonica.de)
01:00:27 × euleritian quits (~euleritia@dynamic-176-006-135-001.176.6.pool.telefonica.de) (Remote host closed the connection)
01:05:27 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
01:05:52 × notdabs quits (~Owner@2600:1700:69cf:9000:79ef:6a68:163c:c553) (Quit: Leaving)
01:07:05 <EvanR> haskell is usually taken as using lazy evaluation while e.g. javascript is eager evaluation. If you were to specify "evaluation strategy is not specified", would that force you to write like haskell, or like javascript, or neither, if you didn't care about side effects, exceptions, and performance
01:08:22 <EvanR> (haskell isn't specified to be lazy, though I'm not sure how relevant it is to this)
01:10:31 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
01:11:46 <c_wraith> Haskell isn't specified to be lazy, but it is specified to terminate if any evaluation order will do so. It's hard to get that behavior without default laziness
01:12:29 × gorignak quits (~gorignak@user/gorignak) (Ping timeout: 265 seconds)
01:13:18 <monochrom> If evaluation isn't specified, then I would need strictness to be specified. The Haskell Report specifies non-strict.
01:15:30 <EvanR> if neither are specified?
01:18:34 <EvanR> in some sense lazy evaluation subsumes eager evaluation, so does it mean with no other information you would default to eager?
01:18:47 <monochrom> If unspecified, then I cannot assume for example const () bottom = (), so pessimistically I will have to write like, well, I don't want to get js involved, but I can work with SML or Racket.
01:19:00 <monochrom> Yeah, that.
01:21:11 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
01:21:27 <EvanR> that sucks!
01:22:52 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
01:23:46 gorignak joins (~gorignak@user/gorignak)
01:24:56 <monochrom> But I haven't really needed to resort to that. Most languages are sufficiently specified or at least suffciently de-facto'ed.
01:25:32 <EvanR> they are, though I was wondering to what extent that was necessary
01:25:58 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
01:26:58 <EvanR> predicting performance aside, the main issue is going into an infinite loop because of insufficient laziness
01:27:01 weary-traveler joins (~user@user/user363627)
01:30:22 <EvanR> which is where haskell's guarantee comes in
01:30:43 sayurc joins (~sayurc@169.150.203.34)
01:32:12 × gorignak quits (~gorignak@user/gorignak) (Ping timeout: 252 seconds)
01:36:59 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
01:41:35 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
01:52:47 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
01:56:14 × xff0x quits (~xff0x@2409:251:9040:2c00:42ff:c32a:d7a0:a5f4) (Ping timeout: 245 seconds)
01:56:58 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 268 seconds)
01:58:05 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
02:00:13 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
02:08:33 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
02:13:38 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
02:16:39 tavare joins (~tavare@150.129.88.189)
02:16:40 × tavare quits (~tavare@150.129.88.189) (Changing host)
02:16:40 tavare joins (~tavare@user/tavare)
02:17:19 × tavare quits (~tavare@user/tavare) (Remote host closed the connection)
02:20:14 × td_ quits (~td@i53870908.versanet.de) (Ping timeout: 252 seconds)
02:21:59 td_ joins (~td@i53870912.versanet.de)
02:24:22 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
02:25:20 Typedfern joins (~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net)
02:30:53 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
02:31:35 Sgeo_ joins (~Sgeo@user/sgeo)
02:34:10 × Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 252 seconds)
02:38:09 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 260 seconds)
02:39:50 prdak joins (~Thunderbi@user/prdak)
02:41:56 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
02:44:04 × prdak quits (~Thunderbi@user/prdak) (Ping timeout: 252 seconds)
02:46:01 Feuermagier joins (~Feuermagi@user/feuermagier)
02:46:09 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
02:46:41 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
02:57:41 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
02:58:32 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
02:59:18 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
03:02:41 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
03:13:29 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
03:18:13 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
03:28:26 × Square2 quits (~Square4@user/square) (Ping timeout: 252 seconds)
03:28:57 × j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
03:29:16 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
03:35:22 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
03:35:43 j1n37 joins (~j1n37@user/j1n37)
03:35:59 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
03:36:34 × j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
03:40:18 j1n37 joins (~j1n37@user/j1n37)
03:41:55 × j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
03:45:40 j1n37 joins (~j1n37@user/j1n37)
03:46:42 × j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
03:47:19 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
03:48:05 michalz joins (~michalz@185.246.207.205)
03:51:20 j1n37 joins (~j1n37@user/j1n37)
03:52:28 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
04:03:08 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
04:04:39 OftenFaded joins (~OftenFade@user/tisktisk)
04:04:41 fp joins (~Thunderbi@87-94-239-173.bb.dnainternet.fi)
04:10:42 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
04:15:04 × Fijxu quits (~Fijxu@user/fijxu) (Quit: XD!!)
04:17:41 Digitteknohippie joins (~user@user/digit)
04:17:54 Fijxu joins (~Fijxu@user/fijxu)
04:18:40 × Digit quits (~user@user/digit) (Ping timeout: 260 seconds)
04:21:01 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
04:21:23 × Fijxu quits (~Fijxu@user/fijxu) (Quit: XD!!)
04:22:19 × gabiruh_ quits (~gabiruh@vps19177.publiccloud.com.br) (Ping timeout: 252 seconds)
04:26:04 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
04:27:25 × OftenFaded quits (~OftenFade@user/tisktisk) (Quit: Client closed)
04:30:06 gabiruh joins (~gabiruh@vps19177.publiccloud.com.br)
04:31:05 j1n37- joins (~j1n37@user/j1n37)
04:32:14 Fijxu joins (~Fijxu@user/fijxu)
04:32:14 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 272 seconds)
04:36:48 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
04:42:25 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
04:47:51 × zlqrvx quits (~zlqrvx@2001:8003:8c8b:e00:374a:bdcb:457c:d1e3) (Read error: Connection reset by peer)
04:48:22 zlqrvx joins (~zlqrvx@101.175.150.247)
04:50:13 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
04:52:36 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
04:53:19 Digitteknohippie is now known as Digit
04:57:21 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
05:01:27 elnegro joins (elnegro@r186-50-156-231.dialup.adsl.anteldata.net.uy)
05:05:54 × j1n37- quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
05:08:23 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
05:08:59 j1n37 joins (~j1n37@user/j1n37)
05:10:42 elnegro parts (elnegro@r186-50-156-231.dialup.adsl.anteldata.net.uy) ()
05:15:30 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
05:22:14 × j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
05:22:33 takuan joins (~takuan@d8D86B601.access.telenet.be)
05:23:22 × werneta quits (~werneta@syn-071-083-160-242.res.spectrum.com) (Ping timeout: 276 seconds)
05:25:46 × fp quits (~Thunderbi@87-94-239-173.bb.dnainternet.fi) (Ping timeout: 252 seconds)
05:25:52 j1n37 joins (~j1n37@user/j1n37)
05:26:27 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
05:27:40 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
05:29:16 × j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
05:31:10 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
05:32:19 j1n37 joins (~j1n37@user/j1n37)
05:34:27 akegalj joins (~akegalj@83-131-244-60.adsl.net.t-com.hr)
05:41:48 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
05:47:01 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
05:52:10 acidjnk_new joins (~acidjnk@p200300d6e71c4f61394430d048071491.dip0.t-ipconnect.de)
05:55:48 × Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
05:57:36 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
06:00:31 × dutchie quits (~dutchie@user/dutchie) (Remote host closed the connection)
06:01:41 mikess joins (~sam@user/mikess)
06:02:22 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
06:06:17 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
06:10:14 × euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.)
06:10:29 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
06:11:29 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
06:16:21 euphores joins (~SASL_euph@user/euphores)
06:22:52 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
06:24:00 × haritz quits (~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
06:27:39 fp joins (~Thunderbi@2001:708:20:1406::1370)
06:27:43 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
06:28:22 × acidjnk_new quits (~acidjnk@p200300d6e71c4f61394430d048071491.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
06:38:16 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
06:42:54 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
06:45:47 acidjnk_new joins (~acidjnk@p54ad5829.dip0.t-ipconnect.de)
06:54:02 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
06:56:14 × tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
07:00:04 × akegalj quits (~akegalj@83-131-244-60.adsl.net.t-com.hr) (Ping timeout: 260 seconds)
07:00:05 × caconym7 quits (~caconym@user/caconym) (Quit: bye)
07:00:43 caconym7 joins (~caconym@user/caconym)
07:01:14 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
07:05:27 dutchie joins (~dutchie@user/dutchie)
07:07:14 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
07:12:06 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
07:12:25 akegalj joins (~akegalj@144-188.dsl.iskon.hr)
07:18:25 × akegalj quits (~akegalj@144-188.dsl.iskon.hr) (Ping timeout: 276 seconds)
07:20:58 ljdarj joins (~Thunderbi@user/ljdarj)
07:21:47 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
07:22:36 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds)
07:23:08 Lord_of_Life_ is now known as Lord_of_Life
07:30:04 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
07:30:30 dutchie_ joins (~dutchie@user/dutchie)
07:32:48 × dutchie quits (~dutchie@user/dutchie) (Killed (NickServ (GHOST command used by dutchie_)))
07:32:51 dutchie_ is now known as dutchie
07:33:38 j1n37- joins (~j1n37@user/j1n37)
07:34:39 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 272 seconds)
07:43:29 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer)
07:43:46 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 276 seconds)
07:48:15 mari-estel joins (~mari-este@user/mari-estel)
07:51:44 Guest17 joins (~Guest17@2a01:4b00:84f0:ef00:382c:2ec8:780c:c40)
07:52:02 × Guest17 quits (~Guest17@2a01:4b00:84f0:ef00:382c:2ec8:780c:c40) (Client Quit)
07:52:09 gmg joins (~user@user/gehmehgeh)
07:55:37 × aku quits (aku@65.108.245.241) (Quit: Lost terminal)
07:56:22 Guest17 joins (~Guest17@2a01:4b00:84f0:ef00:382c:2ec8:780c:c40)
07:56:46 aku joins (aku@65.108.245.241)
07:57:03 × Guest17 quits (~Guest17@2a01:4b00:84f0:ef00:382c:2ec8:780c:c40) (Client Quit)
07:58:54 merijn joins (~merijn@77.242.116.146)
08:02:54 nernst joins (~nernst@188.214.9.73)
08:04:20 ljdarj joins (~Thunderbi@user/ljdarj)
08:07:14 machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net)
08:14:11 akegalj joins (~akegalj@95.168.121.7)
08:19:36 __monty__ joins (~toonn@user/toonn)
08:21:50 × ft quits (~ft@p4fc2a6e6.dip0.t-ipconnect.de) (Quit: leaving)
08:27:33 × mikess quits (~sam@user/mikess) (Ping timeout: 252 seconds)
08:32:36 xff0x joins (~xff0x@2409:251:9040:2c00:cf62:b619:dd0:f1a5)
08:37:22 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
08:38:22 × xff0x quits (~xff0x@2409:251:9040:2c00:cf62:b619:dd0:f1a5) (Ping timeout: 276 seconds)
08:39:01 × fp quits (~Thunderbi@2001:708:20:1406::1370) (Ping timeout: 276 seconds)
08:44:06 fp joins (~Thunderbi@wireless-86-50-140-117.open.aalto.fi)
08:51:14 Googulator71 joins (~Googulato@94-21-139-144.pool.digikabel.hu)
08:54:06 × Googulator47 quits (~Googulato@2a01-036d-0106-093f-1dc7-297e-fae3-e794.pool6.digikabel.hu) (Ping timeout: 240 seconds)
09:01:00 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds)
09:03:16 j1n37 joins (~j1n37@user/j1n37)
09:03:44 × j1n37- quits (~j1n37@user/j1n37) (Ping timeout: 265 seconds)
09:06:49 dhil joins (~dhil@5.151.29.137)
09:19:58 × dhil quits (~dhil@5.151.29.137) (Ping timeout: 276 seconds)
09:23:56 chele joins (~chele@user/chele)
09:32:36 dhil joins (~dhil@openvpn-125-1069.inf.ed.ac.uk)
09:37:58 × dhil quits (~dhil@openvpn-125-1069.inf.ed.ac.uk) (Ping timeout: 252 seconds)
09:40:17 amadaluzia joins (~amadaluzi@user/amadaluzia)
09:43:44 kindlyremote79 joins (~ernie@188-115-167-65.broadband.tenet.odessa.ua)
09:47:51 kindlyremote79 parts (~ernie@188-115-167-65.broadband.tenet.odessa.ua) ()
09:50:20 dhil joins (~dhil@5.151.29.139)
09:55:08 j1n37- joins (~j1n37@user/j1n37)
09:55:39 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 260 seconds)
09:58:09 wootehfoot joins (~wootehfoo@user/wootehfoot)
10:01:04 × califax quits (~califax@user/califx) (Remote host closed the connection)
10:02:34 califax joins (~califax@user/califx)
10:11:04 xff0x joins (~xff0x@2409:251:9040:2c00:709f:303f:f5cb:a092)
10:18:05 × fp quits (~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Quit: fp)
10:18:14 fp2 joins (~Thunderbi@wireless-86-50-140-117.open.aalto.fi)
10:20:40 fp2 is now known as fp
10:21:12 × talismanick quits (~user@2601:644:937c:ed10::ae5) (Ping timeout: 272 seconds)
10:23:37 tromp joins (~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4)
10:38:55 wlhn joins (~wlhn@130.41.101.92)
10:39:17 × xff0x quits (~xff0x@2409:251:9040:2c00:709f:303f:f5cb:a092) (Ping timeout: 268 seconds)
10:39:48 ljdarj joins (~Thunderbi@user/ljdarj)
10:45:07 × fp quits (~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 276 seconds)
10:49:10 × nernst quits (~nernst@188.214.9.73) (Read error: Connection reset by peer)
10:49:26 <haskellbridge> <Liamzee> the Maybe type is a horrible mistake
10:49:34 nernst joins (~nernst@188.214.9.73)
10:49:55 <haskellbridge> <Liamzee> or more correctly, Stream s => Maybe s
10:50:40 × akegalj quits (~akegalj@95.168.121.7) (Read error: Connection reset by peer)
10:51:02 <haskellbridge> <Liamzee> See, I'm hand-building a parser from Text.Strict.Text to Maybe ByteString.Strict on the assumption that the input data is chars between '0' and 'f' inclusive
10:51:56 <haskellbridge> <Liamzee> and, the number of chars is even
10:51:58 <haskellbridge> <Liamzee> if these conditions aren't met, it'll return a Nothing
10:52:04 <haskellbridge> <Liamzee> HOWEVER, it breaks composition, doesn't it?
10:52:26 <haskellbridge> <Liamzee> because either the function composition or the <$> operator will be checking for the Nothing type, causing the entire stream to be actualized
10:52:32 <haskellbridge> <Liamzee> erm, Nothing value
10:52:39 <haskellbridge> <Liamzee> any ideas?
10:53:31 <haskellbridge> <Liamzee> The problem is that I'm depending on ByteString.Strict.pack, so I'm out of luck; it's breaking function composition, otherwise I could do it with a foldr
10:56:52 Digitteknohippie joins (~user@user/digit)
10:58:15 × Digit quits (~user@user/digit) (Ping timeout: 260 seconds)
10:59:55 mari72280 joins (~mari-este@user/mari-estel)
11:00:05 × nernst quits (~nernst@188.214.9.73) (Read error: Connection reset by peer)
11:00:59 × mari-estel quits (~mari-este@user/mari-estel) (Read error: Connection reset by peer)
11:01:47 <tomsmeding> Liamzee: yes, producing a 'Maybe a' means that you have to tell whether you will return _anything_ before you get to return something
11:02:08 <tomsmeding> in return, a consumer gets to know whether there is info here before starting to process said info
11:02:41 <tomsmeding> a stream type that can raise an error later during processing allows a producer to start producing data already before it knows whether the whole process will be successful
11:02:49 <haskellbridge> <Liamzee> is there a way around it? I'm working with Hasql and I'm trying to replicate its explicit exception philosophy
11:03:04 <tomsmeding> in return, a consumer is forced to already start consuming data before knowing whether there is even supposed to be data in the first place
11:03:06 <haskellbridge> <Liamzee> i'm also learning "hey, force / ! on inputs when you're going into IO is a good idea!"
11:03:19 <tomsmeding> neither is always better than the other
11:03:39 <haskellbridge> <Liamzee> i mean the target is a strict bytestring
11:03:48 <haskellbridge> <Liamzee> so it's known that the data will be extant on use
11:03:56 <haskellbridge> <Liamzee> source: strict text, target, strict bytestring
11:04:03 <tomsmeding> "target" of the producer or the consumer?
11:04:14 <haskellbridge> <Liamzee> also, Bytestring.pack points to packBytes, which on strict uses List.length
11:04:15 haskellbridge Liamzee giggles
11:04:33 <tomsmeding> there's little else it can do, is there?
11:04:51 <haskellbridge> <Liamzee> the output of the strict bytestring
11:05:28 <tomsmeding> so you want to transform a strict text to a strict bytestring, and be able to bail out halfway through if it turns out the Text wasn't valid somehow?
11:05:44 <haskellbridge> <Liamzee> https://paste.tomsmeding.com/mFWq0v2a
11:05:46 <haskellbridge> <Liamzee> yeah
11:05:49 <tomsmeding> without having to check the whole Text before starting to write the ByteString
11:06:03 <haskellbridge> <Liamzee> also the massive if is because i'm not going to import data.map for this
11:06:59 fp joins (~Thunderbi@wireless-86-50-140-117.open.aalto.fi)
11:07:01 <tomsmeding> uh, what about `\c -> if '0' <= c && c <= '9' then ord c - ord '0' else 10 + ord c - ord 'a'`?
11:07:02 <haskellbridge> <loonycyborg> wouldn't it stop processing automatically once it determines that input is invalid?
11:07:09 <tomsmeding> less code, clearer, and faster
11:08:23 <tomsmeding> Liamzee: for completeness, you can write what I think you want manually using ST: allocate a mutable array in ST, and write stuff into it monadically; if you succeed, freeze the array to a bytestring with some of their unsafe functions, and if not, just bail out and leave the array to be picked up by GC
11:08:29 <haskellbridge> <Liamzee> you're right, the both of you
11:08:37 <tomsmeding> it's not particularly compositional, but it does work
11:08:44 Chai-T-Rex joins (~ChaiTRex@user/chaitrex)
11:09:05 <tomsmeding> streaming libraries probably abstract over this pattern
11:09:06 <haskellbridge> <loonycyborg> or you want to load bytestring itself in chunks?
11:09:44 <tomsmeding> Liamzee: worth noting here is that if you're starting from a strict Text, then you won't stream that -- it's strict, after all
11:09:48 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 264 seconds)
11:09:59 Digitteknohippie is now known as Digit
11:10:07 <haskellbridge> <Liamzee> ?
11:10:21 <tomsmeding> so the only upside of traversing it once (and writing the ByteString along the way) -- as opposed to doing a checking pass and then an always-successful writing pass -- is that you don't read the input twice
11:10:27 <haskellbridge> <Liamzee> If I have a streaming function operating on the strict text, the text is discrete, but the work being done on the text should be streamable
11:10:41 <tomsmeding> there is no such thing as "streaming work"
11:10:50 <tomsmeding> there _is_ such a thing as streaming data
11:11:12 <tomsmeding> or actually, I guess "streaming work" could be a different way to say "loop fusion"
11:11:23 <haskellbridge> <Liamzee> ya
11:11:32 <haskellbridge> <Liamzee> the code is disgusting, but i should go finish the library first
11:11:40 <haskellbridge> <Liamzee> i wonder if anyone would help fix it, but someone already pointed out it's a bad idea
11:11:58 <tomsmeding> but if you're talking about "streaming work", then there should be work to stream -- if you're going from strict text to strict bytestring, then there is no other work to fuse with this
11:12:23 <haskellbridge> <Liamzee> in the sense that the code is obviously doing multiple streams
11:12:32 <tomsmeding> GHC is not going to magically eliminate e.g. the intermediate strict bytestring if you process the bytestring immediately after creating it
11:12:36 <tomsmeding> mostly because it's strict
11:12:49 <haskellbridge> <Liamzee> chunksOfTwo does a full allocation of the list first
11:12:57 <tomsmeding> if you use a _lazy_ bytestring, you can stream the data, and hence laziness will produce in some kind of "work streaming" too
11:13:26 <tomsmeding> oh I see
11:13:33 <tomsmeding> so you already have two passes here
11:14:03 <haskellbridge> <Liamzee> fmap ByteString.pack
11:14:14 <haskellbridge> <Liamzee> so it'd need to know whether the output of the intermediate types is Nothing or Just
11:14:14 <haskellbridge> <Liamzee> which is fine
11:14:27 <tomsmeding> I've never worked with streaming libraries personally, but I would look into prior art here, even if you don't decide to use such a library as-is but build your own thing
11:14:46 <haskellbridge> <Liamzee> thanks for the suggestion
11:15:01 <tomsmeding> the ST thing I described is what you want to happen operationally
11:15:05 <haskellbridge> <Liamzee> the setup is that I'm trying to build something at least 3 people have said is a bad idea, but when has that ever stopped me?
11:15:09 <tomsmeding> everything else is, somehow, an abstraction over that
11:15:16 <haskellbridge> <Liamzee> ya, of course
11:15:17 <tomsmeding> heh
11:15:33 <haskellbridge> <Liamzee> trying to build sane safe defaults for a login library
11:15:47 <tomsmeding> Liamzee: https://github.com/Bodigrim/linear-builder is an interesting bit of prior art perhaps
11:15:50 <haskellbridge> <Liamzee> so, you have functions that call into postgresql for you without needing you to write any code
11:16:12 <tomsmeding> it's not a full streaming library, doesn't model "bailing out"
11:16:17 <haskellbridge> <Liamzee> and let you have a simple way to set up a login / registration system
11:16:21 <haskellbridge> <Liamzee> ah
11:16:29 <tomsmeding> but maybe it gives inspiration
11:16:50 <haskellbridge> <Liamzee> this is just part of my library since I generate a random bytestring (512 bytes) as an authcode for validation
11:17:05 <tomsmeding> re login library: that sounds like a thing that looks good to people who've written 2 crud applications, and is a bad idea to people who've written 10
11:17:11 tomsmeding has written <=2
11:17:48 <tomsmeding> personally I'd separate the application-level logic from the database interaction logic
11:18:02 <tomsmeding> i.e. have your library take user hooks for actually writing to and reading from the database
11:18:06 <haskellbridge> <Liamzee> yeah of course
11:18:06 <shapr> GOOD MORNING HASKELL LAND!
11:18:07 <haskellbridge> <Liamzee> it's just functions
11:18:10 <tomsmeding> that separates it from a particular DB implementation
11:18:12 <haskellbridge> <Liamzee> i spent 2 weeks learning enough
11:18:16 <haskellbridge> <Liamzee> GOOD MORNING SHAPR
11:18:19 <shapr> w00!
11:18:20 <tomsmeding> shapr: hello!
11:18:26 <shapr> Hiya tomsmeding !
11:18:28 <shapr> Hello Liamzee!
11:18:35 <tomsmeding> not morning any more here though :)
11:18:51 <shapr> It's true, morning is a temporary thing
11:18:56 <shapr> It's a beautiful day for code!
11:18:59 <haskellbridge> <Liamzee> I spent 2 weeks learning enough postgreSQL-simple, lucid, and twain to build half a login and authentication system
11:19:01 <tomsmeding> so it is
11:19:14 <tomsmeding> sounds like a fun way to learn these things
11:19:15 <haskellbridge> <Liamzee> time has no meaning for me, there is only the eternal now (and not now)
11:19:26 <shapr> Hm, that does sound familiar
11:19:34 <tomsmeding> "not now" is an important one
11:19:46 <haskellbridge> <Liamzee> so i just want to abstract it so that people need less knowledge in order to slap together a basic Haskell web application
11:19:54 <haskellbridge> <Liamzee> (not now implies death)
11:20:06 <tomsmeding> it doesn't, there are many things I will not do now
11:20:14 <tomsmeding> such as graduate
11:20:23 <shapr> are you on the path towards graduation?
11:20:33 <tomsmeding> <1 year to phd graduation, if everything goes according to plan
11:20:38 <haskellbridge> <Liamzee> welp, not going to get into a complicated philosophy discussion
11:20:39 <shapr> w00t!
11:20:43 <tomsmeding> at least, my contract runs out in <1 year :p
11:20:54 <haskellbridge> <Liamzee> that is to say, our certainty of "now" is greater than our certainty of the past or the future
11:21:01 <shapr> Ah, Utrecht?
11:21:03 tomsmeding has no clue about philosophy
11:21:06 <tomsmeding> yep
11:21:12 <haskellbridge> <Liamzee> we have direct experiential knowledge of what happens now, but what happened before is only something we know from memory
11:21:35 <tomsmeding> (Liamzee saying "not going to do X" before proceeding to do X)
11:21:41 <haskellbridge> <Liamzee> consequently we live in an eternal now, at any time we are alive, we constantly experience the now as privileged toward the past
11:21:47 <shapr> CHAD looks like fun
11:21:48 <haskellbridge> <Liamzee> i do this too often :(
11:21:57 <tomsmeding> hacking on chad right now, actually!
11:22:39 <tomsmeding> debugging the simplifier of my toy language, it does incorrect simplifications sometimes
11:24:01 jacopovalanzano joins (~jacopoval@86.24.252.106)
11:24:27 × jacopovalanzano quits (~jacopoval@86.24.252.106) (Client Quit)
11:24:47 statusbot12 joins (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
11:25:30 × statusbot quits (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Read error: Connection reset by peer)
11:26:45 × rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer)
11:27:17 rvalue joins (~rvalue@user/rvalue)
11:27:49 akegalj joins (~akegalj@144-188.dsl.iskon.hr)
11:28:11 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
11:32:34 × fp quits (~Thunderbi@wireless-86-50-140-117.open.aalto.fi) (Ping timeout: 276 seconds)
11:39:29 × euphores quits (~SASL_euph@user/euphores) (Ping timeout: 248 seconds)
11:46:07 euphores joins (~SASL_euph@user/euphores)
11:46:14 <shapr> @quote
11:46:14 <lambdabot> jonrafkind says: every time you use a list as an ad-hoc datastructure, a kitten dies
11:46:29 <tomsmeding> I'm currently using a list as an ad-hoc data structure
11:46:38 <shapr> they're virtual kittens, it's okay
11:46:48 <tomsmeding> phew
11:52:40 fp joins (~Thunderbi@2001:708:20:1406::1370)
11:52:43 internatetional joins (~nate@2404:c0:2020::118:9ffb)
11:52:55 × tromp quits (~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4) (Quit: My iMac has gone to sleep. ZZZzzz…)
11:53:54 × Typedfern quits (~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net) (Ping timeout: 268 seconds)
11:54:15 <haskellbridge> <Liamzee> some people use kitten emojis as substitutes for the >>= operator. Reducing bind traversals improves performance, so killing 🐱 operators is fine.
11:54:38 haritz joins (~hrtz@152.37.68.178)
11:54:38 × haritz quits (~hrtz@152.37.68.178) (Changing host)
11:54:38 haritz joins (~hrtz@user/haritz)
11:55:29 Typedfern joins (~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net)
11:58:26 internatetional_ joins (~nate@2001:448a:20a3:c2e5:5b6:e1f9:afcb:86c5)
12:02:28 × internatetional quits (~nate@2404:c0:2020::118:9ffb) (Ping timeout: 276 seconds)
12:05:36 <shapr> Is there a good IRC channel where I can ask about denotational semantics?
12:06:29 yin joins (~yin@user/zero)
12:07:23 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:08:07 xff0x joins (~xff0x@2409:251:9040:2c00:f526:bfbc:714e:5dfd)
12:08:35 <tomsmeding> you _might_ try ##dependent or #agda, but no guarantees -- I lurked in ##dependent for a bit because people invited me there and all I got was politics, so I left again
12:09:22 <tomsmeding> math on irc is slightly impractical because only text, no formatting
12:09:30 × mari72280 quits (~mari-este@user/mari-estel) (Ping timeout: 272 seconds)
12:09:37 meritamen joins (~meritamen@user/meritamen)
12:10:38 × meritamen quits (~meritamen@user/meritamen) (Remote host closed the connection)
12:11:10 <shapr> tomsmeding: I just write raw LaTeX and expect the readers to use the rendering engine in their brain.
12:11:23 <tomsmeding> that works for simple stuff, yes
12:11:32 <shapr> Although now I'm tempted to try writing an ERC plugin for LaTeX formatting
12:11:49 <yin> shapr: there are some iirc
12:12:18 <shapr> tomsmeding: do you happen to know roughly what crosses outside of one line raw LaTeX?
12:12:27 <shapr> yin: what do you suggest?
12:12:35 <tomsmeding> as in other communication channels?
12:13:05 <tomsmeding> I'm not sure, I'm not much into math. I know there's a Zulip that's mostly about Lean, but gathers mathematicians in this area broadly, too
12:13:27 <shapr> oh, good idea
12:14:02 <shapr> I dunno if I'm into math, but Haskell convinced me that math has the best abstractions, if only I can learn them.
12:14:09 <shapr> It's been a long process
12:14:14 <tomsmeding> never been there, but given the subject area, I would be highly surprised if they don't have a channel somehow that's just about semantics :P
12:14:23 <tomsmeding> math does have good abstractions sometimes
12:14:32 <tomsmeding> sometimes CS has better ones
12:14:38 <tomsmeding> (for programming, that is)
12:14:42 <yin> shapr: i'm using irssi and kitty terminal. although i don't remember using it, kitty has a latex plugin so that would satisfy my needs
12:14:55 <shapr> tomsmeding: got any in mind that programming does better than math?
12:15:12 <shapr> yin: oh, I'm using kitty, but I've only used the image kitten, I'll try the LaTeX plugin, thanks!
12:15:26 <tomsmeding> well the easy cases center around math, as a whole, not caring about "performance" -- it's not even well-defined what that means in math world
12:15:29 <yin> shapr: no problem
12:15:49 <tomsmeding> anything that involves "ensuring you don't compute a value more than once" is something that CS cares about and math does not
12:16:01 <tomsmeding> we have various abstractions to deal with our petty performance concerns
12:16:03 <shapr> tomsmeding: that's a good point, hm
12:16:43 <shapr> Early in the book I'm reading Joseph Stoy relays that Dana Scott says "we can't have real functions in a computer because computers are so small compared to all the values"
12:16:48 tromp joins (~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4)
12:17:10 <tomsmeding> sometimes math happens to have stuff that's useful for performance too, like Cayley transformation (i.e. "difference lists") or Coyoneda (which I have no clue about, but iirc was a generalisation that can be used to reassociate (>>=) where Cayley reassociates (<>))
12:17:12 <shapr> So I currently lean towards "CS has a smaller view because computers are so tiny right now"
12:17:28 <yin> computers were a mistake and we got too carried away
12:17:42 <shapr> Or maybe "CS *must have* a tiny view" ?
12:17:44 <shapr> Something like that.
12:18:09 <shapr> I'm reading "Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory" with exarkun
12:18:15 <tomsmeding> shapr: I'm thinking, but perhaps laziness is one of those CS-only abstractions?
12:18:30 <shapr> Because I have zero formal math education, it's rough going
12:18:40 <tomsmeding> I can imagine :p
12:18:59 shapr thinks
12:19:01 tomsmeding would probably have the same, just given the title, despite actually having some formal math education
12:19:13 <shapr> Yeah, I could see laziness being unimportant in pure math.
12:19:25 <tomsmeding> now, lots of CS considers laziness a bad idea too
12:19:29 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds)
12:19:33 <tomsmeding> but it definitely has uses, and it's sometimes a really good abstraction
12:19:39 <shapr> I've bounced off several category theory books previously, but this 1976(?) book is working for me.
12:19:44 <tomsmeding> lol
12:19:50 <tomsmeding> that's cool!
12:20:05 <yin> shapr: which book is it?
12:20:11 <shapr> I think partially because it's very concrete.
12:20:19 <shapr> yin: https://www.goodreads.com/book/show/1404132.Denotational_Semantics
12:20:27 <yin> ty
12:21:05 <shapr> Another reason this is working better is that I'm in a reading group, where I get stuck is not where exarkun gets stuck.
12:21:18 <shapr> Mind you, that's why I started this IRC channel, because I was unable to teach myself Haskell
12:21:24 <tomsmeding> hah
12:21:39 <tomsmeding> having someone to bounce ideas off is great, yeah
12:21:43 <tomsmeding> or non-ideas
12:22:10 <shapr> Yeah, early days were Igloo and Heffalump and ski and a few others.
12:22:28 <yin> i wish i thought of that when i was teaching myself haskell
12:22:37 <tomsmeding> it's cool to see that some of those are still around :)
12:22:39 <shapr> yin: you're here now! hurrah!
12:22:59 <shapr> tomsmeding: a decent chunk of the early crowd now have their own PhD students
12:23:03 <shapr> soon it'll be you!
12:23:18 <tomsmeding> maybe :p
12:23:19 <yin> wait, are you talking about *this* channel?
12:23:23 <shapr> yin: yes!
12:23:49 <yin> shapr: oh great! well, thank you then
12:23:51 <tomsmeding> probably a few irc networks earlier, or was it freenode in the beginning already?
12:23:54 jespada joins (~jespada@r167-61-148-73.dialup.adsl.anteldata.net.uy)
12:23:58 <shapr> Mind you, we moved from EFNet to, uh, OPN, and now to Libera
12:24:16 <tomsmeding> EFNet -> OPN -> Freenode -> Libera?
12:24:21 Square2 joins (~Square4@user/square)
12:24:30 <shapr> Right, though OPN got renamed to freenode, so roughly the same thing
12:24:37 <tomsmeding> I only barely know the existence of EFNet from earlier mentions
12:24:39 JuanDaugherty joins (~juan@user/JuanDaugherty)
12:24:39 <tomsmeding> ah
12:24:57 tomsmeding discovered freenode after the rename, apparently
12:24:59 <shapr> yin: this channel was started in the first few months of 2001
12:25:18 <yin> i was around in freenode! i remember ski helping me understand recursive tree traversal
12:25:25 <shapr> yeah! ski is brilliant!
12:25:35 <haskellbridge> <Liamzee> he's also very nice
12:25:37 <shapr> I met them when I lived in Sweden so long ago
12:25:53 <shapr> I've met a good number of the early denizens.
12:25:53 × wlhn quits (~wlhn@130.41.101.92) (Ping timeout: 248 seconds)
12:25:57 <haskellbridge> <Liamzee> also, is it correct to say that IO actions are always inlined, but as actions?
12:26:24 <JuanDaugherty> it was impressive
12:26:43 <shapr> Hello JuanDaugherty !
12:26:45 <JuanDaugherty> the whole hs namespace and its users moved in a matter of hours
12:26:57 <JuanDaugherty> yello shapr
12:27:00 <JuanDaugherty> !
12:27:07 <haskellbridge> <Liamzee> from freenod eto libera or efnet to OPN?
12:27:39 Inst joins (~Inst@user/Inst)
12:27:44 <shapr> The libera shift was the most dramatic, imo
12:28:03 <JuanDaugherty> sounds like what I meant
12:28:22 <JuanDaugherty> i.e. the move of the haskell irc channel namespace from freenode to here
12:28:43 <yin> matrix and discord are going strong too
12:28:52 <JuanDaugherty> which occured in about a half day of the action at freenode
12:29:42 <JuanDaugherty> at the user level there's not a lot to irc
12:30:02 <shapr> Yeah, that's one reason I like the IRC protocol
12:30:06 <JuanDaugherty> but nothing of its size moved like #hs
12:30:14 jacopovalanzano joins (~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net)
12:30:51 <JuanDaugherty> many lang spaces took weeks and igess some are still there
12:31:17 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
12:31:21 <shapr> Haskell is great at allocating space for new values?
12:31:45 <tomsmeding> and then quickly forgetting about those values again
12:31:48 <shapr> I haven't written much Haskell the past months, maybe I'll pick up kudzu again
12:31:55 <shapr> tomsmeding: yeah, garbage collection!
12:31:55 <haskellbridge> <Liamzee> kudzu?
12:32:23 <JuanDaugherty> as a community hs is pretty feckless in the face of the capitalism but there are catalytic situations igess
12:32:24 <shapr> Yeah, I wrote a cheesy property based testing library that figures out how many random values is enough by using code coverage
12:32:38 <shapr> but it needs splitting into library specific pieces
12:33:02 <shapr> The core of kudzu is almost nothing: https://github.com/shapr/kudzu/blob/split-deps/kudzu-core/src/Kudzu/Core.hs
12:33:28 <JuanDaugherty> shapr, u used to be big here
12:33:29 <haskellbridge> <Liamzee> is there a good book or resource to understand the operational function of GHC without learning the GHC compiler source code?
12:33:38 ski glances around nervously
12:33:43 <shapr> The whole idea is "use HPC at runtime to see if there's new code coverage after running a property test"
12:34:05 <shapr> JuanDaugherty: meh, I lost weight. It was healthy.
12:34:10 <shapr> :-D
12:34:15 <JuanDaugherty> :)
12:35:22 <haskellbridge> <Liamzee> hello ski!
12:35:51 <JuanDaugherty> k, ski u was always big, now and forever
12:36:05 <haskellbridge> <Liamzee> it's sort of an idle question on my part, i.e, is it reasonable to understand IO actions (values of form IO a) as being effectively an interpreted eDSL?
12:36:24 <ski> i wasn't on the EFNet version (can't even recall hearing that was originally a thing). i came into the Open Projects Network (OPN) version, back in 2001
12:36:50 <ski> we were around 15 - 20, to begin with ?
12:37:45 <JuanDaugherty> undernet took most of the EGnet mojo, a slightly toned down version with more stuff/services but the two networks make a space
12:37:46 ski still recalls shapr showing off their unicycle, even getting John Hughes to try it out
12:38:15 <JuanDaugherty> *EFnet
12:39:09 <JuanDaugherty> which igess allowed EFnet to stretch its legs as a hellhole
12:39:24 <ski> i found the IRC channel from the HaWiki (which was running MoinMoin. former version of HaskellWiki, now running MediaWiki, iirc); which i found from the Usenet newsgroup <news:comp.lang.functional>
12:39:57 <ski> (i had briefly seen IRC used before, but not gotten into it. #haskell was my first IRC channel)
12:40:02 <JuanDaugherty> i first recall u from the original ##prolog
12:40:27 <JuanDaugherty> u was pl b4 hs
12:40:30 <shapr> hej hopp ski!
12:40:33 mari-estel joins (~mari-este@user/mari-estel)
12:40:39 ski bounces on chair
12:40:51 shapr hops cheerfully
12:40:56 <shapr> ski: I have more unicycles now
12:41:00 <ski> oh ?
12:41:23 <shapr> Yeah, I still have that one, but I bought a newer one three years ago, and I'm in the process of purchasing yet another.
12:41:45 <haskellbridge> <Liamzee> do you have a motorized unicycle?
12:41:46 <shapr> Would love to write more Haskell though
12:42:03 <shapr> Nah, they're all manual. I'm tempted to get in on the next geared hub order.
12:42:11 <ski> yea, after some time, i branched out to ##prolog and #scheme, JuanDaugherty
12:42:27 <ski> i started in #haskell, though
12:42:38 <shapr> This is my primary unicycle: https://recurse.social/@shapr/114155438798005645
12:43:10 <shapr> What's the hot new things in the Haskell world?
12:43:52 <JuanDaugherty> oh didn notice maybe cause i didn start with hs till c. '08 about the time sbcl forked from cmucl
12:44:38 <shapr> ski: maybe my memory is wrong and this channel never was on EFNet?
12:44:46 <shapr> I bet your memory is better than mine.
12:44:52 <ski> (but yes, i got a little taste of Prolog, in a "computer math" course in "high school" (?), after a "C/C++" one, and before later learning Java, Haskell, Prolog (properly), also checking out C more, Scheme, SML, .. before all that, i started with BASIC, at age 6.5 (programmable pocket calculator with 544 bytes of RAM available for BASIC programs), then (BASIC and) 6502 assembly on Commodore 64, a little bit
12:44:56 <haskellbridge> <Liamzee> https://kf8nh.com/_heisenbridge/media/matrix.org/aWRsyGBptPdeFDXjaSNcUiVr/8qPtsH3bWlo/MisoCounteriOS.mp4
12:44:58 <ski> 680x0 assembly on Amiga)
12:45:03 <ski> i'm not sure, shapr
12:45:33 <JuanDaugherty> well maybe in the 90s
12:45:35 <haskellbridge> <Liamzee> ugh, it's not playing
12:45:45 <ski> i recall when clog was logging the channel, and that started on OPN, i think. that doesn't refute it possibly being on EFNet a little while before, though
12:45:48 <JuanDaugherty> (#hs on efnet)
12:45:59 <JuanDaugherty> seems unlikely tho
12:47:06 <ski> looks pretty nice, shapr !
12:47:19 <JuanDaugherty> at some point u get a common ancestor effect since efnet is primordial
12:48:08 <ski> JuanDaugherty : i certainly have had a love for logic programming, a long time, as well, roughly for as long as functional in any case
12:48:23 <JuanDaugherty> i c
12:50:27 <ski> Liamzee : "is it reasonable to understand IO actions (values of form IO a) as being effectively an interpreted eDSL?" -- yes, more or less (although i'd skip the "interpreted", probably)
12:50:40 × koz quits (~koz@121.99.240.58) (Ping timeout: 244 seconds)
12:52:01 <shapr> I gotta split kudzu into test framework specific parts and upload those new libraries.
12:52:07 <yin> shapr: the "new thing in haskell" is probably linear types?
12:52:37 <shapr> I haven't tried that, could be fun.
12:52:38 <haskellbridge> <Liamzee> ski: i mean, zero cost calls to IO actions, low-cost calls to IO functions
12:52:40 <yin> for some definition of "new"
12:52:47 <shapr> I've been writing a bunch of Rust, and those are affine types
12:53:19 koz joins (~koz@121.99.240.58)
12:54:05 <haskellbridge> <Liamzee> since an IO function implies that the function arguments are allocated onto the heap until no longer needed
12:54:18 tolgo joins (~Thunderbi@199.115.144.130)
12:54:37 JuanDaugherty is now known as ColinRobinson
12:55:07 <ski> you can easily make your own `IO'-type as `data IOProgram = End ExitCode | Openfile FilePath IOMode (Handle -> IOProgram) | HGetChar Handle (Char -> IOProgram) | HPutChar Handle Char IOProgram | ...' and `newtype IO a = MkIO ((a -> IOProgram) -> IOProgram)' (iow `Cont IOProgram a'), and interpret that into the usual `IO' with `runIO :: IO a -> System.IO.IO a'
12:57:26 <yin> for some definition of "easily"
13:00:13 <ski> originally, Haskell had "dialogue"-based I/O, where `type Dialogue = [Response] -> [Request]', and `data Request = OpenFile FilePath IOMode | HGetChar Handle | HPutChar Handle Char | ...' with `data Response = FileOpened Handle | HCharGot Char | HCharPut | ...', and then you can write wrappers like `hGetChar :: Handle -> (Char -> Dialogue) -> Dialogue' (iow `Handle -> Cont Dialogue Char') as `hGetChar h k
13:00:19 <ski> ~(HCharGot c:resps) = HGetChar h : k c resps'
13:00:37 <ski> so, here you effectively get `Cont Dialogue' as `IO'
13:01:08 <ski> and you can interpret the former `IO' into this `Cont Dialogue' (instead of into `Cont IOProgram')
13:02:40 <haskellbridge> <Liamzee> ski: i was trying to analogize the IO type to free monads actually
13:03:45 <haskellbridge> <Liamzee> since you actually have runRW# fun #Real World# or something like that, then you call a continuation
13:03:47 <ski> if you prefer, you could use a GADT instead of `IOProgram', like `data IO :: * -> * where Return :: a -> IO a; ExitWith :: ExitCode -> IO a; OpenFile :: FilePath -> IOMode -> IO Handle; HGetChar :: Handle -> IO Char; HPutChar :: Handle -> Char -> IO ()'; ...', and then interpret that as usual. you could have `(>>=) :: IO a -> (a -> IO b) -> IO b' here walk the tree on the left, to graft the continuation
13:03:53 <ski> argument into all leaves, effectively splicing new subtrees in place of the leaves .. or you could instead add a `Bind :: IO a -> (a -> IO b) -> IO b' data constructor
13:05:53 <ski> but the main point here is that you *can* think of `IO' as an "instruction tree", or as being defined in terms of `IOProgram', being an instruction tree. *or* defined in terms of `Request' & `Response', which are used in tandem (with lazy pattern matches, the `~', which is crucial here, and easy to mess up, hence abstracting it away behind CPS operations like `hGetChar')
13:06:12 <ski> and you an possibly conceive of more ways
13:06:22 × tolgo quits (~Thunderbi@199.115.144.130) (Ping timeout: 265 seconds)
13:06:34 <ski> (iirc Hugs didn't use the CPS version, but something a bit different, for `IO')
13:06:37 <haskellbridge> <Liamzee> ehhh, i guess i'm more being operational about it, since my habit right now in Haskell is not to care about function calls etc
13:06:51 <haskellbridge> <Liamzee> treating them as zero or low-cost
13:07:17 <ski> having the primitive `IO' operations be data constructors is the "deep embedded DSL" version
13:07:38 <ski> defining in terms of `Dialogue' is more a shallow embedding
13:07:49 <haskellbridge> <Liamzee> since an interpreter model of how GHC is managing IO actions is treating them like it's zero cost to call an IO action and low cost to call an IO function, in comparison to an imperative language where stack allocation is happening
13:08:10 <ski> you can clearly see the "instructions" of the DSL, in the former. in the latter, your main operations
13:08:27 <ski> are those DSL constructs, but there's no "interpretation" of them, since we don't build a tree of them
13:08:43 <ski> (instead being defined in terms of the more primitive `Request' and `Response')
13:09:01 <ski> yin : you could try it, as an exercise. it's not too hard
13:09:20 <haskellbridge> <Liamzee> it's just a free monad afaik
13:09:24 <ski> it helps to have seen some CPS (Continuation-Passing Style) or `Cont' before, though
13:09:29 <haskellbridge> <Liamzee> erm, iiuc
13:10:31 ljdarj joins (~Thunderbi@user/ljdarj)
13:10:49 × internatetional_ quits (~nate@2001:448a:20a3:c2e5:5b6:e1f9:afcb:86c5) (Ping timeout: 252 seconds)
13:10:58 internatetional joins (~nate@2001:448a:20a3:c2e5:701e:e3ed:2d04:6885)
13:11:13 <ski> "since you actually have runRW# fun #Real World# or something like that, then you call a continuation" -- yea, GHC uses a state-passing internal implementation, which is only valid if the `RealWorld#' is being passed around uniquely (and this still doesn't properly describe exceptions, nor concurrency, nor things like `unsafeInterleaveIO',`unsafePerformIO')
13:12:01 <ski> "i was trying to analogize the IO type to free monads actually" -- yea, the last `IO' version i sketched is basically the free monad version
13:12:33 jespada_ joins (~jespada@r179-25-126-65.dialup.adsl.anteldata.net.uy)
13:12:56 × j1n37- quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
13:13:02 <ski> "in comparison to an imperative language where stack allocation is happening" -- yea, calls don't push stack in Haskell, but *pattern-matching* (`case'-`of', as well as the sugar for that) still does
13:14:00 <ski> yin : note that linear types are not quite the same as affine or unique ones (those two are quite similar, the only difference is whether you're allowed to drop an item on the floor or not)
13:14:40 × jespada quits (~jespada@r167-61-148-73.dialup.adsl.anteldata.net.uy) (Ping timeout: 252 seconds)
13:15:30 <ski> with uniqueness, you're promised that your reference to an item/value have not been duplicated in the *past* (but you could still duplicate in future, unless, say, you have to return it as still being unique). with linearity, you promise to not duplicate it in the *future* (but it could already have been duplicated in the past, before giving up the ability to duplicate)
13:16:02 j1n37 joins (~j1n37@user/j1n37)
13:16:47 <haskellbridge> <Liamzee> that's interesting, i thought Haskell didn't use stack?
13:16:49 <haskellbridge> <Liamzee> welp, no shade intended
13:18:46 × tromp quits (~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:19:49 × mari-estel quits (~mari-este@user/mari-estel) (Ping timeout: 260 seconds)
13:21:00 <ski> not using stack is not the same as not using call stack
13:21:51 internatetional_ joins (~nate@2001:448a:20a3:c2e5:9930:c729:580e:9aa0)
13:24:02 <ski> btw, in Scheme, calling a procedure doesn't push stack, either, but evaluating procedure call arguments (and well as the function expression), and introducing new local variables (e.g. with `let'), or doing branching (like `case',`if',`cond', or e.g. a library pattern-matcher as `match'), does. or, in general, introducing a non-tail context
13:24:59 × internatetional quits (~nate@2001:448a:20a3:c2e5:701e:e3ed:2d04:6885) (Ping timeout: 245 seconds)
13:25:07 <ski> in Haskell, it's basically the same, except that the "evaluating procedure call arguments" part is skipped. a call `f x' will not evaluate `x' (but will still evaluate `f' itself, which could cause stack usage)
13:25:26 internatetional joins (~nate@2001:448a:20a3:c2e5:1ee8:b348:b41a:5570)
13:26:13 × internatetional_ quits (~nate@2001:448a:20a3:c2e5:9930:c729:580e:9aa0) (Ping timeout: 252 seconds)
13:27:27 × mange quits (~user@user/mange) (Quit: Zzz...)
13:27:39 <ski> in Scheme, you have evaluation contexts like `C[] ::= [] | (E ... E C[] E ... E) | (if C[] E E) | (case C[] (P E ... E) ... (P E ... E)) | ..'
13:28:28 <ski> in Haskell, `C[] ::= [] | C[] E ... E | if C[] then E else E | case C[] of P -> E; ... P -> E | ..'
13:29:10 <ski> (yes, `case' in Haskell doesn't directly correspond to `case' in Scheme (which is more like a C `switch'), but rather `match', but that doesn't matter too much here, for the comparision)
13:31:36 mari-estel joins (~mari-este@user/mari-estel)
13:31:55 <ski> Liamzee : anyway, tail calls and tail recursion is still important in Haskell .. but tends to be a bit less important, due to non-strictness (typically implemented using laziness) making it easier to often describe loops as incremental algorithms, only computing the result piece-by-piece, so that the caller will drive looping over this, demanding more result pieces, for as long as it wants to, as opposed to
13:32:01 <ski> a tail-recursive loop, which will always be bulky, not return any part of the result until the whole loop is done
13:33:18 <ski> but you still don't want to build up more and more context, when doing a long-running loop (e.g. with `IO'), if you can avoid it, and in such cases, reasoning about tail calls can be quite important to prevent space leakage (in the Haskell sense)
13:33:49 × ColinRobinson quits (~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
13:33:57 lxsameer joins (~lxsameer@Serene/lxsameer)
13:40:24 × mari-estel quits (~mari-este@user/mari-estel) (Ping timeout: 252 seconds)
13:45:24 mari-estel joins (~mari-este@user/mari-estel)
13:54:55 × fp quits (~Thunderbi@2001:708:20:1406::1370) (Ping timeout: 276 seconds)
14:05:21 × mari-estel quits (~mari-este@user/mari-estel) (Remote host closed the connection)
14:13:12 × Leary quits (~Leary@user/Leary/x-0910699) (Ping timeout: 276 seconds)
14:13:18 × Inst quits (~Inst@user/Inst) (Remote host closed the connection)
14:14:42 Leary joins (~Leary@user/Leary/x-0910699)
14:16:00 × jacopovalanzano quits (~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net) (Quit: Client closed)
14:31:40 tabaqui joins (~tabaqui@167.71.80.236)
14:46:14 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 245 seconds)
14:46:27 notdabs joins (~Owner@2600:1700:69cf:9000:748c:9883:fc80:2b20)
14:46:31 × internatetional quits (~nate@2001:448a:20a3:c2e5:1ee8:b348:b41a:5570) (Ping timeout: 252 seconds)
14:48:56 j1n37 joins (~j1n37@user/j1n37)
14:49:34 × notdabs quits (~Owner@2600:1700:69cf:9000:748c:9883:fc80:2b20) (Client Quit)
14:52:16 × yin quits (~yin@user/zero) (Ping timeout: 252 seconds)
14:57:46 × Googulator71 quits (~Googulato@94-21-139-144.pool.digikabel.hu) (Quit: Client closed)
14:57:55 yin joins (~yin@user/zero)
14:58:04 Googulator71 joins (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu)
15:06:00 × orcus quits (~orcus@mail.brprice.uk) (Quit: ZNC 1.8.2 - https://znc.in)
15:06:00 × dispater quits (~dispater@mail.brprice.uk) (Quit: ZNC 1.8.2 - https://znc.in)
15:09:00 dispater joins (~dispater@mail.brprice.uk)
15:09:30 orcus joins (~orcus@mail.brprice.uk)
15:10:27 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
15:10:43 × dispater quits (~dispater@mail.brprice.uk) (Client Quit)
15:10:44 × orcus quits (~orcus@mail.brprice.uk) (Client Quit)
15:12:33 dispater joins (~dispater@mail.brprice.uk)
15:13:05 orcus joins (~orcus@mail.brprice.uk)
15:14:40 × califax quits (~califax@user/califx) (Remote host closed the connection)
15:16:24 califax joins (~califax@user/califx)
15:20:48 × xff0x quits (~xff0x@2409:251:9040:2c00:f526:bfbc:714e:5dfd) (Ping timeout: 276 seconds)
15:23:02 × califax quits (~califax@user/califx) (Remote host closed the connection)
15:24:07 califax joins (~califax@user/califx)
15:31:25 × califax quits (~califax@user/califx) (Remote host closed the connection)
15:32:54 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 245 seconds)
15:34:10 × acidjnk_new quits (~acidjnk@p54ad5829.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
15:35:55 califax joins (~califax@user/califx)
15:40:51 × califax quits (~califax@user/califx) (Remote host closed the connection)
15:40:56 internatetional joins (~nate@2001:448a:20a3:c2e5:6ffc:4715:4937:5d57)
15:43:23 gorignak joins (~gorignak@user/gorignak)
15:43:28 × tabaqui quits (~tabaqui@167.71.80.236) (Ping timeout: 276 seconds)
15:43:59 califax joins (~califax@user/califx)
15:45:46 × califax quits (~califax@user/califx) (Remote host closed the connection)
15:46:52 califax joins (~califax@user/califx)
15:49:34 × internatetional quits (~nate@2001:448a:20a3:c2e5:6ffc:4715:4937:5d57) (Ping timeout: 245 seconds)
15:54:51 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
16:03:30 ljdarj joins (~Thunderbi@user/ljdarj)
16:03:38 acidjnk_new joins (~acidjnk@p200300d6e71c4f5484b3f1722d8c7d91.dip0.t-ipconnect.de)
16:13:44 × merijn quits (~merijn@77.242.116.146) (Ping timeout: 245 seconds)
16:14:28 danza joins (~danza@user/danza)
16:16:38 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
16:17:08 weary-traveler joins (~user@user/user363627)
16:17:25 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
16:24:06 tromp joins (~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4)
16:25:56 tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net)
16:31:19 j1n37- joins (~j1n37@user/j1n37)
16:32:04 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 245 seconds)
16:37:45 × yin quits (~yin@user/zero) (Ping timeout: 260 seconds)
16:46:14 wootehfoot joins (~wootehfoo@user/wootehfoot)
16:47:20 internatetional joins (~nate@2001:448a:20a3:c2e5:b374:8cd1:e4d4:3c34)
16:48:10 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 272 seconds)
16:51:54 × acidjnk_new quits (~acidjnk@p200300d6e71c4f5484b3f1722d8c7d91.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
16:54:09 × jespada_ quits (~jespada@r179-25-126-65.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
16:55:11 jespada joins (~jespada@r179-25-126-65.dialup.adsl.anteldata.net.uy)
16:57:50 × tromp quits (~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:02:26 <haskellbridge> <Liamzee> thanks ski
17:09:38 × internatetional quits (~nate@2001:448a:20a3:c2e5:b374:8cd1:e4d4:3c34) (Ping timeout: 268 seconds)
17:11:58 fp joins (~Thunderbi@87-94-239-173.bb.dnainternet.fi)
17:12:20 internatetional joins (~nate@2001:448a:20a3:c2e5:b374:8cd1:e4d4:3c34)
17:21:59 tromp joins (~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4)
17:26:50 × danza quits (~danza@user/danza) (Remote host closed the connection)
17:26:59 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
17:31:21 × tromp quits (~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:32:01 × haskellbridge quits (~hackager@syn-024-093-192-219.res.spectrum.com) (Ping timeout: 276 seconds)
17:33:19 haskellbridge joins (~hackager@syn-024-093-192-219.res.spectrum.com)
17:33:19 ChanServ sets mode +v haskellbridge
17:36:15 ft joins (~ft@p4fc2a6e6.dip0.t-ipconnect.de)
17:38:43 tromp joins (~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4)
17:49:41 × internatetional quits (~nate@2001:448a:20a3:c2e5:b374:8cd1:e4d4:3c34) (Ping timeout: 248 seconds)
18:00:20 justsomeguy joins (~justsomeg@user/justsomeguy)
18:04:46 tolgo joins (~Thunderbi@199.115.144.130)
18:13:39 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6)
18:13:54 justsomeguy joins (~justsomeg@user/justsomeguy)
18:17:11 yin joins (~yin@user/zero)
18:18:39 × chele quits (~chele@user/chele) (Remote host closed the connection)
18:22:11 acidjnk_new joins (~acidjnk@p200300d6e71c4f547095211bab53f1d0.dip0.t-ipconnect.de)
18:22:13 × akegalj quits (~akegalj@144-188.dsl.iskon.hr) (Ping timeout: 248 seconds)
18:25:19 × tolgo quits (~Thunderbi@199.115.144.130) (Ping timeout: 276 seconds)
18:25:25 × machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 248 seconds)
18:35:54 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
18:35:57 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6)
18:42:08 × dhil quits (~dhil@5.151.29.139) (Quit: Leaving)
18:49:31 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
18:51:58 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
18:57:14 typedfern_ joins (~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net)
19:00:01 × caconym7 quits (~caconym@user/caconym) (Quit: bye)
19:00:05 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 244 seconds)
19:00:25 × Typedfern quits (~Typedfern@135.red-83-37-43.dynamicip.rima-tde.net) (Ping timeout: 276 seconds)
19:00:56 caconym7 joins (~caconym@user/caconym)
19:02:48 × Digit quits (~user@user/digit) (Ping timeout: 252 seconds)
19:05:42 × tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 276 seconds)
19:10:25 × lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 244 seconds)
19:11:44 × m5zs7k quits (aquares@web10.mydevil.net) (Ping timeout: 268 seconds)
19:14:04 m5zs7k joins (aquares@web10.mydevil.net)
19:17:47 L29Ah joins (~L29Ah@wikipedia/L29Ah)
19:18:29 tomboy64 joins (~tomboy64@user/tomboy64)
19:21:48 × califax quits (~califax@user/califx) (Ping timeout: 264 seconds)
19:27:17 sprotte24 joins (~sprotte24@p200300d16f272a0040556e126963731e.dip0.t-ipconnect.de)
19:27:50 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
19:28:54 × euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.)
19:29:07 califax joins (~califax@user/califx)
19:30:19 tabaqui joins (~tabaqui@167.71.80.236)
19:33:36 j1n37 joins (~j1n37@user/j1n37)
19:34:14 × j1n37- quits (~j1n37@user/j1n37) (Ping timeout: 252 seconds)
19:35:19 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
19:37:37 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
19:45:49 euphores joins (~SASL_euph@user/euphores)
19:47:30 × gorignak quits (~gorignak@user/gorignak) (Ping timeout: 268 seconds)
19:51:44 × j1n37 quits (~j1n37@user/j1n37) (Read error: Connection reset by peer)
19:54:49 Digit joins (~user@69.47.7.51.dyn.plus.net)
19:56:50 j1n37 joins (~j1n37@user/j1n37)
19:59:18 pavonia joins (~user@user/siracusa)
20:01:40 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
20:01:51 volsand joins (~volsand@2804:1b1:1080:da6:4231:87aa:c8ca:1d50)
20:07:57 × amadaluzia quits (~amadaluzi@user/amadaluzia) (Quit: Hi, this is Paul Allen. I'm being called away to London for a few days. Meredith, I'll call you when I get back. Hasta la vista, baby.)
20:08:39 emmanuelux joins (~emmanuelu@user/emmanuelux)
20:09:18 × volsand quits (~volsand@2804:1b1:1080:da6:4231:87aa:c8ca:1d50) (Quit: volsand)
20:09:35 volsand joins (~volsand@2804:1b1:1080:da6:4231:87aa:c8ca:1d50)
20:13:28 tolgo joins (~Thunderbi@199.115.144.130)
20:15:25 × volsand quits (~volsand@2804:1b1:1080:da6:4231:87aa:c8ca:1d50) (Quit: volsand)
20:15:43 volsand joins (~volsand@2804:1b1:1080:da6:4231:87aa:c8ca:1d50)
20:16:17 × volsand quits (~volsand@2804:1b1:1080:da6:4231:87aa:c8ca:1d50) (Client Quit)
20:16:33 volsand joins (~volsand@2804:1b1:1080:da6:4231:87aa:c8ca:1d50)
20:19:39 × Buliarous quits (~gypsydang@46.232.210.139) (Remote host closed the connection)
20:20:09 Buliarous joins (~gypsydang@46.232.210.139)
20:21:09 × Buliarous quits (~gypsydang@46.232.210.139) (Remote host closed the connection)
20:21:36 Buliarous joins (~gypsydang@46.232.210.139)
20:23:10 JuanDaugherty joins (~juan@user/JuanDaugherty)
20:23:30 × tolgo quits (~Thunderbi@199.115.144.130) (Ping timeout: 272 seconds)
20:28:15 machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net)
20:39:47 × tabaqui quits (~tabaqui@167.71.80.236) (Quit: WeeChat 4.6.2)
20:47:28 × yin quits (~yin@user/zero) (Ping timeout: 265 seconds)
20:47:50 notdabs joins (~Owner@2600:1700:69cf:9000:748c:9883:fc80:2b20)
20:50:24 tabaqui joins (~tabaqui@167.71.80.236)
20:55:16 × tabaqui quits (~tabaqui@167.71.80.236) (Client Quit)
20:56:37 jacopovalanzano joins (~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net)
20:56:38 tabaqui joins (~tabaqui@167.71.80.236)
20:59:00 ljdarj1 joins (~Thunderbi@user/ljdarj)
21:01:21 yin joins (~yin@user/zero)
21:02:45 × fp quits (~Thunderbi@87-94-239-173.bb.dnainternet.fi) (Ping timeout: 248 seconds)
21:02:54 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 245 seconds)
21:02:54 ljdarj1 is now known as ljdarj
21:03:39 j1n37- joins (~j1n37@user/j1n37)
21:04:34 × j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 276 seconds)
21:08:01 × yin quits (~yin@user/zero) (Ping timeout: 248 seconds)
21:09:05 yin joins (~yin@user/zero)
21:15:13 euleritian joins (~euleritia@dynamic-176-006-139-247.176.6.pool.telefonica.de)
21:16:56 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
21:18:54 × takuan quits (~takuan@d8D86B601.access.telenet.be) (Remote host closed the connection)
21:22:46 × tabaqui quits (~tabaqui@167.71.80.236) (Ping timeout: 252 seconds)
21:24:41 × JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
21:27:59 tolgo joins (~Thunderbi@199.115.144.130)
21:31:58 × michalz quits (~michalz@185.246.207.205) (Remote host closed the connection)
21:32:55 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
21:34:38 × jacopovalanzano quits (~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net) (Quit: Client closed)
21:36:57 alecs joins (~alecs@61.pool85-58-154.dynamic.orange.es)
21:40:16 dhil joins (~dhil@5.151.29.141)
21:43:45 × tolgo quits (~Thunderbi@199.115.144.130) (Quit: tolgo)
21:43:55 tolgo joins (~Thunderbi@199.115.144.130)
21:45:24 × dhil quits (~dhil@5.151.29.141) (Ping timeout: 245 seconds)
21:45:36 ttybitnik joins (~ttybitnik@user/wolper)
21:49:05 × tromp quits (~textual@2001:1c00:3487:1b00:81f6:6a75:5fad:c9b4) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:01:46 × tolgo quits (~Thunderbi@199.115.144.130) (Ping timeout: 276 seconds)
22:07:38 Sgeo joins (~Sgeo@user/sgeo)
22:15:13 × sayurc quits (~sayurc@169.150.203.34) (Ping timeout: 248 seconds)
22:15:22 sayurc_ joins (~sayurc@177.136.41.196)
22:15:34 × Square2 quits (~Square4@user/square) (Ping timeout: 252 seconds)
22:15:58 × alecs quits (~alecs@61.pool85-58-154.dynamic.orange.es) (Quit: Client closed)
22:20:55 gorignak joins (~gorignak@user/gorignak)
22:21:04 × yin quits (~yin@user/zero) (Ping timeout: 252 seconds)
22:21:32 Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
22:21:48 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
22:22:14 Square2 joins (~Square@user/square)
22:22:29 yin joins (~yin@user/zero)
22:24:21 × yin quits (~yin@user/zero) (Read error: Connection reset by peer)
22:27:29 yin joins (~yin@user/zero)
22:27:33 × driib318 quits (~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat)
22:29:49 zmt01 joins (~zmt00@user/zmt00)
22:30:19 × zmt01 quits (~zmt00@user/zmt00) (Max SendQ exceeded)
22:31:27 zmt01 joins (~zmt00@user/zmt00)
22:32:11 r-sta joins (~r-sta@206-122-61-5.reverse.tnp.net.uk)
22:33:24 × swamp_ quits (~zmt00@user/zmt00) (Ping timeout: 260 seconds)
22:36:10 × r-sta quits (~r-sta@206-122-61-5.reverse.tnp.net.uk) (Client Quit)
22:43:10 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
22:51:01 × sayurc_ quits (~sayurc@177.136.41.196) (Ping timeout: 248 seconds)
22:51:02 sayurc joins (~sayurc@169.150.203.34)
22:51:30 × yin quits (~yin@user/zero) (Ping timeout: 252 seconds)
22:57:21 × down200 quits (~down200@shell.lug.mtu.edu) (Ping timeout: 248 seconds)
22:59:02 down200 joins (~down200@shell.lug.mtu.edu)
23:19:00 × jespada quits (~jespada@r179-25-126-65.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
23:24:34 Googulator65 joins (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu)
23:27:42 × Googulator71 quits (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu) (Ping timeout: 240 seconds)
23:32:51 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
23:33:14 × sprotte24 quits (~sprotte24@p200300d16f272a0040556e126963731e.dip0.t-ipconnect.de) (Quit: Leaving)
23:36:38 × pavonia quits (~user@user/siracusa) (Ping timeout: 265 seconds)
23:36:57 pavonia joins (~user@user/siracusa)
23:37:56 tolgo joins (~Thunderbi@199.115.144.130)
23:46:37 __jmcantrell__ joins (~weechat@user/jmcantrell)
23:54:40 × acidjnk_new quits (~acidjnk@p200300d6e71c4f547095211bab53f1d0.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
23:54:46 × sayurc quits (~sayurc@169.150.203.34) (Quit: Konversation terminated!)
23:59:02 sayurc joins (~sayurc@169.150.203.34)

All times are in UTC on 2025-04-29.