2024-09-28 00:01:30 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-09-28 00:03:12 +0200 | ft | (~ft@p4fc2acce.dip0.t-ipconnect.de) (Quit: Lost terminal) |
2024-09-28 00:05:07 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 244 seconds) |
2024-09-28 00:06:03 +0200 | ft | (~ft@p4fc2acce.dip0.t-ipconnect.de) ft |
2024-09-28 00:06:46 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2024-09-28 00:09:30 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-09-28 00:09:53 +0200 | ski | . o O ( "What is a Naperian Container?" by Peter Hancock in 2005-06-19 at <https://web.archive.org/web/20170313140037/http://sneezy.cs.nott.ac.uk/containers/blog/?p=14> ) |
2024-09-28 00:12:43 +0200 | polyphem | (~rod@p4fc2ccf6.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2024-09-28 00:12:53 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-09-28 00:15:45 +0200 | Rembane | (~Rembane@user/Rembane) (Quit: WeeChat 4.1.1) |
2024-09-28 00:16:11 +0200 | gioyik | (~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 4.4.2) |
2024-09-28 00:19:24 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-09-28 00:19:36 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-09-28 00:20:06 +0200 | irssi | (~Rembane@user/Rembane) Rembane |
2024-09-28 00:21:09 +0200 | irssi | Rembane |
2024-09-28 00:23:50 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 255 seconds) |
2024-09-28 00:24:10 +0200 | <monochrom> | A functor F that is isomorphic to (->)I for some index set/type I. The most familiar example is Stream as (->)ℕ. Another one is a finite example like "data Pair a = P a a" being (->)Bool. |
2024-09-28 00:26:56 +0200 | <monochrom> | Bool->X (for example) is like X^Bool, exponentiation, so going from Bool->X to X is like logarithm. Logarithm is from Napier, so "Naperian". |
2024-09-28 00:27:53 +0200 | <monochrom> | Err no, going from Bool->X to Bool is logarithm. |
2024-09-28 00:29:07 +0200 | <EvanR> | ok there's an index type or space |
2024-09-28 00:29:26 +0200 | <monochrom> | or in general, given F X, you ask what's I, and the answer is log(F X) = log(X^I) = I. |
2024-09-28 00:29:29 +0200 | symdrome | (~user@2804:1e78:2202:2220::416) symdrome |
2024-09-28 00:29:59 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-09-28 00:30:02 +0200 | <monochrom> | If you say "but that's just Reader" or "but that's just representable functor", you're right. :) |
2024-09-28 00:31:37 +0200 | <EvanR> | dependency injection functor |
2024-09-28 00:31:49 +0200 | <monochrom> | But in practice, people use the special name "Naperian" to emphasize that they also provide you with the type I and the functions going between F X and I->X. |
2024-09-28 00:33:12 +0200 | <monochrom> | https://www.cs.ox.ac.uk/publications/publication10857-abstract.html is a paper I particularly like about this (and some other stuff). |
2024-09-28 00:34:24 +0200 | <monochrom> | or simply code on hackage: https://hackage.haskell.org/package/naperian or https://hackage.haskell.org/package/Naperian |
2024-09-28 00:35:45 +0200 | <int-e> | all you need for memoization (that wheel must have been reinvented a million times) |
2024-09-28 00:35:59 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
2024-09-28 00:36:55 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-09-28 00:38:27 +0200 | vanishingideal | (~vanishing@user/vanishingideal) (Ping timeout: 276 seconds) |
2024-09-28 00:40:20 +0200 | poxel | (~lennart@user/poxel) (Quit: WeeChat 4.4.2) |
2024-09-28 00:40:39 +0200 | symdrome | (~user@2804:1e78:2202:2220::416) (Remote host closed the connection) |
2024-09-28 00:41:43 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-09-28 00:52:36 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-09-28 00:54:37 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-09-28 00:54:43 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds) |
2024-09-28 00:55:03 +0200 | gmg | (~user@user/gehmehgeh) gehmehgeh |
2024-09-28 00:58:43 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 245 seconds) |
2024-09-28 01:00:24 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-09-28 01:06:06 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-09-28 01:09:44 +0200 | Inst | (~Inst@user/Inst) (Ping timeout: 255 seconds) |
2024-09-28 01:11:26 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2024-09-28 01:11:48 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-09-28 01:11:58 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-09-28 01:14:21 +0200 | troojg | (~troojg@user/troojg) troojg |
2024-09-28 01:17:50 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
2024-09-28 01:21:46 +0200 | <monochrom> | And https://www.vex.net/~trebla/tmp/Loeb.hs is me linking up the "memoFix" kind of memoization with the Löb kind by taking log and changing argument order. :) |
2024-09-28 01:22:51 +0200 | alp_ | (~alp@2001:861:e3d6:8f80:995f:117d:7c12:db9c) (Remote host closed the connection) |
2024-09-28 01:27:26 +0200 | <monochrom> | This is a bad dad joke? We have tab :: (I -> a) -> F a, can I call its inverse bat :: F a -> I -> a ? |
2024-09-28 01:28:29 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
2024-09-28 01:28:37 +0200 | <int-e> | memoize = lookup . tabulate -- my own boring pet names |
2024-09-28 01:29:03 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-09-28 01:31:10 +0200 | <monochrom> | They are too long. :) |
2024-09-28 01:31:33 +0200 | machinedgod | (~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 248 seconds) |
2024-09-28 01:32:04 +0200 | <EvanR> | tabulate is a good word |
2024-09-28 01:32:25 +0200 | <EvanR> | for a common or should be commonly understood operation |
2024-09-28 01:32:38 +0200 | <monochrom> | I stole it from the Hutton paper. :) But probably Hutton stole in from prior work, too. |
2024-09-28 01:32:40 +0200 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess |
2024-09-28 01:32:59 +0200 | <monochrom> | I will settle for infix (!) for the inverse. |
2024-09-28 01:33:33 +0200 | <EvanR> | I always felt like ! and !! meant the lookup was liable to crash |
2024-09-28 01:33:41 +0200 | <EvanR> | which isn't the case here |
2024-09-28 01:33:48 +0200 | <monochrom> | (which is also very guessable for people who have used Map and Vector etc) |
2024-09-28 01:34:06 +0200 | <monochrom> | Right, this is a safe total lookup :) |
2024-09-28 01:34:47 +0200 | <EvanR> | a roadsign for something totally safe ... probably not a thing |
2024-09-28 01:34:56 +0200 | <monochrom> | haha |
2024-09-28 01:35:08 +0200 | <EvanR> | empty sign |
2024-09-28 01:35:28 +0200 | <int-e> | . o O ( sign reading "eyes on the road" ) |
2024-09-28 01:35:39 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-09-28 01:35:51 +0200 | <EvanR> | if you're close enough to read this back the hell off |
2024-09-28 01:39:06 +0200 | EvanR | (~EvanR@user/evanr) (Quit: Leaving) |
2024-09-28 01:41:51 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-09-28 01:43:19 +0200 | acidjnk | (~acidjnk@p200300d6e72cfb641041a00b3f8f8460.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2024-09-28 01:43:27 +0200 | sourcetarius | (~sourcetar@user/sourcetarius) sourcetarius |
2024-09-28 01:46:14 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-09-28 01:46:32 +0200 | troydm | (~troydm@user/troydm) troydm |
2024-09-28 01:48:26 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 255 seconds) |
2024-09-28 01:57:16 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-09-28 02:01:19 +0200 | troojg | (~troojg@user/troojg) (Ping timeout: 264 seconds) |
2024-09-28 02:08:21 +0200 | nitrix | (~nitrix@user/meow/nitrix) (Quit: ZNC 1.8.2 - https://znc.in) |
2024-09-28 02:09:26 +0200 | nitrix | (~nitrix@user/meow/nitrix) nitrix |
2024-09-28 02:15:18 +0200 | CrunchyFlakes | (~CrunchyFl@31.19.233.78) (Read error: Connection reset by peer) |
2024-09-28 02:17:38 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-09-28 02:18:32 +0200 | CrunchyFlakes | (~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) |
2024-09-28 02:19:58 +0200 | spew | (~spew@201.141.99.170) (Quit: spew) |
2024-09-28 02:23:05 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 255 seconds) |
2024-09-28 02:26:17 +0200 | raehik | (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) raehik |
2024-09-28 02:30:12 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-09-28 02:35:02 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-09-28 02:37:13 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-09-28 02:40:22 +0200 | <monochrom> | Yes! "join s = zipWith (!!) s [0..]" for the stream monad (representable by ℕ) is generalizable to all representable functors as: join m = liftA2 lookup m (tabulate id). |
2024-09-28 02:41:32 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds) |
2024-09-28 02:46:01 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-09-28 02:51:13 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-09-28 02:51:31 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 252 seconds) |
2024-09-28 03:01:48 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-09-28 03:02:14 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-09-28 03:06:34 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-09-28 03:07:28 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 245 seconds) |
2024-09-28 03:12:16 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-09-28 03:15:19 +0200 | arahael | (~arahael@user/arahael) (Ping timeout: 260 seconds) |
2024-09-28 03:17:36 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-09-28 03:22:29 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-09-28 03:24:55 +0200 | <jackdk> | monochrom: if package `bifunctors` can have `Biff` and `Tannen`, as well as `Clown`s to the left and `Joker`s to the right, then you can do whatever you want. |
2024-09-28 03:26:19 +0200 | <monochrom> | haha |
2024-09-28 03:32:03 +0200 | vincent42 | (uid574193@id-574193.hampstead.irccloud.com) |