Newest at the top
| 2025-12-16 17:05:33 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
| 2025-12-16 17:01:37 +0100 | fp | (~Thunderbi@130.233.70.102) (Quit: fp) |
| 2025-12-16 16:59:55 +0100 | CiaoSen | (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 250 seconds) |
| 2025-12-16 16:56:35 +0100 | humasect | (~humasect@dyn-192-249-132-90.nexicom.net) humasect |
| 2025-12-16 16:56:18 +0100 | fgarcia | (~lei@user/fgarcia) fgarcia |
| 2025-12-16 16:54:08 +0100 | <lucabtz> | unless you thread around the memo from different runState calls |
| 2025-12-16 16:54:07 +0100 | tromp | (~textual@2001:1c00:3487:1b00:dc21:3bf3:aa50:6091) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2025-12-16 16:53:47 +0100 | <lucabtz> | to escape the state you will have to provide a initial memo using runState which will be empty |
| 2025-12-16 16:53:38 +0100 | <kuribas> | yes, just the pure state monad, and I remove it in the end. |
| 2025-12-16 16:53:35 +0100 | spew | (~spew@user/spew) spew |
| 2025-12-16 16:53:13 +0100 | <opqdonut> | (unless you store it somewhere impurely) |
| 2025-12-16 16:53:12 +0100 | <lucabtz> | yeah if you use State you have to live in the State monad |
| 2025-12-16 16:52:42 +0100 | <opqdonut> | sure, but then the next call won't use the outputted memo |
| 2025-12-16 16:52:10 +0100 | <kuribas> | I can get "(a -> State memo foo)" =~ a -> memo -> (foo, memo), then flip, apply memo, and take the first. |
| 2025-12-16 16:51:17 +0100 | <opqdonut> | if you're relying on the monad sequencing to provide the concept of this-has-been-computed-before-that |
| 2025-12-16 16:50:43 +0100 | fgarcia | (~lei@user/fgarcia) (Ping timeout: 264 seconds) |
| 2025-12-16 16:50:21 +0100 | <kuribas> | Why not? |
| 2025-12-16 16:49:58 +0100 | <opqdonut> | you can't make the m disappear from the final result tho |
| 2025-12-16 16:49:15 +0100 | <kuribas> | (missed an m...) |
| 2025-12-16 16:48:51 +0100 | spew | (~spew@user/spew) (Read error: Connection reset by peer) |
| 2025-12-16 16:48:50 +0100 | <opqdonut> | yeah |
| 2025-12-16 16:48:31 +0100 | <kuribas> | Or parametrize over a monad? Like memoFix :: (forall m.Monad m => (a -> foo) -> a -> m foo) -> (a -> foo) |
| 2025-12-16 16:48:24 +0100 | <opqdonut> | (practically people do it using unsafePerformIO, of course) |
| 2025-12-16 16:48:21 +0100 | latticepolytope | (~user@user/isekaijin) isekaijin |
| 2025-12-16 16:47:44 +0100 | latticepolytope | (~user@user/isekaijin) (Ping timeout: 244 seconds) |
| 2025-12-16 16:47:35 +0100 | <opqdonut> | a more general-purpose solution might be a trie |
| 2025-12-16 16:46:02 +0100 | <opqdonut> | the iconic fibonacci list is an example of this kind of memoization with an unbounded domain |
| 2025-12-16 16:45:13 +0100 | <opqdonut> | doing it "sparsely" like you would by mutating a map of values, is harder |
| 2025-12-16 16:45:00 +0100 | j1n37 | (~j1n37@user/j1n37) j1n37 |
| 2025-12-16 16:44:49 +0100 | <opqdonut> | for example an array, if you can enumerate all the inputt |
| 2025-12-16 16:44:35 +0100 | <lucabtz> | or claim to do that at least |
| 2025-12-16 16:44:32 +0100 | <opqdonut> | yes, using a lazy self-referential data structure |
| 2025-12-16 16:44:22 +0100 | <lucabtz> | i saw some libraries that do that |
| 2025-12-16 16:43:29 +0100 | <kuribas> | is it possible to do "pure" memoization, for example using a fix-point combinator? |
| 2025-12-16 16:37:24 +0100 | j1n37 | (~j1n37@user/j1n37) (Read error: Connection reset by peer) |
| 2025-12-16 16:35:43 +0100 | Pixi | (~Pixi@user/pixi) (Ping timeout: 246 seconds) |
| 2025-12-16 16:33:03 +0100 | Pixi` | (~Pixi@user/pixi) Pixi |
| 2025-12-16 16:32:11 +0100 | infinity0 | (~infinity0@pwned.gg) infinity0 |
| 2025-12-16 16:27:40 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) bitdex |
| 2025-12-16 16:27:15 +0100 | merijn | (~merijn@77.242.116.146) merijn |
| 2025-12-16 16:15:54 +0100 | Googulator54 | (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed) |
| 2025-12-16 16:15:50 +0100 | Googulator98 | (~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) |
| 2025-12-16 16:15:18 +0100 | Enrico63 | (~Enrico63@host-95-251-99-143.retail.telecomitalia.it) (Quit: Client closed) |
| 2025-12-16 16:14:05 +0100 | trickard_ | (~trickard@cpe-81-98-47-163.wireline.com.au) |
| 2025-12-16 16:13:49 +0100 | trickard_ | (~trickard@cpe-81-98-47-163.wireline.com.au) (Ping timeout: 264 seconds) |
| 2025-12-16 16:13:40 +0100 | merijn | (~merijn@77.242.116.146) (Ping timeout: 246 seconds) |
| 2025-12-16 16:11:37 +0100 | infinity0 | (~infinity0@pwned.gg) (Ping timeout: 255 seconds) |
| 2025-12-16 16:11:05 +0100 | deptype_ | (~deptype@2406:b400:3a:9d2f:476c:a58e:3471:ff37) |
| 2025-12-16 16:09:03 +0100 | merijn | (~merijn@77.242.116.146) merijn |
| 2025-12-16 16:08:48 +0100 | tremon | (~tremon@83.80.159.219) tremon |