2024/11/01

2024-11-01 00:01:19 +0100sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 260 seconds)
2024-11-01 00:01:30 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-11-01 00:04:49 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-11-01 00:05:49 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-11-01 00:05:58 +0100smtt(smt@user/smtt) (Quit: WeeChat 4.4.2)
2024-11-01 00:06:18 +0100smtt(smt@user/smtt) smtt
2024-11-01 00:15:33 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 00:19:53 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-11-01 00:25:19 +0100hgolden_(~hgolden@static-198-44-129-51.cust.tzulo.com) hgolden
2024-11-01 00:28:27 +0100hgolden__(~hgolden@23.162.40.28) (Ping timeout: 276 seconds)
2024-11-01 00:28:54 +0100xff0x(~xff0x@2405:6580:b080:900:adf3:98f8:7ac2:6549) (Ping timeout: 260 seconds)
2024-11-01 00:32:47 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 00:35:58 +0100xff0x(~xff0x@2405:6580:b080:900:394c:a0ff:7b90:1a8c)
2024-11-01 00:38:02 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
2024-11-01 00:46:06 +0100Square2(~Square4@user/square) Square
2024-11-01 00:48:10 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 00:49:12 +0100Square(~Square@user/square) (Ping timeout: 252 seconds)
2024-11-01 00:49:59 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-11-01 00:52:56 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
2024-11-01 00:54:42 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-11-01 01:03:56 +0100son0p(~ff@190.254.147.212) son0p
2024-11-01 01:13:53 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 01:14:40 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-11-01 01:14:46 +0100acidjnk_new(~acidjnk@p200300d6e7283f63e05ee1ad1cad2e54.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2024-11-01 01:19:04 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-11-01 01:21:21 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-11-01 01:25:21 +0100Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2024-11-01 01:27:08 +0100son0p(~ff@190.254.147.212) (Remote host closed the connection)
2024-11-01 01:27:36 +0100xff0x(~xff0x@2405:6580:b080:900:394c:a0ff:7b90:1a8c) (Ping timeout: 276 seconds)
2024-11-01 01:29:07 +0100Nixkernal(~Nixkernal@90.74.198.178.dynamic.cust.swisscom.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2024-11-01 01:29:44 +0100son0p(~ff@190.254.147.212) son0p
2024-11-01 01:32:09 +0100acidjnk_new(~acidjnk@p200300d6e7283f63a42f1e536c595cb6.dip0.t-ipconnect.de)
2024-11-01 01:32:25 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 01:36:03 +0100Square2(~Square4@user/square) (Ping timeout: 276 seconds)
2024-11-01 01:36:09 +0100Square(~Square@user/square) Square
2024-11-01 01:36:52 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-11-01 01:47:47 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 01:47:51 +0100sprotte24_(~sprotte24@p200300d16f105500d15704183d531f13.dip0.t-ipconnect.de) (Quit: Leaving)
2024-11-01 01:54:39 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-11-01 01:55:33 +0100acidjnk_new(~acidjnk@p200300d6e7283f63a42f1e536c595cb6.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2024-11-01 01:55:51 +0100euleritian(~euleritia@176.2.142.161) (Remote host closed the connection)
2024-11-01 01:56:09 +0100euleritian(~euleritia@176.2.142.161)
2024-11-01 01:59:30 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 02:04:15 +0100Square(~Square@user/square) (Ping timeout: 244 seconds)
2024-11-01 02:04:39 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-11-01 02:07:22 +0100 <haskellbridge> <zwro> is (pure@IO . ($!!)) the same as (evaluate . force) ?
2024-11-01 02:13:07 +0100 <haskellbridge> <zwro> * (pure @IO . ($!!)) equivalent to
2024-11-01 02:13:33 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2024-11-01 02:14:32 +0100 <dolio> No.
2024-11-01 02:15:02 +0100son0p(~ff@190.254.147.212) (Remote host closed the connection)
2024-11-01 02:15:08 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 02:15:11 +0100 <EvanR> :t force
2024-11-01 02:15:12 +0100 <lambdabot> NFData a => a -> a
2024-11-01 02:16:00 +0100 <EvanR> force evaluates to normal form, $! doesn't
2024-11-01 02:16:17 +0100 <dolio> ($!!) does, but they're still not equivalent.
2024-11-01 02:16:32 +0100 <EvanR> $!! wasn't a typo, dang
2024-11-01 02:16:50 +0100 <EvanR> :t ($!!)
2024-11-01 02:16:52 +0100 <lambdabot> NFData a => (a -> b) -> a -> b
2024-11-01 02:16:57 +0100 <int-e> but the type is all wrong
2024-11-01 02:17:14 +0100 <int-e> pure . <anything> won't force its argment
2024-11-01 02:18:28 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-11-01 02:19:44 +0100spew(~spew@201.141.99.170) (Quit: party time)
2024-11-01 02:20:01 +0100 <int-e> (pure $!!) is still not equivalent though.
2024-11-01 02:20:08 +0100 <dolio> Right. :)
2024-11-01 02:20:43 +0100 <int-e> compare (evaluate undefined :: IO ()) `seq` () and (pure $! undefined :: IO ()) `seq` ()
2024-11-01 02:22:12 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-11-01 02:32:07 +0100 <EvanR> > pure $! undefined :: IO ()
2024-11-01 02:32:08 +0100 <lambdabot> <IO ()>
2024-11-01 02:32:25 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-11-01 02:32:45 +0100 <EvanR> % pure $! undefined :: IO ()
2024-11-01 02:32:45 +0100 <yahb2> *** Exception: Prelude.undefined ; CallStack (from HasCallStack): ; undefined, called at <interactive>:27:9 in interactive:Ghci5
2024-11-01 02:32:54 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 02:32:59 +0100 <EvanR> % (pure $! undefined :: IO ()) `seq` ()
2024-11-01 02:32:59 +0100 <yahb2> *** Exception: Prelude.undefined ; CallStack (from HasCallStack): ; undefined, called at <interactive>:29:10 in interactive:Ghci5
2024-11-01 02:33:12 +0100 <EvanR> sus
2024-11-01 02:37:44 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
2024-11-01 02:39:21 +0100gmg(~user@user/gehmehgeh) (Ping timeout: 260 seconds)
2024-11-01 02:41:32 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2024-11-01 02:43:19 +0100califax(~califax@user/califx) califx
2024-11-01 02:48:21 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 02:52:40 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-11-01 03:00:07 +0100mantraofpie(~mantraofp@user/mantraofpie) (Remote host closed the connection)
2024-11-01 03:00:07 +0100chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2024-11-01 03:00:27 +0100mantraofpie(~mantraofp@user/mantraofpie) mantraofpie
2024-11-01 03:00:48 +0100gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2024-11-01 03:00:55 +0100chiselfuse(~chiselfus@user/chiselfuse) chiselfuse
2024-11-01 03:01:33 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2024-11-01 03:03:39 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2024-11-01 03:03:44 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 03:04:07 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2024-11-01 03:08:46 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
2024-11-01 03:16:55 +0100k_hachig_(~k_hachig@2607:fea8:351d:ef0:5054:ee1b:c12f:dd7d) k_hachig
2024-11-01 03:17:15 +0100k_hachig_k_hachig
2024-11-01 03:19:06 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 03:22:00 +0100Natch(~natch@c-92-34-7-158.bbcust.telenor.se) (Ping timeout: 252 seconds)
2024-11-01 03:23:57 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-11-01 03:24:58 +0100weary-traveler(~user@user/user363627) user363627
2024-11-01 03:34:29 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 03:36:43 +0100Axman6(~Axman6@user/axman6) (Remote host closed the connection)
2024-11-01 03:36:58 +0100Axman6(~Axman6@user/axman6) Axman6
2024-11-01 03:40:47 +0100lol_(~lol@2603:3016:1e01:b9c0:c43d:6fb:2607:cd8b)
2024-11-01 03:41:26 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-11-01 03:44:43 +0100jcolanternpenter(~lol@2603:3016:1e01:b9c0:d0c3:d4d0:7258:5a99) (Ping timeout: 252 seconds)
2024-11-01 03:52:30 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 03:57:18 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-11-01 04:07:53 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 04:12:14 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-11-01 04:18:42 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Remote host closed the connection)
2024-11-01 04:22:46 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 04:24:16 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds)
2024-11-01 04:27:29 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-11-01 04:32:15 +0100Axma54801(~Axman6@user/axman6) Axman6
2024-11-01 04:33:00 +0100Axman6(~Axman6@user/axman6) (Ping timeout: 248 seconds)
2024-11-01 04:36:27 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-11-01 04:37:14 +0100habib(~habib@185.195.232.169) (Ping timeout: 260 seconds)
2024-11-01 04:38:10 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 04:38:53 +0100Axman6(~Axman6@user/axman6) Axman6
2024-11-01 04:40:49 +0100Axma74595(~Axman6@user/axman6) Axman6
2024-11-01 04:40:51 +0100Axma54801(~Axman6@user/axman6) (Ping timeout: 250 seconds)
2024-11-01 04:41:05 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 255 seconds)
2024-11-01 04:43:04 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-11-01 04:43:27 +0100Axman6(~Axman6@user/axman6) (Ping timeout: 250 seconds)
2024-11-01 04:53:32 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 04:56:18 +0100alphabitserial(~alphabits@user/alphabitserial) alphabitserial
2024-11-01 04:58:21 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-11-01 04:58:21 +0100td_(~td@i53870906.versanet.de) (Ping timeout: 252 seconds)
2024-11-01 05:00:02 +0100td_(~td@i5387091D.versanet.de)
2024-11-01 05:06:14 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2024-11-01 05:06:39 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2024-11-01 05:08:55 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 05:13:52 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-11-01 05:22:50 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-11-01 05:24:56 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 05:29:55 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-11-01 05:40:20 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 05:41:58 +0100alphabitserial(~alphabits@user/alphabitserial) (Quit: goodnight!)
2024-11-01 05:45:39 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-11-01 05:54:08 +0100libertyprime(~libertypr@118-92-73-199.dsl.dyn.ihug.co.nz) libertyprime
2024-11-01 05:55:41 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 05:55:51 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-11-01 06:00:24 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-11-01 06:00:24 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
2024-11-01 06:18:04 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 06:23:12 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
2024-11-01 06:24:42 +0100alp(~alp@2001:861:e3d6:8f80:b811:e433:6175:d950) (Ping timeout: 252 seconds)
2024-11-01 06:26:05 +0100bliminse(~bliminse@user/bliminse) (Quit: leaving)
2024-11-01 06:28:57 +0100rvalue-(~rvalue@user/rvalue) rvalue
2024-11-01 06:29:22 +0100rvalue(~rvalue@user/rvalue) (Ping timeout: 248 seconds)
2024-11-01 06:33:36 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 06:33:41 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 248 seconds)
2024-11-01 06:34:45 +0100rvalue-rvalue
2024-11-01 06:35:35 +0100Axma74595Axman6
2024-11-01 06:36:45 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) ezzieyguywuf
2024-11-01 06:38:09 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-11-01 06:41:53 +0100bliminse(~bliminse@user/bliminse) bliminse
2024-11-01 06:44:46 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2024-11-01 06:48:57 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 06:50:00 +0100k_hachig(~k_hachig@2607:fea8:351d:ef0:5054:ee1b:c12f:dd7d) (Ping timeout: 276 seconds)
2024-11-01 06:53:32 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-11-01 06:56:44 +0100misterfish(~misterfis@84.53.85.146) misterfish
2024-11-01 07:01:45 +0100k_hachig_(~k_hachig@2607:fea8:351d:ef0:68da:2df0:a70f:fa91) k_hachig
2024-11-01 07:05:40 +0100benkard(~mulk@pd95146e9.dip0.t-ipconnect.de) mulk
2024-11-01 07:06:32 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 07:07:33 +0100mulk(~mulk@pd95146e9.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2024-11-01 07:07:34 +0100benkardmulk
2024-11-01 07:07:35 +0100poscat(~poscat@user/poscat) poscat
2024-11-01 07:07:45 +0100poscat0x04(~poscat@user/poscat) (Ping timeout: 246 seconds)
2024-11-01 07:08:19 +0100k_hachig_(~k_hachig@2607:fea8:351d:ef0:68da:2df0:a70f:fa91) (Ping timeout: 260 seconds)
2024-11-01 07:11:24 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-11-01 07:16:00 +0100tcard_(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving)
2024-11-01 07:21:56 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 07:32:21 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-11-01 07:35:09 +0100misterfish(~misterfis@84.53.85.146) (Ping timeout: 260 seconds)
2024-11-01 07:37:06 +0100tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2024-11-01 07:41:53 +0100Natch(~natch@c-92-34-7-158.bbcust.telenor.se)
2024-11-01 07:43:17 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 07:47:50 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-11-01 07:58:40 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 08:00:00 +0100caconym(~caconym@user/caconym) (Quit: bye)
2024-11-01 08:00:42 +0100caconym(~caconym@user/caconym) caconym
2024-11-01 08:04:09 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-11-01 08:04:29 +0100sord937(~sord937@gateway/tor-sasl/sord937) sord937
2024-11-01 08:05:47 +0100JamesMowery43(~JamesMowe@ip98-167-207-182.ph.ph.cox.net) (Quit: Ping timeout (120 seconds))
2024-11-01 08:08:56 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 265 seconds)
2024-11-01 08:09:34 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-11-01 08:16:21 +0100mulk(~mulk@pd95146e9.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2024-11-01 08:20:18 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 08:21:47 +0100alp(~alp@2001:861:e3d6:8f80:ad12:d0e9:d071:fba7)
2024-11-01 08:22:52 +0100mulk(~mulk@pd95146e9.dip0.t-ipconnect.de) mulk
2024-11-01 08:25:33 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-11-01 08:28:30 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-11-01 08:32:19 +0100Miroboru(~myrvoll@178-164-114.82.3p.ntebredband.no) (Quit: Lost terminal)
2024-11-01 08:35:40 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 08:40:16 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-11-01 08:40:28 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-11-01 08:44:57 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-11-01 08:44:59 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2024-11-01 08:46:09 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds)
2024-11-01 08:47:53 +0100Lord_of_Life_Lord_of_Life
2024-11-01 08:49:05 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2024-11-01 08:51:04 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 08:56:06 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-11-01 08:56:56 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-11-01 09:03:16 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 09:08:27 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-11-01 09:09:33 +0100weary-traveler(~user@user/user363627) (Remote host closed the connection)
2024-11-01 09:15:02 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac
2024-11-01 09:18:14 +0100misterfish(~misterfis@84.53.85.146) misterfish
2024-11-01 09:18:37 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 09:20:14 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-11-01 09:23:42 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
2024-11-01 09:25:30 +0100Leary(~Leary@user/Leary/x-0910699) (Remote host closed the connection)
2024-11-01 09:25:44 +0100Leary(~Leary@user/Leary/x-0910699) Leary
2024-11-01 09:26:52 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-11-01 09:26:56 +0100ljdarj(~Thunderbi@user/ljdarj) (Client Quit)
2024-11-01 09:29:37 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-11-01 09:33:37 +0100acidjnk_new(~acidjnk@p200300d6e7283f30213745c1d38acbc7.dip0.t-ipconnect.de) acidjnk
2024-11-01 09:34:01 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 09:39:00 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-11-01 09:40:57 +0100CiaoSen(~Jura@2a05:5800:487:0:ca4b:d6ff:fec1:99da) CiaoSen
2024-11-01 09:44:31 +0100k_hachig_(~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) k_hachig
2024-11-01 09:49:22 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 09:50:12 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-11-01 09:51:53 +0100k_hachig_(~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) (Ping timeout: 265 seconds)
2024-11-01 09:54:34 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-11-01 09:56:19 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-11-01 10:00:17 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 10:01:27 +0100troydm(~troydm@user/troydm) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
2024-11-01 10:08:33 +0100Miroboru(~myrvoll@178-164-114.82.3p.ntebredband.no) Miroboru
2024-11-01 10:16:06 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-11-01 10:22:16 +0100Square2(~Square4@user/square) Square
2024-11-01 10:27:16 +0100 <tomsmeding> my experience with this stuff is that IO seems to be strict in all your tests, but it fails if you actually want to use that for code correctness
2024-11-01 10:27:19 +0100 <tomsmeding> so use evaluate and be safe
2024-11-01 10:34:05 +0100 <c_wraith> evaluate isn't magic. the documentation explains what does and why.
2024-11-01 10:35:43 +0100 <tomsmeding> right. In practice, though, not using `evaluate` comes to bite me not in the presence of exceptions but when benchmarking
2024-11-01 10:36:10 +0100 <tomsmeding> if you want to benchmark an IO operation and are doing the timing manually for some reason, please, use `evaluate`. Using `return $! _` or something similar _will not work properly_
2024-11-01 10:36:15 +0100 <tomsmeding> it will work sometimes
2024-11-01 10:49:12 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 276 seconds)
2024-11-01 10:59:52 +0100driib318(~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat)
2024-11-01 11:00:32 +0100driib318(~driib@vmi931078.contaboserver.net) driib
2024-11-01 11:09:52 +0100libertyprime(~libertypr@118-92-73-199.dsl.dyn.ihug.co.nz) (Ping timeout: 252 seconds)
2024-11-01 11:12:00 +0100Natch(~natch@c-92-34-7-158.bbcust.telenor.se) (Ping timeout: 272 seconds)
2024-11-01 11:14:14 +0100zmt00(~zmt00@user/zmt00) zmt00
2024-11-01 11:15:22 +0100zmt01(~zmt00@user/zmt00) zmt00
2024-11-01 11:16:18 +0100swamp_(~zmt00@user/zmt00) (Ping timeout: 248 seconds)
2024-11-01 11:16:19 +0100lxsameer(~lxsameer@Serene/lxsameer) lxsameer
2024-11-01 11:16:45 +0100ubert(~Thunderbi@178.115.51.39.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2024-11-01 11:18:30 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-11-01 11:19:45 +0100zmt00(~zmt00@user/zmt00) (Ping timeout: 276 seconds)
2024-11-01 11:21:49 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en)
2024-11-01 11:22:06 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-11-01 11:22:45 +0100absence(torgeihe@hildring.pvv.ntnu.no) absence
2024-11-01 11:25:15 +0100 <absence> Is it possible to pass an implicit parameter explicitly, without creating a binding in the calling scope?
2024-11-01 11:25:37 +0100 <mauke> why without creating a binding?
2024-11-01 11:25:38 +0100 <tomsmeding> you can create the binding locally
2024-11-01 11:25:46 +0100 <tomsmeding> `let ?param = _ in f x y z`
2024-11-01 11:26:19 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-11-01 11:26:55 +0100 <absence> mauke: Less clutter, and clearer intent.
2024-11-01 11:27:12 +0100 <tomsmeding> using a let-binding is the only way to set implicit parameters
2024-11-01 11:27:26 +0100 <absence> I see, thanks!
2024-11-01 11:32:18 +0100chele(~chele@user/chele) chele
2024-11-01 11:32:58 +0100misterfish(~misterfis@84.53.85.146) (Ping timeout: 252 seconds)
2024-11-01 11:50:41 +0100k_hachig_(~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) k_hachig
2024-11-01 11:56:29 +0100k_hachig_(~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) (Ping timeout: 260 seconds)
2024-11-01 12:01:23 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en)
2024-11-01 12:12:28 +0100sprotte24(~sprotte24@p200300d16f13bb00e9ebafc1049584f7.dip0.t-ipconnect.de)
2024-11-01 12:15:11 +0100 <sprotte24> Hi
2024-11-01 12:15:21 +0100 <Rembane> Hi sprotte24 !
2024-11-01 12:15:35 +0100 <sprotte24> I want to write a Haskell program
2024-11-01 12:15:47 +0100 <sprotte24> Hi, Rembane
2024-11-01 12:15:51 +0100 <mauke> what's it do?
2024-11-01 12:16:19 +0100 <Hecate> rembaaaaaaane
2024-11-01 12:16:25 +0100 <Hecate> what's uuuuup
2024-11-01 12:16:28 +0100 <sprotte24> The Haskell programm has to compute the nearest Power of two for a given n.
2024-11-01 12:16:34 +0100 <Hecate> sprotte24: nice
2024-11-01 12:16:37 +0100 <sprotte24> Example:
2024-11-01 12:16:42 +0100 <mauke> oh, is this homework?
2024-11-01 12:17:21 +0100 <sprotte24> n= 9 nearest Power is 16
2024-11-01 12:17:35 +0100 <mauke> I'd say it's 8
2024-11-01 12:17:41 +0100 <sprotte24> Yes. kome work
2024-11-01 12:18:03 +0100 <Hecate> mauke: maybe they have to round to the highest power of 2
2024-11-01 12:18:15 +0100 <mauke> yeah, that actually makes things easier
2024-11-01 12:18:22 +0100 <Rembane> Hecate: Suuuuuuuuuuuuuuuuuup! :D
2024-11-01 12:18:23 +0100 <sprotte24> The restriction: using binary is forbidden.
2024-11-01 12:18:33 +0100 <mauke> define "using binary"
2024-11-01 12:18:38 +0100 <mauke> like bit shifts?
2024-11-01 12:18:46 +0100 <Hecate> damnit I was about to suggest that hahahaha
2024-11-01 12:19:23 +0100 <Hecate> Rembane: I'm not doing too bad! Still at Chalmers?
2024-11-01 12:20:15 +0100 <sprotte24> ok. if I use binary number, the Powers of 2 have the format 1, 10 100 1000 and so on
2024-11-01 12:20:20 +0100 <mauke> :t head . dropWhile (< ?n) . iterate (2 *) $ 1
2024-11-01 12:20:21 +0100 <lambdabot> (Ord c, ?n::c, Num c) => c
2024-11-01 12:20:29 +0100 <Rembane> Hecate: Still at Chalmers! I'll be done any day now. :D
2024-11-01 12:21:21 +0100 <sprotte24> I am not allowed to use a list
2024-11-01 12:21:33 +0100 <Hecate> Rembane: lovely. :) Say hi to Andreas Abel from me if you meet him
2024-11-01 12:21:45 +0100 <Rembane> Hecate: Sure thing! :D
2024-11-01 12:22:40 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-11-01 12:22:41 +0100 <sprotte24> I have to test whether nearestPowerOfTwo n >= 2^k
2024-11-01 12:23:36 +0100misterfish(~misterfis@31-161-39-137.biz.kpn.net) misterfish
2024-11-01 12:24:01 +0100 <sprotte24> One Problem: my input parameter is n and I have to increment k until the condition is satisfied
2024-11-01 12:24:24 +0100 <mauke> ah, the slow way
2024-11-01 12:24:30 +0100weary-traveler(~user@user/user363627) user363627
2024-11-01 12:24:42 +0100 <mauke> where are you stuck?
2024-11-01 12:24:51 +0100 <sprotte24> I suppose I need a local variaable for k?
2024-11-01 12:25:44 +0100 <sprotte24> I plan to build an recursive solution?
2024-11-01 12:26:15 +0100 <mauke> yeah, if you want to emulate a loop in functional code, it's always going to be a recursive function
2024-11-01 12:26:32 +0100 <mauke> (or a data structure like a list, but you're not allowed to do that, apparently)
2024-11-01 12:26:33 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 265 seconds)
2024-11-01 12:26:55 +0100 <mauke> any "loop variable" that changes in the loop is going to become a function parameter
2024-11-01 12:27:34 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds)
2024-11-01 12:28:06 +0100 <sprotte24> In my recursive loop I have to Test an to increment the Power index.
2024-11-01 12:28:49 +0100 <sprotte24> I had a solution, but that solution used 2 parameters n and k.
2024-11-01 12:29:05 +0100 <sprotte24> I show it, one moment please
2024-11-01 12:30:05 +0100 <Hecate> sprotte24: don't hesitate to use play.haskell.org !
2024-11-01 12:31:08 +0100 <sprotte24> -- 3.3 next power2
2024-11-01 12:31:08 +0100 <sprotte24> roundUpToPower2 :: Int -> Int -> Int
2024-11-01 12:31:08 +0100 <sprotte24> roundUpToPower2 n k = if n == 1 then 1
2024-11-01 12:31:08 +0100 <sprotte24> else if (nthPowerTwo k) >= n then (nthPowerTwo k)
2024-11-01 12:31:08 +0100 <sprotte24> else roundUpToPower2 n (k + 1)
2024-11-01 12:31:08 +0100 <sprotte24> roundUpToPowerTwo :: Int -> Int
2024-11-01 12:31:10 +0100 <sprotte24> roundUpToPowerTwo n = roundUpToPower2 n 1
2024-11-01 12:31:43 +0100 <sprotte24> -- 3.1 nthPowerTwo
2024-11-01 12:31:43 +0100 <sprotte24> nthPowerTwo :: Int -> Int
2024-11-01 12:31:43 +0100 <sprotte24> nthPowerTwo n = if n==0 then 1 else 2*nthPowerTwo(n-1)
2024-11-01 12:31:50 +0100 <mauke> plase don't paste into IRC
2024-11-01 12:31:58 +0100 <mauke> use a paste site like https://paste.tomsmeding.com to show code
2024-11-01 12:32:24 +0100 <sprotte24> ok
2024-11-01 12:33:05 +0100 <mauke> (and give us the link)
2024-11-01 12:34:23 +0100 <mauke> anyway, that looks like it would work
2024-11-01 12:34:55 +0100 <mauke> nthPowerTwo k could be replaced by 2 ^ k
2024-11-01 12:36:43 +0100 <sprotte24> We should not use the power function directly
2024-11-01 12:37:07 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-11-01 12:37:47 +0100 <sprotte24> or I use a function double
2024-11-01 12:40:17 +0100 <sprotte24> Two ways: double the base 2 (1 2 4 8 ...) or increment the exponent of 2
2024-11-01 12:40:22 +0100rvalue-(~rvalue@user/rvalue) rvalue
2024-11-01 12:40:47 +0100rvalue(~rvalue@user/rvalue) (Ping timeout: 244 seconds)
2024-11-01 12:43:24 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 12:47:32 +0100 <sprotte24> I have to leave home in 5 minutes and could contine in the later afternoon with my problem.
2024-11-01 12:48:16 +0100rvalue-rvalue
2024-11-01 12:48:25 +0100 <mauke> did you have a question?
2024-11-01 12:49:17 +0100 <sprotte24> my problem was the nearest power of 2
2024-11-01 12:51:03 +0100Square(~Square@user/square) Square
2024-11-01 12:51:58 +0100CatGPTcatties
2024-11-01 12:52:08 +0100 <sprotte24> bye
2024-11-01 12:52:14 +0100sprotte24(~sprotte24@p200300d16f13bb00e9ebafc1049584f7.dip0.t-ipconnect.de) (Quit: Leaving)
2024-11-01 12:55:18 +0100Square2(~Square4@user/square) (Ping timeout: 276 seconds)
2024-11-01 12:56:49 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2024-11-01 12:57:37 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-11-01 12:58:53 +0100weary-traveler(~user@user/user363627) (Remote host closed the connection)
2024-11-01 13:02:04 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-11-01 13:02:29 +0100CiaoSen(~Jura@2a05:5800:487:0:ca4b:d6ff:fec1:99da) (Ping timeout: 244 seconds)
2024-11-01 13:02:37 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-11-01 13:05:52 +0100turlando(~turlando@user/turlando) ()
2024-11-01 13:06:03 +0100 <Square> If you want to extend your build environemnt with a local package repository, what's your choices?
2024-11-01 13:06:18 +0100 <Square> local as organization wide.
2024-11-01 13:07:13 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2024-11-01 13:09:50 +0100 <Square> I see cabal has means to configure more repositories. But what software does it use?
2024-11-01 13:12:04 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac
2024-11-01 13:12:25 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-11-01 13:14:58 +0100xff0x(~xff0x@2405:6580:b080:900:26bf:a0f9:b4d:93d8)
2024-11-01 13:29:49 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2024-11-01 13:38:37 +0100sawilagar(~sawilagar@user/sawilagar) sawilagar
2024-11-01 13:45:25 +0100 <haskellbridge> <zwro> i'm still having trouble understanding the difference between (evaluate . force) and (pure @IO . ($!!))
2024-11-01 13:51:19 +0100 <mauke> same, but I think the semantics of the latter depend on how IO is implemented
2024-11-01 13:51:26 +0100euleritian(~euleritia@176.2.142.161) (Ping timeout: 255 seconds)
2024-11-01 13:53:29 +0100 <mauke> > evalState (do error "bang"; pure 2) ()
2024-11-01 13:53:31 +0100 <lambdabot> 2
2024-11-01 13:54:16 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-11-01 13:55:39 +0100euleritian(~euleritia@176.2.67.66)
2024-11-01 13:57:35 +0100 <tomsmeding> Square: https://cabal.readthedocs.io/en/3.4/cabal-project.html#cfg-field-active-repositories may be relevant, but I've never used it
2024-11-01 13:58:16 +0100 <tomsmeding> oh there is more text in the latest version https://cabal.readthedocs.io/en/stable/cabal-project-description-file.html#cfg-field-active-reposi…
2024-11-01 13:59:00 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds)
2024-11-01 14:00:47 +0100 <Square> tomsmeding, yeah i found those settings too. But what software do you use to run a repo? A company hackage if you will.
2024-11-01 14:01:37 +0100 <tomsmeding> Square: you might want to steal stuff from how head.hackage is implemented https://ghc.gitlab.haskell.org/head.hackage/
2024-11-01 14:05:01 +0100 <Leary> Square: https://hackage.haskell.org/ says "Hackage-server is on github [...]. Developer documentation is on in the github README, includig a quick guide to running your own server instance, and mirroring the central server."
2024-11-01 14:05:20 +0100 <Square> Gotcha. Thanks
2024-11-01 14:06:27 +0100 <tomsmeding> (it's nice how that head.hackage page shows how to add a 'repository' stanza to cabal.project.local, but then the cabal documentation is completely silent about such a stanza existing.)
2024-11-01 14:08:00 +0100Guest77(~Guest77@2402:a00:401:f093:da9e:f3ff:fe4b:8a8b)
2024-11-01 14:12:25 +0100 <mauke> are codes like "Cabal-4345" documented anywhere?
2024-11-01 14:15:44 +0100Xe(~cadey@perl/impostor/xe) (Quit: WeeChat 4.4.2)
2024-11-01 14:15:53 +0100 <haskellbridge> <zwro> mauke: that makes sense. i suspect GHC might optimize to the same core implementation but i need to test it
2024-11-01 14:18:05 +0100Guest77(~Guest77@2402:a00:401:f093:da9e:f3ff:fe4b:8a8b) (Quit: Client closed)
2024-11-01 14:18:45 +0100 <haskellbridge> <zwro> benchmarks for trivial cases show no discernible difference
2024-11-01 14:18:48 +0100mulk(~mulk@pd95146e9.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2024-11-01 14:18:50 +0100 <merijn> mauke: They should be, that's the point ;)
2024-11-01 14:19:16 +0100 <merijn> Square: It uses "hackage"
2024-11-01 14:19:46 +0100 <merijn> Square: You can set up your own internal Hackage and Hoogle and have cabal fallback to the regular public one (if desired)
2024-11-01 14:20:10 +0100slac68956(~slack1256@179.60.70.224) slack1256
2024-11-01 14:21:15 +0100mulk(~mulk@pd95146e9.dip0.t-ipconnect.de) mulk
2024-11-01 14:21:30 +0100 <Square> merijn, yeah. Seems to be it. I was thinking there were different options. But excellent if hackage availble.
2024-11-01 14:21:40 +0100Xe(~cadey@perl/impostor/xe) Xe
2024-11-01 14:21:41 +0100 <Square> is available*
2024-11-01 14:22:03 +0100slack1256(~slack1256@2803:c600:5111:8696:d97c:cbc8:139:bdb3) (Ping timeout: 244 seconds)
2024-11-01 14:23:10 +0100 <merijn> Square: I think it can use "dumb" disk repos too so you could have a shared network filesystem or something and use that
2024-11-01 14:23:30 +0100 <merijn> but if you run hackage you get the benefits of hyperlinked browsable docs for internal libs for free
2024-11-01 14:23:57 +0100Square2(~Square4@user/square) Square
2024-11-01 14:24:02 +0100 <mauke> merijn: I'll take that as a "no"
2024-11-01 14:24:17 +0100 <mauke> nothing in the manual, nothing on the website, nothing in a google search
2024-11-01 14:24:29 +0100 <merijn> mauke: Hecate was leading something on error codes in GHC
2024-11-01 14:24:47 +0100 <merijn> I'm assuming cabal codes are extension of that
2024-11-01 14:25:01 +0100 <yushyin> the error message index website? yes, but it is incomplete
2024-11-01 14:25:04 +0100 <merijn> mauke: https://discourse.haskell.org/t/announcing-the-haskell-error-index/5195
2024-11-01 14:25:12 +0100 <yushyin> https://errors.haskell.org/cabal/
2024-11-01 14:26:11 +0100 <mauke> nothing there either
2024-11-01 14:26:27 +0100 <merijn> I see some CABAL-xxx codes there
2024-11-01 14:26:43 +0100 <mauke> hah: "So far, 1 Cabal errors and warnings are documented here."
2024-11-01 14:26:48 +0100 <mauke> 1 whole errors
2024-11-01 14:26:48 +0100 <merijn> nice :)
2024-11-01 14:27:20 +0100 <merijn> mauke: Work in progress ;)
2024-11-01 14:27:32 +0100 <merijn> Step one is *having* unique codes, step two is documenting them ;)
2024-11-01 14:30:08 +0100 <mauke> how do I tell cabal what C compiler to use?
2024-11-01 14:30:33 +0100 <merijn> mauke: You can't tell cabal, you need to tell GHC
2024-11-01 14:30:47 +0100 <merijn> mauke: Cabal just invokes GHC on C files, which determines what C compiler to call
2024-11-01 14:30:58 +0100 <merijn> I think there was either a config file or GHC flag to tell it to use something else
2024-11-01 14:31:01 +0100 <mauke> no, cabal is doing something stupid
2024-11-01 14:31:05 +0100 <mauke> and I can't figure out what
2024-11-01 14:31:13 +0100 <yushyin> 4345 is the missing deps on foreign libs error, no? this is one of the more murky errors
2024-11-01 14:31:35 +0100 <merijn> mauke: Error? And I assume you mean actual C and not secretly C++?
2024-11-01 14:31:46 +0100 <mauke> Missing (or bad) header file: wcalc.h
2024-11-01 14:32:01 +0100 <mauke> the fun part is that it only happens on 'cabal install'. 'cabal build' is fine with it
2024-11-01 14:32:09 +0100 <merijn> mauke: Ah, that sounds more like wrong include dirs than wrong compiler, no?
2024-11-01 14:32:20 +0100 <mauke> oh, the compiler is fine
2024-11-01 14:32:33 +0100 <merijn> mauke: Is the cabal file public?
2024-11-01 14:32:44 +0100 <mauke> but I can't get it to tell me wtf it's doing, so my plan is to configure a fake compiler that just dumps what's going on
2024-11-01 14:32:52 +0100 <merijn> ooh
2024-11-01 14:32:57 +0100 <merijn> I think I know :D
2024-11-01 14:33:05 +0100 <merijn> But lemme check the cabal file first
2024-11-01 14:33:24 +0100k_hachig_(~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) k_hachig
2024-11-01 14:33:48 +0100 <mauke> merijn: https://paste.tomsmeding.com/uNvsLOb0
2024-11-01 14:33:53 +0100 <merijn> mauke: First clue is: "build works, install fails". install *always* builds an sdist *first* and THEN installs from that. To protect against broken sdists
2024-11-01 14:34:05 +0100 <merijn> mauke: So most likely your sdist is fucked and not including the header
2024-11-01 14:34:29 +0100 <mauke> I wish it would stop building an sdist. all I want is an executable
2024-11-01 14:35:06 +0100 <merijn> mauke: Yeah, I think the problem is that `includes` doesn't include your headers in the sdist
2024-11-01 14:35:21 +0100 <merijn> mauke: My C shipping projects explicitly list headers under `extra-source-files`
2024-11-01 14:36:05 +0100 <merijn> mauke: https://github.com/merijn/Belewitte/blob/ed95965077ee0a55c9a206b75445ddf93723916b/benchmark-analys…
2024-11-01 14:36:28 +0100 <merijn> C-sources get included, `includes` does not (since it might contain generated/system/whatever stuff)
2024-11-01 14:39:24 +0100k_hachig_(~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) (Ping timeout: 260 seconds)
2024-11-01 14:40:26 +0100 <mauke> merijn: thank you!
2024-11-01 14:43:34 +0100 <mauke> wow, this is stupid. extra-source-files (where I specify my headers) can only be set at the global level, but it supports wildcards. c-sources (where I specify my c files) can only be set at the stanza level, but wildcards are not supported.
2024-11-01 14:43:34 +0100L29Ah(~L29Ah@wikipedia/L29Ah) ()
2024-11-01 14:44:42 +0100 <mauke> so for a simple directory with C code, I have to set 4 separate cabal fields, 3 of them in a stanza and 1 at package level
2024-11-01 14:47:41 +0100 <mauke> argh, and in the end I don't even get the executable I wanted :-(
2024-11-01 14:47:43 +0100 <mauke> it's just a symlink
2024-11-01 14:47:59 +0100ghoulpinevulpine
2024-11-01 14:48:14 +0100 <mauke> is there a way to make cabal install a real exectuable file instead of just a link?
2024-11-01 14:49:03 +0100 <mauke> ... this whole system doesn't seem to be designed for publishing applications
2024-11-01 14:51:46 +0100 <merijn> mauke: yes
2024-11-01 14:51:56 +0100 <merijn> There's a flag, forget the exact name
2024-11-01 14:53:15 +0100 <merijn> mauke: install-method
2024-11-01 14:53:28 +0100 <merijn> has a copy or symlink config
2024-11-01 14:54:10 +0100 <merijn> mauke: tbf, it is in fact, not designed for publishing applications. It's designed to be scripted/used by systems that build/publish applications :p
2024-11-01 14:55:06 +0100 <merijn> mauke: These are the config options you want: https://github.com/merijn/dotfiles/blob/0ea230e8ebf303749d547692cbb139f1399f1cd2/install/cabal/con…
2024-11-01 14:55:16 +0100 <mauke> ah, I see it. command-line only
2024-11-01 14:55:18 +0100 <mauke> merijn++
2024-11-01 14:56:17 +0100 <merijn> mauke: All the stuff you want for packaging is there, but the defaults are mostly set up for interactive development
2024-11-01 14:57:05 +0100 <merijn> Under the assumption that anyone who cares about packaging/publishing will write a script with the right config/flags once and use that
2024-11-01 14:58:10 +0100 <mauke> merijn: do you also happen to know why executable stripping doesn't work?
2024-11-01 14:58:51 +0100 <merijn> It should?
2024-11-01 14:58:59 +0100 <mauke> the documentation says executable-stripping: True is the default, but tmp/preflex: ELF 64-bit LSB executable, x86-64, [...] with debug_info, not stripped
2024-11-01 14:59:41 +0100 <merijn> hmm
2024-11-01 15:00:31 +0100 <mauke> works in cabal.project, though
2024-11-01 15:00:59 +0100 <merijn> did you just enable it?
2024-11-01 15:01:34 +0100 <merijn> mauke: I don't think it will rebuild previously installs after you change the global config (whereas changes to cabal.project *WILL* force a rebuild)
2024-11-01 15:01:39 +0100 <merijn> not sure about that, though
2024-11-01 15:02:05 +0100 <merijn> mauke: Also, if you're building executables for publishing: is `split-sections` on?
2024-11-01 15:02:39 +0100 <merijn> That will *massively* shrink your executable size (although it will mean having to rebuild the world :p)
2024-11-01 15:02:50 +0100 <mauke> if I delete tmp, comment out 'exectuable-stripping: True' in cabal.project, and rerun 'cabal install', I get a non-stripped file
2024-11-01 15:04:38 +0100 <merijn> split-sections causes GHC to put every top level export into it's own linker section, so that any moderately modern linker can include only the (transitive) symbols you actually use. Instead of linking every transitive dependency even if you don't use them
2024-11-01 15:05:03 +0100 <mauke> wasn't on before. rebuilding world now ... :-)
2024-11-01 15:05:18 +0100 <merijn> So it can (theoretically) lob off entire sections of your dependency graph if you use only a fraction of libraries with big dependency lists
2024-11-01 15:06:03 +0100 <merijn> I think I'd something like a 20x reduction in final binary size
2024-11-01 15:06:53 +0100 <mauke> ah, building 'encoding' now. that always takes forever
2024-11-01 15:07:09 +0100 <tomsmeding> mauke: "I just want an executable" `cp $(cabal list-bin yourexename) wherever`
2024-11-01 15:07:12 +0100 <merijn> anyway, gotta get back to work
2024-11-01 15:07:26 +0100 <merijn> tomsmeding: I mean, --install-method=copy --install-dir=foo does the same
2024-11-01 15:07:36 +0100 <tomsmeding> except it goes through sdist
2024-11-01 15:07:49 +0100 <merijn> tomsmeding: Which means it detects broken cabal configs ;)
2024-11-01 15:07:54 +0100 <tomsmeding> (not saying that's a bad thing)
2024-11-01 15:07:55 +0100 <merijn> Which is good TM
2024-11-01 15:07:58 +0100 <tomsmeding> right
2024-11-01 15:08:50 +0100 <mauke> "broken" is debatable
2024-11-01 15:09:24 +0100 <mauke> given that it works fine as long as you don't sdist, which I have no intention of ever doing
2024-11-01 15:11:49 +0100 <mauke> final tally:
2024-11-01 15:12:04 +0100 <mauke> cabal install with default options: 25M
2024-11-01 15:12:20 +0100 <merijn> mauke: I also have this neat lazy people trick for testing "in-development" executables https://github.com/NLeSC-AAA2/etherpacket/blob/master/EtherPacket
2024-11-01 15:12:31 +0100 <mauke> cabal install with 'executable-stripping: True' in project file: 16M
2024-11-01 15:12:42 +0100 <mauke> cabal install with split sections: 18M
2024-11-01 15:12:54 +0100 <mauke> cabal install with split sections and explicit executable-stripping: 11M
2024-11-01 15:13:10 +0100 <merijn> I dunno if adding library-stripping also work?
2024-11-01 15:13:51 +0100 <mauke> wow, that scriptpath thing looks ... overengineered
2024-11-01 15:14:44 +0100 <merijn> mauke: It's mostly "I was running on some stupidly broken machines" engineered
2024-11-01 15:14:50 +0100 <mauke> ah, it's just a realpath reimplementation
2024-11-01 15:14:54 +0100 <mauke> I see
2024-11-01 15:14:55 +0100 <merijn> basically
2024-11-01 15:15:17 +0100 <merijn> You can ignore that part on sane machine ;)
2024-11-01 15:15:40 +0100 <mauke> "running on stupid machines" is very valid
2024-11-01 15:16:23 +0100 <mauke> right now I'm using docker "backwards" in that I have a custom build container just for creating CentOS 7 binaries
2024-11-01 15:16:32 +0100 <mauke> which I then copy out to the host system
2024-11-01 15:17:12 +0100 <merijn> Using docker the "right" way is for people who don't know how to build/package their own stuff :p
2024-11-01 15:19:29 +0100vgtw(~vgtw@user/vgtw) (Ping timeout: 248 seconds)
2024-11-01 15:19:39 +0100 <merijn> Docker makes sense when you remember that lots of ecosystems (looking at you npm, typescript, python, etc.) don't have a sane boundary to distinguish "necessary at build/packaging" from "necessary at runtime". And while I share your annoyance of "I need to set 4 fields in .cabal to packabe my headers" is annoying. I find the clear distinction between "what is sdist, what is build time, and what is
2024-11-01 15:19:45 +0100 <merijn> runtime" to be one of the things preserving my sanity
2024-11-01 15:20:00 +0100L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2024-11-01 15:21:46 +0100 <mauke> I don't have generated files, so for me it's all "sdist" in a sense
2024-11-01 15:22:44 +0100tired(~tired@user/tired) tired
2024-11-01 15:22:46 +0100 <mauke> technically I could probably just delete the header files because I'm pretty sure ghc doesn't care anyway
2024-11-01 15:23:23 +0100 <mauke> oh hello, executable stripping works if I turn it on in ~/.cabal/config
2024-11-01 15:24:06 +0100 <merijn> \o/
2024-11-01 15:24:36 +0100 <merijn> mauke: GHC can automatically check whether your declared types match the headers
2024-11-01 15:24:45 +0100 <merijn> Which can be helpful for your sanity
2024-11-01 15:25:03 +0100 <merijn> Not to mention GHC being able to use CPP macros as values
2024-11-01 15:25:55 +0100 <mauke> define "can"
2024-11-01 15:26:44 +0100k_hachig_(~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) k_hachig
2024-11-01 15:27:29 +0100 <mauke> tomsmeding: the cp $(cabal list-bin yourexename) wherever method gives me a non-stripped executable
2024-11-01 15:27:48 +0100 <merijn> mauke: "can" for the type checking, you mean?
2024-11-01 15:28:10 +0100 <mauke> er, yes
2024-11-01 15:28:11 +0100vgtw(~vgtw@user/vgtw) vgtw
2024-11-01 15:29:07 +0100 <merijn> mauke: It's been awhile, but iirc if you mention the header file on the foreign import it will check that the Haskell type you declare for it corresponds to the C type
2024-11-01 15:29:10 +0100 <merijn> mauke: https://github.com/merijn/Belewitte/blob/ed95965077ee0a55c9a206b75445ddf93723916b/benchmark-analys…
2024-11-01 15:29:22 +0100Sgeo(~Sgeo@user/sgeo) Sgeo
2024-11-01 15:29:33 +0100 <merijn> (modulo marshalling as defined in the FFI part of the standard)
2024-11-01 15:29:50 +0100 <mauke> for ccall? are you sure?
2024-11-01 15:30:05 +0100 <mauke> I know capi does weird things
2024-11-01 15:30:37 +0100 <merijn> I thought it did
2024-11-01 15:30:54 +0100 <merijn> capi is very different, since it generates stubs instead of calling directly from Haskell
2024-11-01 15:31:16 +0100 <merijn> mauke: capi is nice for some things, though. Since it lets you foreign import CPP macros as values: https://github.com/merijn/Belewitte/blob/ed95965077ee0a55c9a206b75445ddf93723916b/benchmark-analys…
2024-11-01 15:31:19 +0100k_hachig_(~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) (Ping timeout: 260 seconds)
2024-11-01 15:31:20 +0100Square2(~Square4@user/square) (Ping timeout: 255 seconds)
2024-11-01 15:32:11 +0100 <mauke> I thought capi was what you were talking about when you mentioned CPP macros and checking against headers
2024-11-01 15:32:13 +0100 <merijn> I'd prefer ccall where possible, but capi is a huge win. I think capi also lets you reference Ptr to variables directly (as opposed to only functions)
2024-11-01 15:32:37 +0100 <mauke> importing addresses of variables is in the base FFI
2024-11-01 15:32:42 +0100 <merijn> mauke: CPP macros is capi only (but you can use both at the same time). The type checking I *thought* it also did for ccall
2024-11-01 15:33:09 +0100 <merijn> (IFF you declare the header at the import) but that might be a lie
2024-11-01 15:33:18 +0100 <merijn> can't check right now, since I have no GHC install on this machine
2024-11-01 15:34:44 +0100 <merijn> mauke: There was a case where the import of a variable was ambiguous compared to a function returning a pointer
2024-11-01 15:34:49 +0100 <merijn> or something
2024-11-01 15:34:52 +0100 <merijn> It's been a long time xD
2024-11-01 15:36:01 +0100 <mauke> huh. foreign import capi "pi.h value pi" c_pi :: CDouble
2024-11-01 15:36:18 +0100 <mauke> is documented as letting you refer to const double pi = 3.14;
2024-11-01 15:36:30 +0100 <mauke> but that's unsound, since the value of pi can change over time
2024-11-01 15:37:03 +0100 <EvanR> how does const double pi change over time
2024-11-01 15:37:10 +0100 <merijn> EvanR: Because const means nothing
2024-11-01 15:37:18 +0100 <mauke> const means read-only, not constant
2024-11-01 15:37:18 +0100 <merijn> mauke: tbf, it's actually sound
2024-11-01 15:37:31 +0100 <merijn> mauke: because modifying pi is UB
2024-11-01 15:37:33 +0100 <EvanR> in C, that's a const double, it's not changing
2024-11-01 15:37:49 +0100 <EvanR> unless you break everything, which you can do in haskell also
2024-11-01 15:38:08 +0100 <merijn> EvanR: C programmers regularly break everything :p
2024-11-01 15:38:12 +0100 <mauke> hold on, I need to check my standards
2024-11-01 15:38:14 +0100 <EvanR> sure
2024-11-01 15:38:22 +0100 <mauke> I know 'const volatile foo' is explicitly permmitted
2024-11-01 15:38:29 +0100 <EvanR> but like, I can write to any object in haskell too
2024-11-01 15:39:05 +0100 <EvanR> you can say that values in haskell change over time
2024-11-01 15:39:21 +0100 <merijn> mauke: Sure, but you're not permitted to write to that
2024-11-01 15:39:26 +0100vgtw(~vgtw@user/vgtw) (Ping timeout: 255 seconds)
2024-11-01 15:39:34 +0100 <merijn> mauke: Pretty sure const *is* "modification = UB"
2024-11-01 15:39:59 +0100 <merijn> mauke: Which of course in embedded doesn't prevent an address from changing in memory mapped IO
2024-11-01 15:40:09 +0100 <merijn> (or on non-embedded I suppose)
2024-11-01 15:40:10 +0100 <EvanR> "const means nothing" is just false
2024-11-01 15:40:26 +0100 <EvanR> unless nothing means anything, which I guess is one way to look at things
2024-11-01 15:40:31 +0100vgtw(~vgtw@user/vgtw) vgtw
2024-11-01 15:41:58 +0100 <mauke> EvanR: you're right, I misremembered
2024-11-01 15:42:29 +0100 <mauke> the presence of the initializer makes it a definition, and modifying an object whose definition includes 'const' is UB
2024-11-01 15:42:54 +0100 <EvanR> now while c_pi doesn't change over time, some people still think c changes over time (c being the speed of light)
2024-11-01 15:43:08 +0100 <EvanR> einstein forgot to put const
2024-11-01 15:43:42 +0100 <mauke> merijn: the 'const volatile' thing can't be written by the program, but it may still change (memory-mapped timer or something)
2024-11-01 15:45:08 +0100 <merijn> mauke: tbf, nothing about capi promises to obey the C standard ;)
2024-11-01 15:45:55 +0100 <merijn> It just says "I will convert this to a pure value", and it's up to you to not do stupid shit
2024-11-01 15:46:32 +0100 <EvanR> we choose when and what abstract world to live in
2024-11-01 15:46:43 +0100 <EvanR> whether it's formalized somewhere
2024-11-01 15:50:04 +0100tabemann(~tabemann@2600:1700:7990:24e0:cb63:a13b:e8da:1b84) (Remote host closed the connection)
2024-11-01 15:50:24 +0100tabemann(~tabemann@2600:1700:7990:24e0:141f:cdda:2f28:e1cc)
2024-11-01 15:53:31 +0100k_hachig_(~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) k_hachig
2024-11-01 16:00:10 +0100k_hachig_(~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) (Ping timeout: 272 seconds)
2024-11-01 16:10:15 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-11-01 16:12:17 +0100ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-11-01 16:13:42 +0100CiaoSen(~Jura@2a05:5800:487:0:ca4b:d6ff:fec1:99da) CiaoSen
2024-11-01 16:13:50 +0100misterfish(~misterfis@31-161-39-137.biz.kpn.net) (Ping timeout: 252 seconds)
2024-11-01 16:15:30 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 276 seconds)
2024-11-01 16:16:09 +0100AlexZenon(~alzenon@178.34.150.252) (Ping timeout: 276 seconds)
2024-11-01 16:19:42 +0100ShelobShe
2024-11-01 16:21:13 +0100ghoulguyglguy
2024-11-01 16:21:56 +0100AlexZenon(~alzenon@178.34.150.252)
2024-11-01 16:22:36 +0100econo_(uid147250@id-147250.tinside.irccloud.com)
2024-11-01 16:24:16 +0100rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2024-11-01 16:24:48 +0100rvalue(~rvalue@user/rvalue) rvalue
2024-11-01 16:25:41 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-11-01 16:29:10 +0100alp(~alp@2001:861:e3d6:8f80:ad12:d0e9:d071:fba7) (Remote host closed the connection)
2024-11-01 16:29:59 +0100alp(~alp@2001:861:e3d6:8f80:394e:fa36:1a51:e8c1)
2024-11-01 16:30:42 +0100dostoyevsky2(~sck@user/dostoyevsky2) (Ping timeout: 252 seconds)
2024-11-01 16:31:42 +0100alp(~alp@2001:861:e3d6:8f80:394e:fa36:1a51:e8c1) (Remote host closed the connection)
2024-11-01 16:32:31 +0100alp(~alp@2001:861:e3d6:8f80:d0dc:c5e7:387e:3419)
2024-11-01 16:32:39 +0100dostoyevsky2(~sck@user/dostoyevsky2) dostoyevsky2
2024-11-01 16:34:13 +0100alp(~alp@2001:861:e3d6:8f80:d0dc:c5e7:387e:3419) (Remote host closed the connection)
2024-11-01 16:42:53 +0100k_hachig_(~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) k_hachig
2024-11-01 16:56:08 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2)
2024-11-01 17:04:56 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 255 seconds)
2024-11-01 17:05:47 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-11-01 17:10:26 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2024-11-01 17:16:09 +0100euleritian(~euleritia@176.2.67.66) (Ping timeout: 260 seconds)
2024-11-01 17:20:45 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-11-01 17:23:12 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-11-01 17:28:08 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Read error: Connection reset by peer)
2024-11-01 17:28:15 +0100comerijn(~merijn@77.242.116.146) merijn
2024-11-01 17:31:16 +0100stiell_(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds)
2024-11-01 17:32:15 +0100stiell_(~stiell@gateway/tor-sasl/stiell) stiell
2024-11-01 17:32:55 +0100k_hachig_k_hachig
2024-11-01 17:33:19 +0100haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) (Remote host closed the connection)
2024-11-01 17:35:29 +0100CiaoSen(~Jura@2a05:5800:487:0:ca4b:d6ff:fec1:99da) (Ping timeout: 248 seconds)
2024-11-01 17:46:13 +0100cptaffe(~cptaffe@user/cptaffe) (Ping timeout: 252 seconds)
2024-11-01 17:46:51 +0100cptaffe(~cptaffe@user/cptaffe) cptaffe
2024-11-01 17:47:41 +0100mulk(~mulk@pd95146e9.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2024-11-01 17:49:32 +0100mulk(~mulk@pd95146e9.dip0.t-ipconnect.de) mulk
2024-11-01 17:58:10 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-11-01 18:00:31 +0100haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) hackager
2024-11-01 18:00:31 +0100ChanServ+v haskellbridge
2024-11-01 18:03:02 +0100morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 272 seconds)
2024-11-01 18:04:05 +0100alp(~alp@2001:861:e3d6:8f80:897b:546a:473c:28dc)
2024-11-01 18:08:51 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) tzh
2024-11-01 18:10:21 +0100Natch(~natch@c-92-34-7-158.bbcust.telenor.se)
2024-11-01 18:12:30 +0100comerijn(~merijn@77.242.116.146) (Ping timeout: 276 seconds)
2024-11-01 18:13:51 +0100L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2024-11-01 18:21:44 +0100ubert(~Thunderbi@178.115.51.39.wireless.dyn.drei.com) ubert
2024-11-01 18:24:02 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-11-01 18:29:05 +0100sprotte24(~sprotte24@134.245.44.89)
2024-11-01 18:29:14 +0100sawilagar(~sawilagar@user/sawilagar) (Remote host closed the connection)
2024-11-01 18:29:48 +0100sawilagar(~sawilagar@user/sawilagar) sawilagar
2024-11-01 18:30:58 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-11-01 18:33:27 +0100Square(~Square@user/square) (Ping timeout: 252 seconds)
2024-11-01 18:35:02 +0100tired(~tired@user/tired) (Remote host closed the connection)