2025/12/16

Newest at the top

2025-12-16 17:05:33 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2025-12-16 17:01:37 +0100fp(~Thunderbi@130.233.70.102) (Quit: fp)
2025-12-16 16:59:55 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 250 seconds)
2025-12-16 16:56:35 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2025-12-16 16:56:18 +0100fgarcia(~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 +0100tromp(~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 +0100spew(~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 +0100fgarcia(~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 +0100spew(~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 +0100latticepolytope(~user@user/isekaijin) isekaijin
2025-12-16 16:47:44 +0100latticepolytope(~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 +0100j1n37(~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 +0100j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-12-16 16:35:43 +0100Pixi(~Pixi@user/pixi) (Ping timeout: 246 seconds)
2025-12-16 16:33:03 +0100Pixi`(~Pixi@user/pixi) Pixi
2025-12-16 16:32:11 +0100infinity0(~infinity0@pwned.gg) infinity0
2025-12-16 16:27:40 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-12-16 16:27:15 +0100merijn(~merijn@77.242.116.146) merijn
2025-12-16 16:15:54 +0100Googulator54(~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed)
2025-12-16 16:15:50 +0100Googulator98(~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu)
2025-12-16 16:15:18 +0100Enrico63(~Enrico63@host-95-251-99-143.retail.telecomitalia.it) (Quit: Client closed)
2025-12-16 16:14:05 +0100trickard_(~trickard@cpe-81-98-47-163.wireline.com.au)
2025-12-16 16:13:49 +0100trickard_(~trickard@cpe-81-98-47-163.wireline.com.au) (Ping timeout: 264 seconds)
2025-12-16 16:13:40 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 246 seconds)
2025-12-16 16:11:37 +0100infinity0(~infinity0@pwned.gg) (Ping timeout: 255 seconds)
2025-12-16 16:11:05 +0100deptype_(~deptype@2406:b400:3a:9d2f:476c:a58e:3471:ff37)
2025-12-16 16:09:03 +0100merijn(~merijn@77.242.116.146) merijn
2025-12-16 16:08:48 +0100tremon(~tremon@83.80.159.219) tremon