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.