2024/05/16

Newest at the top

2024-05-16 18:49:03 +0200 <Guest13> yeah I like it
2024-05-16 18:48:58 +0200 <ski> it's just a recursivelt defined array
2024-05-16 18:48:46 +0200 <Guest13> "where fibs = L.tabulate (0,n) (\n -> case n of 0 -> 0; 1 -> 1; n -> fibs ! (n - 1) + fibs ! (n - 2))" is crazy
2024-05-16 18:48:40 +0200 <ski> (`listArray' is for when you just want to list the array elements (in proper index enumeration order, as given by e.g. `range'. `array' allows you to give the elements in arbitrary order, but then you have to pair up each element with its corresponding index, and it's also possible to repeat an index (in which case, iirc, it will just pick the last association pair))
2024-05-16 18:47:16 +0200 <lambdabot> Ix i => (i, i) -> [(i, e)] -> Array i e
2024-05-16 18:47:15 +0200 <ski> @type array
2024-05-16 18:47:09 +0200 <lambdabot> Ix i => (i, i) -> [e] -> Array i e
2024-05-16 18:47:08 +0200 <ski> @type listArray
2024-05-16 18:47:00 +0200 <ski> .. and `tabulate' calls `listArray' with a list defined using `range' to generate elements for all valid indices
2024-05-16 18:46:21 +0200 <ski> that's all indices in a rectangle, with upper left corner `(0,0)', lower right corner `(1,3)'
2024-05-16 18:46:08 +0200 <Guest13> I see
2024-05-16 18:46:05 +0200hueso(~root@user/hueso)
2024-05-16 18:45:56 +0200 <lambdabot> Ix a => (a, a) -> [a]
2024-05-16 18:45:55 +0200 <ski> @type range
2024-05-16 18:45:45 +0200 <lambdabot> [(0,0),(0,1),(0,2),(0,3),(1,0),(1,1),(1,2),(1,3)]
2024-05-16 18:45:44 +0200 <ski> > range ((0,0),(1,3))
2024-05-16 18:45:20 +0200 <ski> (there are instances like `(Ix a,Ix b,Ix c) => Ix (a,b,c)')
2024-05-16 18:44:55 +0200hueso(~root@user/hueso) (Read error: Connection reset by peer)
2024-05-16 18:43:30 +0200 <ski> the above should work
2024-05-16 18:39:44 +0200 <Guest13> do I need to define my own 3d tabulate?
2024-05-16 18:37:48 +0200 <Guest13> I will try this now thank you for the help ski
2024-05-16 18:37:05 +0200 <Guest13> I think I get it though, my program will query 0 0 0 in the table which will spawn recursive calls and the base case is n m 0 = 1
2024-05-16 18:35:55 +0200 <Guest13> yeah, for some reason it being in a table confused me
2024-05-16 18:35:53 +0200euphores(~SASL_euph@user/euphores)
2024-05-16 18:35:38 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2024-05-16 18:35:20 +0200 <mauke> dead ends are where the recursion dies :-)
2024-05-16 18:35:09 +0200 <Guest13> this would be setting the value to 0
2024-05-16 18:34:55 +0200 <ski> base cases / dead ends, i guess
2024-05-16 18:33:11 +0200 <Guest13> and you have some calls where you say it has gone wrong and ways = 0
2024-05-16 18:32:56 +0200 <Guest13> its basically a "ways if go left" + "ways if go right" recursion
2024-05-16 18:32:25 +0200 <Guest13> I need to think about how to implement the "dead ends" of the recursive call
2024-05-16 18:32:10 +0200 <Guest13> I will have a go at this
2024-05-16 18:31:37 +0200 <ski> (i guess you actually meant `f x (y-1) z + f (x-1) y z', btw)
2024-05-16 18:30:11 +0200 <Guest13> im trying to count the ways of doing something
2024-05-16 18:29:25 +0200 <Guest13> I think I get how to do it
2024-05-16 18:29:20 +0200euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-05-16 18:28:58 +0200 <Guest13> so I can do a \(x,y,z) -> f x y-1 z + f x-1 y z
2024-05-16 18:28:54 +0200 <ski> oh, you said "yes, but I am probably framing it badly" just after i asked "are you sure dynamic programming would make sense, for your problem, then ?", so i was taking that for granted
2024-05-16 18:28:06 +0200 <ski> you can use `listArray' (or `array'), or the `tabulate' i defined above, to (lazily) populate the array with elements, based on their indices
2024-05-16 18:28:03 +0200 <Guest13> im not really doing dp
2024-05-16 18:27:57 +0200 <Guest13> I understand the map f [1..] for fib, and even the tabulate version you showed me but I don't understand this one
2024-05-16 18:27:45 +0200manwithluck(~manwithlu@149.102.244.20)
2024-05-16 18:27:35 +0200tomboy64(~tomboy64@user/tomboy64)
2024-05-16 18:27:31 +0200 <Guest13> ok, how can I use this to cache
2024-05-16 18:27:21 +0200 <ski> so, maybe try `Array (Int,Int,Int) Result' ?
2024-05-16 18:27:20 +0200 <Guest13> at most like 20
2024-05-16 18:27:00 +0200 <Guest13> the ranges aren't large
2024-05-16 18:26:32 +0200 <ski> but if your ranges (?) of `Int's are large, the array would contain a lot of elements, take a lot of space (the array itself would be allocated eagerly, only the array elements would be lazily evaluated)
2024-05-16 18:26:10 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2024-05-16 18:25:27 +0200 <ski> if you're okay with a dense caching space, you could try caching with an array