2024-11-01 00:01:19 +0100 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 260 seconds) |
2024-11-01 00:01:30 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 00:04:49 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-01 00:05:49 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-11-01 00:05:58 +0100 | smtt | (smt@user/smtt) (Quit: WeeChat 4.4.2) |
2024-11-01 00:06:18 +0100 | smtt | (smt@user/smtt) smtt |
2024-11-01 00:15:33 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 00:19:53 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-11-01 00:25:19 +0100 | hgolden_ | (~hgolden@static-198-44-129-51.cust.tzulo.com) hgolden |
2024-11-01 00:28:27 +0100 | hgolden__ | (~hgolden@23.162.40.28) (Ping timeout: 276 seconds) |
2024-11-01 00:28:54 +0100 | xff0x | (~xff0x@2405:6580:b080:900:adf3:98f8:7ac2:6549) (Ping timeout: 260 seconds) |
2024-11-01 00:32:47 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 00:35:58 +0100 | xff0x | (~xff0x@2405:6580:b080:900:394c:a0ff:7b90:1a8c) |
2024-11-01 00:38:02 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-11-01 00:46:06 +0100 | Square2 | (~Square4@user/square) Square |
2024-11-01 00:48:10 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 00:49:12 +0100 | Square | (~Square@user/square) (Ping timeout: 252 seconds) |
2024-11-01 00:49:59 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 00:52:56 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
2024-11-01 00:54:42 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-11-01 01:03:56 +0100 | son0p | (~ff@190.254.147.212) son0p |
2024-11-01 01:13:53 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 01:14:40 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 01:14:46 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f63e05ee1ad1cad2e54.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
2024-11-01 01:19:04 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds) |
2024-11-01 01:21:21 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-01 01:25:21 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
2024-11-01 01:27:08 +0100 | son0p | (~ff@190.254.147.212) (Remote host closed the connection) |
2024-11-01 01:27:36 +0100 | xff0x | (~xff0x@2405:6580:b080:900:394c:a0ff:7b90:1a8c) (Ping timeout: 276 seconds) |
2024-11-01 01:29:07 +0100 | Nixkernal | (~Nixkernal@90.74.198.178.dynamic.cust.swisscom.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2024-11-01 01:29:44 +0100 | son0p | (~ff@190.254.147.212) son0p |
2024-11-01 01:32:09 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f63a42f1e536c595cb6.dip0.t-ipconnect.de) |
2024-11-01 01:32:25 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 01:36:03 +0100 | Square2 | (~Square4@user/square) (Ping timeout: 276 seconds) |
2024-11-01 01:36:09 +0100 | Square | (~Square@user/square) Square |
2024-11-01 01:36:52 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-11-01 01:47:47 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 01:47:51 +0100 | sprotte24_ | (~sprotte24@p200300d16f105500d15704183d531f13.dip0.t-ipconnect.de) (Quit: Leaving) |
2024-11-01 01:54:39 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-01 01:55:33 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f63a42f1e536c595cb6.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
2024-11-01 01:55:51 +0100 | euleritian | (~euleritia@176.2.142.161) (Remote host closed the connection) |
2024-11-01 01:56:09 +0100 | euleritian | (~euleritia@176.2.142.161) |
2024-11-01 01:59:30 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 02:04:15 +0100 | Square | (~Square@user/square) (Ping timeout: 244 seconds) |
2024-11-01 02:04:39 +0100 | merijn | (~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 +0100 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
2024-11-01 02:14:32 +0100 | <dolio> | No. |
2024-11-01 02:15:02 +0100 | son0p | (~ff@190.254.147.212) (Remote host closed the connection) |
2024-11-01 02:15:08 +0100 | merijn | (~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 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 02:19:44 +0100 | spew | (~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 +0100 | merijn | (~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 +0100 | califax | (~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 +0100 | merijn | (~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 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-11-01 02:39:21 +0100 | gmg | (~user@user/gehmehgeh) (Ping timeout: 260 seconds) |
2024-11-01 02:41:32 +0100 | gmg | (~user@user/gehmehgeh) gehmehgeh |
2024-11-01 02:43:19 +0100 | califax | (~califax@user/califx) califx |
2024-11-01 02:48:21 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 02:52:40 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-01 03:00:07 +0100 | mantraofpie | (~mantraofp@user/mantraofpie) (Remote host closed the connection) |
2024-11-01 03:00:07 +0100 | chiselfuse | (~chiselfus@user/chiselfuse) (Remote host closed the connection) |
2024-11-01 03:00:27 +0100 | mantraofpie | (~mantraofp@user/mantraofpie) mantraofpie |
2024-11-01 03:00:48 +0100 | gmg | (~user@user/gehmehgeh) (Remote host closed the connection) |
2024-11-01 03:00:55 +0100 | chiselfuse | (~chiselfus@user/chiselfuse) chiselfuse |
2024-11-01 03:01:33 +0100 | gmg | (~user@user/gehmehgeh) gehmehgeh |
2024-11-01 03:03:39 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2024-11-01 03:03:44 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 03:04:07 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) ChaiTRex |
2024-11-01 03:08:46 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-11-01 03:16:55 +0100 | k_hachig_ | (~k_hachig@2607:fea8:351d:ef0:5054:ee1b:c12f:dd7d) k_hachig |
2024-11-01 03:17:15 +0100 | k_hachig_ | k_hachig |
2024-11-01 03:19:06 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 03:22:00 +0100 | Natch | (~natch@c-92-34-7-158.bbcust.telenor.se) (Ping timeout: 252 seconds) |
2024-11-01 03:23:57 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-11-01 03:24:58 +0100 | weary-traveler | (~user@user/user363627) user363627 |
2024-11-01 03:34:29 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 03:36:43 +0100 | Axman6 | (~Axman6@user/axman6) (Remote host closed the connection) |
2024-11-01 03:36:58 +0100 | Axman6 | (~Axman6@user/axman6) Axman6 |
2024-11-01 03:40:47 +0100 | lol_ | (~lol@2603:3016:1e01:b9c0:c43d:6fb:2607:cd8b) |
2024-11-01 03:41:26 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-01 03:44:43 +0100 | jcolanternpenter | (~lol@2603:3016:1e01:b9c0:d0c3:d4d0:7258:5a99) (Ping timeout: 252 seconds) |
2024-11-01 03:52:30 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 03:57:18 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-01 04:07:53 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 04:12:14 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-01 04:18:42 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Remote host closed the connection) |
2024-11-01 04:22:46 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 04:24:16 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds) |
2024-11-01 04:27:29 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-01 04:32:15 +0100 | Axma54801 | (~Axman6@user/axman6) Axman6 |
2024-11-01 04:33:00 +0100 | Axman6 | (~Axman6@user/axman6) (Ping timeout: 248 seconds) |
2024-11-01 04:36:27 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 04:37:14 +0100 | habib | (~habib@185.195.232.169) (Ping timeout: 260 seconds) |
2024-11-01 04:38:10 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 04:38:53 +0100 | Axman6 | (~Axman6@user/axman6) Axman6 |
2024-11-01 04:40:49 +0100 | Axma74595 | (~Axman6@user/axman6) Axman6 |
2024-11-01 04:40:51 +0100 | Axma54801 | (~Axman6@user/axman6) (Ping timeout: 250 seconds) |
2024-11-01 04:41:05 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 255 seconds) |
2024-11-01 04:43:04 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-01 04:43:27 +0100 | Axman6 | (~Axman6@user/axman6) (Ping timeout: 250 seconds) |
2024-11-01 04:53:32 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 04:56:18 +0100 | alphabitserial | (~alphabits@user/alphabitserial) alphabitserial |
2024-11-01 04:58:21 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-01 04:58:21 +0100 | td_ | (~td@i53870906.versanet.de) (Ping timeout: 252 seconds) |
2024-11-01 05:00:02 +0100 | td_ | (~td@i5387091D.versanet.de) |
2024-11-01 05:06:14 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2024-11-01 05:06:39 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) ChaiTRex |
2024-11-01 05:08:55 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 05:13:52 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-11-01 05:22:50 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2024-11-01 05:24:56 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 05:29:55 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-11-01 05:40:20 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 05:41:58 +0100 | alphabitserial | (~alphabits@user/alphabitserial) (Quit: goodnight!) |
2024-11-01 05:45:39 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-11-01 05:54:08 +0100 | libertyprime | (~libertypr@118-92-73-199.dsl.dyn.ihug.co.nz) libertyprime |
2024-11-01 05:55:41 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 05:55:51 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 06:00:24 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-11-01 06:00:24 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-11-01 06:18:04 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 06:23:12 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-11-01 06:24:42 +0100 | alp | (~alp@2001:861:e3d6:8f80:b811:e433:6175:d950) (Ping timeout: 252 seconds) |
2024-11-01 06:26:05 +0100 | bliminse | (~bliminse@user/bliminse) (Quit: leaving) |
2024-11-01 06:28:57 +0100 | rvalue- | (~rvalue@user/rvalue) rvalue |
2024-11-01 06:29:22 +0100 | rvalue | (~rvalue@user/rvalue) (Ping timeout: 248 seconds) |
2024-11-01 06:33:36 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 06:33:41 +0100 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) (Ping timeout: 248 seconds) |
2024-11-01 06:34:45 +0100 | rvalue- | rvalue |
2024-11-01 06:35:35 +0100 | Axma74595 | Axman6 |
2024-11-01 06:36:45 +0100 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) ezzieyguywuf |
2024-11-01 06:38:09 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-01 06:41:53 +0100 | bliminse | (~bliminse@user/bliminse) bliminse |
2024-11-01 06:44:46 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
2024-11-01 06:48:57 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 06:50:00 +0100 | k_hachig | (~k_hachig@2607:fea8:351d:ef0:5054:ee1b:c12f:dd7d) (Ping timeout: 276 seconds) |
2024-11-01 06:53:32 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-11-01 06:56:44 +0100 | misterfish | (~misterfis@84.53.85.146) misterfish |
2024-11-01 07:01:45 +0100 | k_hachig_ | (~k_hachig@2607:fea8:351d:ef0:68da:2df0:a70f:fa91) k_hachig |
2024-11-01 07:05:40 +0100 | benkard | (~mulk@pd95146e9.dip0.t-ipconnect.de) mulk |
2024-11-01 07:06:32 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 07:07:33 +0100 | mulk | (~mulk@pd95146e9.dip0.t-ipconnect.de) (Ping timeout: 265 seconds) |
2024-11-01 07:07:34 +0100 | benkard | mulk |
2024-11-01 07:07:35 +0100 | poscat | (~poscat@user/poscat) poscat |
2024-11-01 07:07:45 +0100 | poscat0x04 | (~poscat@user/poscat) (Ping timeout: 246 seconds) |
2024-11-01 07:08:19 +0100 | k_hachig_ | (~k_hachig@2607:fea8:351d:ef0:68da:2df0:a70f:fa91) (Ping timeout: 260 seconds) |
2024-11-01 07:11:24 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-01 07:16:00 +0100 | tcard_ | (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving) |
2024-11-01 07:21:56 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 07:32:21 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-01 07:35:09 +0100 | misterfish | (~misterfis@84.53.85.146) (Ping timeout: 260 seconds) |
2024-11-01 07:37:06 +0100 | tcard | (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) |
2024-11-01 07:41:53 +0100 | Natch | (~natch@c-92-34-7-158.bbcust.telenor.se) |
2024-11-01 07:43:17 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 07:47:50 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-01 07:58:40 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 08:00:00 +0100 | caconym | (~caconym@user/caconym) (Quit: bye) |
2024-11-01 08:00:42 +0100 | caconym | (~caconym@user/caconym) caconym |
2024-11-01 08:04:09 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 08:04:29 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) sord937 |
2024-11-01 08:05:47 +0100 | JamesMowery43 | (~JamesMowe@ip98-167-207-182.ph.ph.cox.net) (Quit: Ping timeout (120 seconds)) |
2024-11-01 08:08:56 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 265 seconds) |
2024-11-01 08:09:34 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-01 08:16:21 +0100 | mulk | (~mulk@pd95146e9.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2024-11-01 08:20:18 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 08:21:47 +0100 | alp | (~alp@2001:861:e3d6:8f80:ad12:d0e9:d071:fba7) |
2024-11-01 08:22:52 +0100 | mulk | (~mulk@pd95146e9.dip0.t-ipconnect.de) mulk |
2024-11-01 08:25:33 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-11-01 08:28:30 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2024-11-01 08:32:19 +0100 | Miroboru | (~myrvoll@178-164-114.82.3p.ntebredband.no) (Quit: Lost terminal) |
2024-11-01 08:35:40 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 08:40:16 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-01 08:40:28 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 08:44:57 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-11-01 08:44:59 +0100 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) Lord_of_Life |
2024-11-01 08:46:09 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds) |
2024-11-01 08:47:53 +0100 | Lord_of_Life_ | Lord_of_Life |
2024-11-01 08:49:05 +0100 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
2024-11-01 08:51:04 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 08:56:06 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-11-01 08:56:56 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-11-01 09:03:16 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 09:08:27 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-11-01 09:09:33 +0100 | weary-traveler | (~user@user/user363627) (Remote host closed the connection) |
2024-11-01 09:15:02 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac |
2024-11-01 09:18:14 +0100 | misterfish | (~misterfis@84.53.85.146) misterfish |
2024-11-01 09:18:37 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 09:20:14 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-11-01 09:23:42 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-11-01 09:25:30 +0100 | Leary | (~Leary@user/Leary/x-0910699) (Remote host closed the connection) |
2024-11-01 09:25:44 +0100 | Leary | (~Leary@user/Leary/x-0910699) Leary |
2024-11-01 09:26:52 +0100 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-11-01 09:26:56 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Client Quit) |
2024-11-01 09:29:37 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-11-01 09:33:37 +0100 | acidjnk_new | (~acidjnk@p200300d6e7283f30213745c1d38acbc7.dip0.t-ipconnect.de) acidjnk |
2024-11-01 09:34:01 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 09:39:00 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-11-01 09:40:57 +0100 | CiaoSen | (~Jura@2a05:5800:487:0:ca4b:d6ff:fec1:99da) CiaoSen |
2024-11-01 09:44:31 +0100 | k_hachig_ | (~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) k_hachig |
2024-11-01 09:49:22 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 09:50:12 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 09:51:53 +0100 | k_hachig_ | (~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) (Ping timeout: 265 seconds) |
2024-11-01 09:54:34 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 260 seconds) |
2024-11-01 09:56:19 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-01 10:00:17 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 10:01:27 +0100 | troydm | (~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 +0100 | Miroboru | (~myrvoll@178-164-114.82.3p.ntebredband.no) Miroboru |
2024-11-01 10:16:06 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2024-11-01 10:22:16 +0100 | Square2 | (~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 +0100 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 276 seconds) |
2024-11-01 10:59:52 +0100 | driib318 | (~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat) |
2024-11-01 11:00:32 +0100 | driib318 | (~driib@vmi931078.contaboserver.net) driib |
2024-11-01 11:09:52 +0100 | libertyprime | (~libertypr@118-92-73-199.dsl.dyn.ihug.co.nz) (Ping timeout: 252 seconds) |
2024-11-01 11:12:00 +0100 | Natch | (~natch@c-92-34-7-158.bbcust.telenor.se) (Ping timeout: 272 seconds) |
2024-11-01 11:14:14 +0100 | zmt00 | (~zmt00@user/zmt00) zmt00 |
2024-11-01 11:15:22 +0100 | zmt01 | (~zmt00@user/zmt00) zmt00 |
2024-11-01 11:16:18 +0100 | swamp_ | (~zmt00@user/zmt00) (Ping timeout: 248 seconds) |
2024-11-01 11:16:19 +0100 | lxsameer | (~lxsameer@Serene/lxsameer) lxsameer |
2024-11-01 11:16:45 +0100 | ubert | (~Thunderbi@178.115.51.39.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
2024-11-01 11:18:30 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 11:19:45 +0100 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 276 seconds) |
2024-11-01 11:21:49 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en) |
2024-11-01 11:22:06 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2024-11-01 11:22:45 +0100 | absence | (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 +0100 | morb | (~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 +0100 | chele | (~chele@user/chele) chele |
2024-11-01 11:32:58 +0100 | misterfish | (~misterfis@84.53.85.146) (Ping timeout: 252 seconds) |
2024-11-01 11:50:41 +0100 | k_hachig_ | (~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) k_hachig |
2024-11-01 11:56:29 +0100 | k_hachig_ | (~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) (Ping timeout: 260 seconds) |
2024-11-01 12:01:23 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en) |
2024-11-01 12:12:28 +0100 | sprotte24 | (~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 +0100 | morb | (~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 +0100 | misterfish | (~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 +0100 | weary-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 +0100 | lortabac | (~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 +0100 | morb | (~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 +0100 | merijn | (~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 +0100 | rvalue- | (~rvalue@user/rvalue) rvalue |
2024-11-01 12:40:47 +0100 | rvalue | (~rvalue@user/rvalue) (Ping timeout: 244 seconds) |
2024-11-01 12:43:24 +0100 | merijn | (~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 +0100 | rvalue- | 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 +0100 | Square | (~Square@user/square) Square |
2024-11-01 12:51:58 +0100 | CatGPT | catties |
2024-11-01 12:52:08 +0100 | <sprotte24> | bye |
2024-11-01 12:52:14 +0100 | sprotte24 | (~sprotte24@p200300d16f13bb00e9ebafc1049584f7.dip0.t-ipconnect.de) (Quit: Leaving) |
2024-11-01 12:55:18 +0100 | Square2 | (~Square4@user/square) (Ping timeout: 276 seconds) |
2024-11-01 12:56:49 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer) |
2024-11-01 12:57:37 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 12:58:53 +0100 | weary-traveler | (~user@user/user363627) (Remote host closed the connection) |
2024-11-01 13:02:04 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-11-01 13:02:29 +0100 | CiaoSen | (~Jura@2a05:5800:487:0:ca4b:d6ff:fec1:99da) (Ping timeout: 244 seconds) |
2024-11-01 13:02:37 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 13:05:52 +0100 | turlando | (~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 +0100 | morb | (~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 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac |
2024-11-01 13:12:25 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-11-01 13:14:58 +0100 | xff0x | (~xff0x@2405:6580:b080:900:26bf:a0f9:b4d:93d8) |
2024-11-01 13:29:49 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer) |
2024-11-01 13:38:37 +0100 | sawilagar | (~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 +0100 | euleritian | (~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 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 13:55:39 +0100 | euleritian | (~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 +0100 | morb | (~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 +0100 | Guest77 | (~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 +0100 | Xe | (~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 +0100 | Guest77 | (~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 +0100 | mulk | (~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 +0100 | slac68956 | (~slack1256@179.60.70.224) slack1256 |
2024-11-01 14:21:15 +0100 | mulk | (~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 +0100 | Xe | (~cadey@perl/impostor/xe) Xe |
2024-11-01 14:21:41 +0100 | <Square> | is available* |
2024-11-01 14:22:03 +0100 | slack1256 | (~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 +0100 | Square2 | (~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 +0100 | k_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 +0100 | k_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 +0100 | L29Ah | (~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 +0100 | ghoulpine | vulpine |
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 +0100 | vgtw | (~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 +0100 | L29Ah | (~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 +0100 | tired | (~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 +0100 | k_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 +0100 | vgtw | (~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 +0100 | Sgeo | (~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 +0100 | k_hachig_ | (~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) (Ping timeout: 260 seconds) |
2024-11-01 15:31:20 +0100 | Square2 | (~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 +0100 | vgtw | (~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 +0100 | vgtw | (~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 +0100 | tabemann | (~tabemann@2600:1700:7990:24e0:cb63:a13b:e8da:1b84) (Remote host closed the connection) |
2024-11-01 15:50:24 +0100 | tabemann | (~tabemann@2600:1700:7990:24e0:141f:cdda:2f28:e1cc) |
2024-11-01 15:53:31 +0100 | k_hachig_ | (~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) k_hachig |
2024-11-01 16:00:10 +0100 | k_hachig_ | (~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) (Ping timeout: 272 seconds) |
2024-11-01 16:10:15 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 16:12:17 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2024-11-01 16:13:42 +0100 | CiaoSen | (~Jura@2a05:5800:487:0:ca4b:d6ff:fec1:99da) CiaoSen |
2024-11-01 16:13:50 +0100 | misterfish | (~misterfis@31-161-39-137.biz.kpn.net) (Ping timeout: 252 seconds) |
2024-11-01 16:15:30 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 276 seconds) |
2024-11-01 16:16:09 +0100 | AlexZenon | (~alzenon@178.34.150.252) (Ping timeout: 276 seconds) |
2024-11-01 16:19:42 +0100 | Shelob | She |
2024-11-01 16:21:13 +0100 | ghoulguy | glguy |
2024-11-01 16:21:56 +0100 | AlexZenon | (~alzenon@178.34.150.252) |
2024-11-01 16:22:36 +0100 | econo_ | (uid147250@id-147250.tinside.irccloud.com) |
2024-11-01 16:24:16 +0100 | rvalue | (~rvalue@user/rvalue) (Read error: Connection reset by peer) |
2024-11-01 16:24:48 +0100 | rvalue | (~rvalue@user/rvalue) rvalue |
2024-11-01 16:25:41 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-11-01 16:29:10 +0100 | alp | (~alp@2001:861:e3d6:8f80:ad12:d0e9:d071:fba7) (Remote host closed the connection) |
2024-11-01 16:29:59 +0100 | alp | (~alp@2001:861:e3d6:8f80:394e:fa36:1a51:e8c1) |
2024-11-01 16:30:42 +0100 | dostoyevsky2 | (~sck@user/dostoyevsky2) (Ping timeout: 252 seconds) |
2024-11-01 16:31:42 +0100 | alp | (~alp@2001:861:e3d6:8f80:394e:fa36:1a51:e8c1) (Remote host closed the connection) |
2024-11-01 16:32:31 +0100 | alp | (~alp@2001:861:e3d6:8f80:d0dc:c5e7:387e:3419) |
2024-11-01 16:32:39 +0100 | dostoyevsky2 | (~sck@user/dostoyevsky2) dostoyevsky2 |
2024-11-01 16:34:13 +0100 | alp | (~alp@2001:861:e3d6:8f80:d0dc:c5e7:387e:3419) (Remote host closed the connection) |
2024-11-01 16:42:53 +0100 | k_hachig_ | (~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) k_hachig |
2024-11-01 16:56:08 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2) |
2024-11-01 17:04:56 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Ping timeout: 255 seconds) |
2024-11-01 17:05:47 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 17:10:26 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 248 seconds) |
2024-11-01 17:16:09 +0100 | euleritian | (~euleritia@176.2.67.66) (Ping timeout: 260 seconds) |
2024-11-01 17:20:45 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-11-01 17:23:12 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-11-01 17:28:08 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Read error: Connection reset by peer) |
2024-11-01 17:28:15 +0100 | comerijn | (~merijn@77.242.116.146) merijn |
2024-11-01 17:31:16 +0100 | stiell_ | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds) |
2024-11-01 17:32:15 +0100 | stiell_ | (~stiell@gateway/tor-sasl/stiell) stiell |
2024-11-01 17:32:55 +0100 | k_hachig_ | k_hachig |
2024-11-01 17:33:19 +0100 | haskellbridge | (~hackager@syn-024-093-192-219.res.spectrum.com) (Remote host closed the connection) |
2024-11-01 17:35:29 +0100 | CiaoSen | (~Jura@2a05:5800:487:0:ca4b:d6ff:fec1:99da) (Ping timeout: 248 seconds) |
2024-11-01 17:46:13 +0100 | cptaffe | (~cptaffe@user/cptaffe) (Ping timeout: 252 seconds) |
2024-11-01 17:46:51 +0100 | cptaffe | (~cptaffe@user/cptaffe) cptaffe |
2024-11-01 17:47:41 +0100 | mulk | (~mulk@pd95146e9.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
2024-11-01 17:49:32 +0100 | mulk | (~mulk@pd95146e9.dip0.t-ipconnect.de) mulk |
2024-11-01 17:58:10 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 18:00:31 +0100 | haskellbridge | (~hackager@syn-024-093-192-219.res.spectrum.com) hackager |
2024-11-01 18:00:31 +0100 | ChanServ | +v haskellbridge |
2024-11-01 18:03:02 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 272 seconds) |
2024-11-01 18:04:05 +0100 | alp | (~alp@2001:861:e3d6:8f80:897b:546a:473c:28dc) |
2024-11-01 18:08:51 +0100 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) tzh |
2024-11-01 18:10:21 +0100 | Natch | (~natch@c-92-34-7-158.bbcust.telenor.se) |
2024-11-01 18:12:30 +0100 | comerijn | (~merijn@77.242.116.146) (Ping timeout: 276 seconds) |
2024-11-01 18:13:51 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
2024-11-01 18:21:44 +0100 | ubert | (~Thunderbi@178.115.51.39.wireless.dyn.drei.com) ubert |
2024-11-01 18:24:02 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 18:29:05 +0100 | sprotte24 | (~sprotte24@134.245.44.89) |
2024-11-01 18:29:14 +0100 | sawilagar | (~sawilagar@user/sawilagar) (Remote host closed the connection) |
2024-11-01 18:29:48 +0100 | sawilagar | (~sawilagar@user/sawilagar) sawilagar |
2024-11-01 18:30:58 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-11-01 18:33:27 +0100 | Square | (~Square@user/square) (Ping timeout: 252 seconds) |
2024-11-01 18:35:02 +0100 | tired | (~tired@user/tired) (Remote host closed the connection) |
2024-11-01 18:36:19 +0100 | tired | (~tired@user/tired) tired |
2024-11-01 18:41:37 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Ping timeout: 248 seconds) |
2024-11-01 18:42:30 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 18:46:17 +0100 | libertyprime | (~libertypr@118-92-73-199.dsl.dyn.ihug.co.nz) libertyprime |
2024-11-01 18:48:12 +0100 | tired | (~tired@user/tired) (Quit: /) |
2024-11-01 18:48:29 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-11-01 18:52:41 +0100 | youthlic | (~Thunderbi@user/youthlic) youthlic |
2024-11-01 18:57:37 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 18:59:37 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 19:00:24 +0100 | nurupo | (~nurupo.ga@user/nurupo) (Quit: nurupo.ga) |
2024-11-01 19:00:41 +0100 | nurupo | (~nurupo.ga@user/nurupo) nurupo |
2024-11-01 19:02:03 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-11-01 19:18:05 +0100 | youthlic | (~Thunderbi@user/youthlic) (Remote host closed the connection) |
2024-11-01 19:20:44 +0100 | youthlic | (~Thunderbi@user/youthlic) youthlic |
2024-11-01 19:24:30 +0100 | SlackCoder | (~SlackCode@161.199.135.130) SlackCoder |
2024-11-01 19:27:25 +0100 | gawen | (~gawen@user/gawen) (Quit: cya) |
2024-11-01 19:27:37 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 19:28:09 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) wootehfoot |
2024-11-01 19:32:55 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-11-01 19:35:20 +0100 | sawilagar | (~sawilagar@user/sawilagar) (Remote host closed the connection) |
2024-11-01 19:35:36 +0100 | gawen | (~gawen@user/gawen) gawen |
2024-11-01 19:35:53 +0100 | sawilagar | (~sawilagar@user/sawilagar) sawilagar |
2024-11-01 19:40:09 +0100 | euphores | (~SASL_euph@user/euphores) (Quit: Leaving.) |
2024-11-01 19:45:20 +0100 | euphores | (~SASL_euph@user/euphores) euphores |
2024-11-01 19:45:59 +0100 | Nachtgespenst | (~user@user/siracusa) (Quit: Bye!) |
2024-11-01 19:48:07 +0100 | JuanDaugherty | (~juan@user/JuanDaugherty) JuanDaugherty |
2024-11-01 19:50:22 +0100 | gawen | (~gawen@user/gawen) (Quit: cya) |
2024-11-01 19:51:43 +0100 | GdeVolpiano | (~GdeVolpia@user/GdeVolpiano) (Read error: Connection reset by peer) |
2024-11-01 19:53:10 +0100 | sawilagar | (~sawilagar@user/sawilagar) (Read error: Connection reset by peer) |
2024-11-01 19:54:11 +0100 | stiell_ | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds) |
2024-11-01 19:55:24 +0100 | misterfish | (~misterfis@84.53.85.146) misterfish |
2024-11-01 19:57:22 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
2024-11-01 19:58:33 +0100 | gawen | (~gawen@user/gawen) gawen |
2024-11-01 20:00:02 +0100 | caconym | (~caconym@user/caconym) (Quit: bye) |
2024-11-01 20:00:39 +0100 | caconym | (~caconym@user/caconym) caconym |
2024-11-01 20:02:09 +0100 | michalz | (~michalz@185.246.207.193) |
2024-11-01 20:04:00 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-11-01 20:06:41 +0100 | stiell_ | (~stiell@gateway/tor-sasl/stiell) stiell |
2024-11-01 20:09:09 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 20:10:38 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2024-11-01 20:12:27 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Ping timeout: 246 seconds) |
2024-11-01 20:14:46 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-11-01 20:15:17 +0100 | euleritian | (~euleritia@dynamic-176-002-141-094.176.2.pool.telefonica.de) |
2024-11-01 20:24:43 +0100 | Everything | (~Everythin@195.138.86.118) Everything |
2024-11-01 20:24:55 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 20:26:45 +0100 | SlackCoder | (~SlackCode@161.199.135.130) (Quit: Leaving) |
2024-11-01 20:29:02 +0100 | Digit | (~user@user/digit) (Ping timeout: 252 seconds) |
2024-11-01 20:34:31 +0100 | Everything | (~Everythin@195.138.86.118) (Ping timeout: 252 seconds) |
2024-11-01 20:35:18 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 20:35:21 +0100 | Everything | (~Everythin@94.153.29.90) Everything |
2024-11-01 20:35:58 +0100 | troydm | (~troydm@user/troydm) troydm |
2024-11-01 20:38:35 +0100 | troydm | (~troydm@user/troydm) (Client Quit) |
2024-11-01 20:38:51 +0100 | troydm | (~troydm@user/troydm) troydm |
2024-11-01 20:39:39 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-11-01 20:40:22 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod |
2024-11-01 20:43:14 +0100 | Digit | (~user@user/digit) Digit |
2024-11-01 20:49:09 +0100 | <zzz> | ok can anyone help me make sense of these results? https://paste.jrvieira.com/1730490476766 |
2024-11-01 20:49:24 +0100 | <zzz> | i'm trying to learn about seq/deepseq |
2024-11-01 20:50:06 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection) |
2024-11-01 20:50:33 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) sord937 |
2024-11-01 20:51:00 +0100 | <zzz> | my initial doubts are 1. why is force more expensive 2. why is rnf that optimized? |
2024-11-01 20:51:30 +0100 | <zzz> | (3. and why is force not optimized at all) |
2024-11-01 20:53:01 +0100 | <zzz> | (...compared to the others) |
2024-11-01 20:55:03 +0100 | <EvanR> | :t rnf |
2024-11-01 20:55:04 +0100 | <lambdabot> | NFData a => a -> () |
2024-11-01 20:55:06 +0100 | <EvanR> | :force |
2024-11-01 20:55:06 +0100 | <Leary> | zzz: At a guess: the first two can evaluate streamingly, but the version with force has to hold onto the whole thing, doing allocation and/or suffering under GC. |
2024-11-01 20:55:14 +0100 | <EvanR> | :t force |
2024-11-01 20:55:15 +0100 | <lambdabot> | NFData a => a -> a |
2024-11-01 20:55:40 +0100 | <EvanR> | since you don't use the result of rnf for anything, would the optimizer just discard it entirely |
2024-11-01 20:55:52 +0100 | <tomsmeding> | EvanR: it's passed to evaluate |
2024-11-01 20:55:59 +0100 | <EvanR> | oh |
2024-11-01 20:56:15 +0100 | <zzz> | yes, if i didn't use evaluate it would be discarded |
2024-11-01 20:57:33 +0100 | tired | (~tired@user/tired) tired |
2024-11-01 20:59:49 +0100 | <zzz> | these were compiled with -O2 btw |
2024-11-01 21:01:01 +0100 | <tomsmeding> | zzz: highly suggestive is that System timing for the 'force' variants |
2024-11-01 21:01:07 +0100 | <tomsmeding> | that indeed points to lots of memory IO |
2024-11-01 21:01:25 +0100 | <tomsmeding> | perhaps even swapping; did you check that it all fits in RAM? |
2024-11-01 21:03:38 +0100 | <tomsmeding> | zzz: my cpu is clearly faster than yours, but I get different relative results too https://paste.tomsmeding.com/1fnOybw3 |
2024-11-01 21:04:55 +0100 | <tomsmeding> | `./test 3 +RTS -s` confirms that GC is the issue with the third version, look at that productivity number |
2024-11-01 21:05:08 +0100 | <zzz> | tomsmeding: good catch |
2024-11-01 21:05:21 +0100 | <tomsmeding> | maximum residency for `./test 1` and `./test 2` is <40kb |
2024-11-01 21:05:33 +0100 | <tomsmeding> | so Leary: good guess |
2024-11-01 21:06:16 +0100 | <tomsmeding> | so I can't reproduce the difference between deepseq and rnf |
2024-11-01 21:06:55 +0100 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en) |
2024-11-01 21:07:10 +0100 | <tomsmeding> | zzz: if I run with ghc 9.10 instead of 9.4 then all three run fast |
2024-11-01 21:07:19 +0100 | <tomsmeding> | on -O2 |
2024-11-01 21:08:11 +0100 | <tomsmeding> | scratch that, was testing the wrong thing, ghc version is irrelevant |
2024-11-01 21:08:46 +0100 | <zzz> | i'm using 9.10.1 |
2024-11-01 21:08:53 +0100 | <zzz> | ah ok |
2024-11-01 21:09:44 +0100 | <EvanR> | force x = x `deepseq` x = rnf x `seq` x. So 'evaluate'ing force something involves evaluating something to some extent twice |
2024-11-01 21:09:59 +0100 | <tomsmeding> | 'evaluate' only does WHNF |
2024-11-01 21:10:13 +0100 | <EvanR> | sure but it means you have to still have it when it's time to do that |
2024-11-01 21:10:23 +0100 | <EvanR> | meanwhile it's being deepseqqed |
2024-11-01 21:10:34 +0100 | <tomsmeding> | that's... a fair point: you have to hold on to the root of the data structure to WHNF it |
2024-11-01 21:10:38 +0100 | <tomsmeding> | hence the memory use |
2024-11-01 21:10:48 +0100 | <tomsmeding> | zzz: that's version 3 explained |
2024-11-01 21:11:00 +0100 | <tomsmeding> | zzz: can you reproduce the difference between 1 and 2 with my code? |
2024-11-01 21:11:12 +0100 | <monochrom> | Nah the extra seq is at worst just an extra check "oh this is already a value, moving on". |
2024-11-01 21:11:34 +0100 | <tomsmeding> | monochrom: sure, but does not keep a reference to the value? |
2024-11-01 21:11:44 +0100 | <EvanR> | yes it's cheap but you can't have discarded the entire thing prior to the simple check |
2024-11-01 21:11:56 +0100 | <monochrom> | "foo seq bar" returns a pointer to bar but not foo. |
2024-11-01 21:11:59 +0100 | <tomsmeding> | mind that this is evaluate, hence seq#, not seq -- not sure if that matters |
2024-11-01 21:12:11 +0100 | <EvanR> | foo and bar are the same object in this case |
2024-11-01 21:12:25 +0100 | <monochrom> | OK OK this one is "... seq x" so yeah you're right. |
2024-11-01 21:12:56 +0100 | <tomsmeding> | monochrom: and if it really doesn't matter, then how do you explain 'evaluate (force x) >> pure ()' taking more than 4x as long as 'evaluate (rnf x)' and thrashing the GC meanwhile? :p |
2024-11-01 21:13:27 +0100 | <EvanR> | it's a situation like this that I half expect ghc to pull some kind of magic and be efficient regardless of common sense |
2024-11-01 21:13:34 +0100 | <tomsmeding> | we're talking maximum residency of 2 GB and productivity of <25%, versus maximum residency of 40KB and productivity >99% |
2024-11-01 21:13:38 +0100 | <EvanR> | like scanl with tuples |
2024-11-01 21:13:46 +0100 | <dolio> | evaluate returns the value it evaluates, too. |
2024-11-01 21:15:30 +0100 | <monochrom> | GHC out-smarts common sense in some cases and defies common senses in some others. Also people hold opposite "common" senses. |
2024-11-01 21:16:46 +0100 | <monochrom> | Stepping back a step, people even hold opposite opinions on whether you should let GHC optimize or you should distrust GHC and optimize by hand. |
2024-11-01 21:17:35 +0100 | <haskellbridge> | <zwro> "the problem with common sense is that it's not common at all" — someone |
2024-11-01 21:18:41 +0100 | <zzz> | tomsmeding: |
2024-11-01 21:18:56 +0100 | <zzz> | Benchmark 1: ./hs/test 1 |
2024-11-01 21:18:56 +0100 | <zzz> | Time (mean ± σ): 4.171 s ± 0.038 s [User: 4.115 s, System: 0.051 s] |
2024-11-01 21:18:59 +0100 | <zzz> | Range (min … max): 4.106 s … 4.249 s 10 runs |
2024-11-01 21:19:04 +0100 | <zzz> | Benchmark 2: ./hs/test 2 |
2024-11-01 21:19:06 +0100 | <zzz> | Time (mean ± σ): 4.208 s ± 0.048 s [User: 4.195 s, System: 0.006 s] |
2024-11-01 21:19:09 +0100 | <zzz> | Range (min … max): 4.137 s … 4.276 s 10 runs |
2024-11-01 21:19:44 +0100 | <tomsmeding> | okay so they are at least the same but 1. why are they slower than your code, and 2. what CPU is that, I know mine is fairly fast but _this_ fast? |
2024-11-01 21:20:03 +0100 | <tomsmeding> | my CPU is like 7x as fast as yours? That feels unlikely |
2024-11-01 21:20:19 +0100 | <dolio> | I don't know about that. |
2024-11-01 21:20:45 +0100 | <tomsmeding> | zzz: if it's a laptop, are you sure it's not throttling? Is the power cable attached? If it's intel, is turbo boost enabled and does the cpu reach similar frequencies for both tests? |
2024-11-01 21:21:08 +0100 | <zzz> | tomsmeding: old hp laptop, core i5 7th gen |
2024-11-01 21:21:18 +0100 | <tomsmeding> | what model number? |
2024-11-01 21:21:24 +0100 | <dolio> | I was helping someone out a week or so ago, and they were doing something on their laptop, and my 10 year old desktop might have been that much faster when I tried it. |
2024-11-01 21:21:36 +0100 | <tomsmeding> | O.o |
2024-11-01 21:21:52 +0100 | <monochrom> | I was hoping "brand new laptop using the brand new intel lake cpus so yeah it's a well-known regression" >:)\ |
2024-11-01 21:22:23 +0100 | <zzz> | tomsmeding: not sure, it's not mine. sec |
2024-11-01 21:22:54 +0100 | <zzz> | HP ProBook 440 G4 |
2024-11-01 21:23:36 +0100 | <EvanR> | "did you check if it's plugged in" |
2024-11-01 21:23:38 +0100 | <tomsmeding> | that can still mean various CPUs it seems |
2024-11-01 21:24:12 +0100 | <zzz> | plugged in, not sure if it's throttling |
2024-11-01 21:24:20 +0100 | <zzz> | 4 cores |
2024-11-01 21:24:26 +0100 | <tomsmeding> | but yeah with a CPU of that class I would not expect a 7x difference, but I guess it could be |
2024-11-01 21:24:48 +0100 | <monochrom> | OK now I'm hoping "oh it only has 0.5GB RAM so yeah it's thrashing" |
2024-11-01 21:24:54 +0100 | <EvanR> | intel celery |
2024-11-01 21:25:06 +0100 | <tomsmeding> | monochrom: that would be for case 3 only |
2024-11-01 21:25:10 +0100 | <tomsmeding> | case 1 and 2 run lean |
2024-11-01 21:25:47 +0100 | <zzz> | tomsmeding: i don't understand why in your test the difference between deepseq and rnf disappears |
2024-11-01 21:26:18 +0100 | <monochrom> | What if the web browser already eats up 0.4999GB and the OS eats up the rest :) |
2024-11-01 21:26:57 +0100 | <monochrom> | OK I'll stop until I think up a better joke! |
2024-11-01 21:27:47 +0100 | <zzz> | monochrom: 8GB Ram :) |
2024-11-01 21:28:08 +0100 | <tomsmeding> | zzz: if I compile your code as-is (but do put it all in one file), I get similar timings too |
2024-11-01 21:28:26 +0100 | <tomsmeding> | are you perhaps testing one version with it all in one file and one version split over multiple files? |
2024-11-01 21:28:52 +0100 | <monochrom> | That is strange. |
2024-11-01 21:29:12 +0100 | <zzz> | tomsmeding: oh, i did that so i could easily share it. i ran separate files |
2024-11-01 21:29:28 +0100 | <tomsmeding> | zzz: https://paste.tomsmeding.com/WGmJJRuD |
2024-11-01 21:29:29 +0100 | <zzz> | one file for each version |
2024-11-01 21:29:56 +0100 | <zzz> | i consistently get better results for compiled rnf |
2024-11-01 21:30:17 +0100 | <tomsmeding> | can you try my last paste? |
2024-11-01 21:30:41 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-11-01 21:30:48 +0100 | todi | (~todi@p57803331.dip0.t-ipconnect.de) todi |
2024-11-01 21:31:02 +0100 | <zzz> | y |
2024-11-01 21:32:48 +0100 | GdeVolpiano | (~GdeVolpia@user/GdeVolpiano) GdeVolpiano |
2024-11-01 21:37:36 +0100 | <zzz> | https://paste.jrvieira.com/1730493448663 |
2024-11-01 21:38:03 +0100 | zzz | confused |
2024-11-01 21:39:22 +0100 | <tomsmeding> | can you reproduce your original measurements :p |
2024-11-01 21:39:31 +0100 | <zzz> | yes |
2024-11-01 21:39:41 +0100 | <zzz> | ok wait. trying one thing |
2024-11-01 21:40:04 +0100 | <tomsmeding> | perhaps ghc is less eager to inline across modules, and in one stuff gets inlined and in the other it doesn't? |
2024-11-01 21:40:50 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
2024-11-01 21:41:27 +0100 | <zzz> | ok this is weird. let me doublecheck something |
2024-11-01 21:41:51 +0100 | <tomsmeding> | zzz: what is also confusing is how this one takes 1.3 seconds (which is about 2x as slow as my machine, which is quite to be expected given the cpu freq + age difference), but the previous one with the \case was 7x as slow as my machine |
2024-11-01 21:41:56 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 21:42:19 +0100 | <tomsmeding> | they are within 5% of each other on my machine |
2024-11-01 21:43:52 +0100 | <zzz> | ok now i'm getting similar results |
2024-11-01 21:44:10 +0100 | <tomsmeding> | (my CPU is 3 generations newer (10th gen) and runs at ~160% the frequency (it maxes at 5GHz); together that neatly explains mine being 2x as fast as yours) |
2024-11-01 21:45:00 +0100 | <zzz> | i need to go grab something to eat. in the meantime i will leave hyperfine running |
2024-11-01 21:45:46 +0100 | <tomsmeding> | the measurements are quite reliable here, individual executions differ maybe 5%; but the differences we're looking at are 100% or more, so hyperfine is a luxury :p |
2024-11-01 21:49:08 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-11-01 21:52:56 +0100 | euandreh | (~Thunderbi@2804:d59:891b:2c00:896a:156a:7a25:3f91) euandreh |
2024-11-01 21:56:06 +0100 | Feuermagier | (~Feuermagi@user/feuermagier) Feuermagier |
2024-11-01 21:58:27 +0100 | Feuermagier | (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
2024-11-01 21:58:38 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 21:58:49 +0100 | Feuermagier | (~Feuermagi@user/feuermagier) Feuermagier |
2024-11-01 21:59:57 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 22:03:10 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 265 seconds) |
2024-11-01 22:04:20 +0100 | hgolden__ | (~hgolden@static-198-44-129-83.cust.tzulo.com) hgolden |
2024-11-01 22:06:43 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla |
2024-11-01 22:06:56 +0100 | hgolden_ | (~hgolden@static-198-44-129-51.cust.tzulo.com) (Ping timeout: 252 seconds) |
2024-11-01 22:08:00 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-11-01 22:10:08 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 22:14:37 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-01 22:25:31 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 22:29:47 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-11-01 22:29:54 +0100 | lxsameer | (~lxsameer@Serene/lxsameer) (Ping timeout: 276 seconds) |
2024-11-01 22:30:43 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 22:35:27 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-11-01 22:39:44 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-11-01 22:40:52 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 22:41:28 +0100 | michalz | (~michalz@185.246.207.193) (Remote host closed the connection) |
2024-11-01 22:41:35 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-11-01 22:45:26 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-11-01 22:46:30 +0100 | k_hachig | (~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) (Ping timeout: 260 seconds) |
2024-11-01 22:48:29 +0100 | k_hachig_ | (~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) k_hachig |
2024-11-01 22:49:56 +0100 | Everything | (~Everythin@94.153.29.90) (Quit: leaving) |
2024-11-01 22:56:17 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 23:00:49 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-11-01 23:03:24 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-11-01 23:04:27 +0100 | sprotte24_ | (~sprotte24@p200300d16f13bb00e504a10a2d09d14b.dip0.t-ipconnect.de) |
2024-11-01 23:08:17 +0100 | sprotte24 | (~sprotte24@134.245.44.89) (Ping timeout: 248 seconds) |
2024-11-01 23:08:58 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2024-11-01 23:09:54 +0100 | <zzz> | tomsmeding: i'm getting consistent results now https://paste.jrvieira.com/1730498979640 |
2024-11-01 23:10:40 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-11-01 23:11:08 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 23:11:53 +0100 | sprotte24_ | (~sprotte24@p200300d16f13bb00e504a10a2d09d14b.dip0.t-ipconnect.de) (Quit: Leaving) |
2024-11-01 23:13:07 +0100 | <tomsmeding> | zzz: what was wrong before? |
2024-11-01 23:15:08 +0100 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-11-01 23:16:03 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-11-01 23:17:10 +0100 | k_hachig_ | (~k_hachig@2607:fea8:351d:ef0:901a:fefb:e87f:78b3) (Quit: WeeChat 4.4.2) |
2024-11-01 23:18:49 +0100 | sadmax | (~user@64.130.91.66) |
2024-11-01 23:21:36 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 272 seconds) |
2024-11-01 23:26:31 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-11-01 23:27:36 +0100 | JuanDaugherty | (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
2024-11-01 23:28:44 +0100 | Nachtgespenst | (~user@user/siracusa) siracusa |
2024-11-01 23:29:12 +0100 | misterfish | (~misterfis@84.53.85.146) (Ping timeout: 272 seconds) |