Newest at the top
2024-12-22 19:12:55 +0100 | <monochrom> | And Python's yield corresponds to shift-reset rather than call/cc. https://www.cs.indiana.edu/~sabry/papers/yield.pdf |
2024-12-22 19:11:47 +0100 | <albet70> | is that redis distributed lock very like MVar? |
2024-12-22 19:11:45 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-12-22 19:11:02 +0100 | <monochrom> | As Oleg points out, call/cc is not very nice. shift-reset is better. Even the Haskell Cont library provides shift-reset. |
2024-12-22 19:10:06 +0100 | <monochrom> | Whereas with shift-reset you really always have multiple levels. |
2024-12-22 19:09:43 +0100 | <monochrom> | Of course you get to say "but only within runCont" but it is not like you really have multiple levels of runCont. |
2024-12-22 19:09:28 +0100 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
2024-12-22 19:09:12 +0100 | <monochrom> | callCC is global because there is no reset to scope it. |
2024-12-22 19:02:57 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-12-22 19:00:13 +0100 | Guest78 | (~Guest78@2a02:8084:1:6500::db) |
2024-12-22 18:58:45 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 246 seconds) |
2024-12-22 18:57:27 +0100 | <albet70> | can I say callCC is delimited continuation and call/cc is full contit? |
2024-12-22 18:52:04 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
2024-12-22 18:51:12 +0100 | JuanDaugherty | (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
2024-12-22 18:49:12 +0100 | <ski> | probie : i first solved it (out of curiosity), around 2007-04-10 (and made a smaller edit for elegance and generality, in 2011-06-14) |
2024-12-22 18:48:21 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-12-22 18:47:41 +0100 | <enikar> | albet70: yes, r4rs is quite old. |
2024-12-22 18:47:11 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-12-22 18:46:19 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-12-22 18:45:24 +0100 | <ski> | evalCont ca = ca `runCont` id -- `id' here is the initial ("empty") delimited/composable continuation |
2024-12-22 18:44:36 +0100 | <probie> | ski: That sounds like a fun challenge. I think I'll have a go |
2024-12-22 18:42:33 +0100 | <albet70> | ski , what's the delimited continuation |
2024-12-22 18:41:51 +0100 | <albet70> | enikar , but call/cc still in r4rs? |
2024-12-22 18:41:42 +0100 | <ski> | (albet70 : and no recursive computation needed/permitted, apart from the one inside `foldr') |
2024-12-22 18:39:12 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-12-22 18:38:44 +0100 | <ski> | `callCC' is delimited by the `runCont'/`runContT', yes |
2024-12-22 18:38:34 +0100 | <enikar> | albet70: https://okmij.org/ftp/continuations/against-callcc.html |
2024-12-22 18:38:11 +0100 | <sinbad> | c_wraith: thank you |
2024-12-22 18:38:00 +0100 | <ski> | albet70 : the challenge was to implement `zipWith' (or `zip', if you prefer), only traversing either input list (and only once), with a single call to `foldr' for each, not inspecting the lists in any way apart from that |
2024-12-22 18:36:54 +0100 | __monty__ | (~toonn@user/toonn) (Ping timeout: 265 seconds) |
2024-12-22 18:36:21 +0100 | <enikar> | there are arguments against call/cc. |
2024-12-22 18:35:27 +0100 | son0p | (~ff@186.121.98.118) son0p |
2024-12-22 18:35:24 +0100 | <albet70> | callCC only capture what is inside callCC |
2024-12-22 18:34:45 +0100 | <albet70> | call/cc in scheme can capture the outside/rest code of call/cc, I don't think Cont or callCC in haskell can do that |
2024-12-22 18:32:56 +0100 | <monochrom> | You can make your own yield in Haskell: https://www.vex.net/~trebla/haskell/cont.xhtml#yield |
2024-12-22 18:32:16 +0100 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-12-22 18:31:23 +0100 | son0p | (~ff@186.121.98.118) (Remote host closed the connection) |
2024-12-22 18:30:41 +0100 | <enikar> | ah! yield in python is awesome |
2024-12-22 18:30:05 +0100 | <albet70> | I found that 'yield' in python can do that |
2024-12-22 18:29:35 +0100 | <enikar> | it's what I use |
2024-12-22 18:29:24 +0100 | <enikar> | sinbad: use (string "\n\n") |
2024-12-22 18:29:21 +0100 | <albet70> | ski , how you did it? |
2024-12-22 18:29:20 +0100 | <c_wraith> | Those are the two main ways |
2024-12-22 18:29:13 +0100 | <c_wraith> | And my day 17 parser: https://github.com/chowells79/aoc/blob/main/2024/Day17.hs#L33-L48 . It matches a series of lines including the terminal \n, then matches one more \n before the next section. |
2024-12-22 18:27:49 +0100 | zenmov | (~zenmov@user/zenmov) (Ping timeout: 272 seconds) |
2024-12-22 18:26:22 +0100 | <c_wraith> | Here's my day 19 aoc parser. It literally matches (string "\n\n") at one point. https://github.com/chowells79/aoc/blob/main/2024/Day19.hs#L21-L31 |
2024-12-22 18:25:11 +0100 | <probie> | Assuming you already know the last line wasn't empty, perhaps something like `count 2 (char "\n") >> look >>= \case { ('\n':_) -> pfail; _ -> pure () }` |
2024-12-22 18:24:48 +0100 | <sinbad> | c_wraith: yes I should have used \ |
2024-12-22 18:23:50 +0100 | <c_wraith> | Note that you need to be using backslashes (\) for escape codes, not forward slashes (/) |
2024-12-22 18:23:23 +0100 | <c_wraith> | match the newlines in the stuff you care about. throw a (char '\n') parser between them. |