2024-08-26 00:01:05 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-08-26 00:02:10 +0200 | <bert96> | i cant quite get it to typecheck |
2024-08-26 00:02:10 +0200 | <bert96> | https://paste.tomsmeding.com/WVRzfdJ5 |
2024-08-26 00:02:52 +0200 | ddellacosta | (~ddellacos@ool-44c73c8f.dyn.optonline.net) |
2024-08-26 00:03:48 +0200 | <bert96> | ah, its ok, i got it |
2024-08-26 00:03:49 +0200 | <bert96> | https://paste.tomsmeding.com/JrTnEeWi |
2024-08-26 00:04:12 +0200 | <bert96> | so yeah, im still wondering about the composition semanticx |
2024-08-26 00:04:32 +0200 | <bert96> | is there a way to get this looking slightly more like a DSL? |
2024-08-26 00:04:37 +0200 | dysthesis | (~dysthesis@user/dysthesis) |
2024-08-26 00:04:52 +0200 | <bert96> | loke, loading everything into it, processing it, and then getting it back into the form without the writer visible |
2024-08-26 00:05:10 +0200 | <bert96> | i guess this basically does that, but its not like, idk. general enough? can you see what im getting at? |
2024-08-26 00:05:41 +0200 | <bert96> | i guess 'go' kind of resembles a composition function |
2024-08-26 00:05:52 +0200 | <bert96> | im not sure how to handle "scope" though |
2024-08-26 00:06:02 +0200 | <bert96> | like, if you have this bivariate associator, thats one thing... |
2024-08-26 00:06:10 +0200 | <bert96> | idk, maybe you just rewrite the go function |
2024-08-26 00:06:26 +0200 | <bert96> | instead of trying to use it as a composition... i cant quite get my head round the difference |
2024-08-26 00:06:45 +0200 | <bert96> | like, because then you can have as many functions as you like, and to do scoping handles all that |
2024-08-26 00:07:00 +0200 | ash3en | (~Thunderbi@2a02:3100:7da1:ca00:1a49:3dad:2797:7373) (Quit: ash3en) |
2024-08-26 00:07:15 +0200 | ash3en | (~Thunderbi@2a02:3100:7da1:ca00:1a49:3dad:2797:7373) |
2024-08-26 00:07:18 +0200 | <bert96> | but it kind of then, doesnt seem to meet the criteria of a well formulated DSL, which for some reason i think would have this bivariate composition opperator, i think is a mistaken idea |
2024-08-26 00:07:59 +0200 | <bert96> | the pair, extends simply to a list, but then the list of states, for example, doesnt easily handle the internal scoping of how these are interrelated |
2024-08-26 00:08:18 +0200 | <bert96> | i like how the 'do' version like this seems to handle the regularization though |
2024-08-26 00:08:33 +0200 | <bert96> | its actually one of the nicest use cases for a monad other than IO that iv seen |
2024-08-26 00:08:49 +0200 | <bert96> | (been coding haskell for almost decades by this point) |
2024-08-26 00:10:14 +0200 | <bert96> | i guess the closest i could come up with would be replacing the tuple in 'go' with a HList, but then, since it dosent change length, it might as well just be a tuple of whatever length, and the built in syntax handles it all |
2024-08-26 00:10:33 +0200 | <bert96> | can anyone see anything obvious thats missing from this, if it were to be presented as a "package" |
2024-08-26 00:10:51 +0200 | <bert96> | or alternatively, just let me know that these considerations parse sensibly |
2024-08-26 00:11:02 +0200 | ash3en | (~Thunderbi@2a02:3100:7da1:ca00:1a49:3dad:2797:7373) (Client Quit) |
2024-08-26 00:12:03 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 00:13:19 +0200 | <bert96> | im kind of torn between, rewriting the addReg style do blocks for f and g with a common function |
2024-08-26 00:13:50 +0200 | <monochrom> | If you also have state then it's "StateT ??? (Writer (Sum Double))" or "WriterT (Sum Double) (State ???)" I don't know which. |
2024-08-26 00:13:52 +0200 | <bert96> | but that forces the user to put them in a specific type, and i cant tell if thats better or worse than having them have to write these addReg stanzas in |
2024-08-26 00:14:25 +0200 | <bert96> | monochrom: hmm... im not sure how to use the State monads semantics here |
2024-08-26 00:14:43 +0200 | <monochrom> | There are multitudes of tutorials on that. |
2024-08-26 00:14:44 +0200 | <bert96> | do you think that would handle the compositionality considerations im contending with? |
2024-08-26 00:15:09 +0200 | <bert96> | monochrom: right, but doing them would not result in me being able to answer that question |
2024-08-26 00:15:37 +0200 | <bert96> | i have about another half hour alloted to this, ill just go with the version as is if i cant figure it out before then |
2024-08-26 00:15:56 +0200 | <bert96> | id like to get it right though, so any help would really be appreciated |
2024-08-26 00:16:12 +0200 | ash3en | (~Thunderbi@2a02:3100:7da1:ca00:1a49:3dad:2797:7373) |
2024-08-26 00:16:38 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
2024-08-26 00:17:09 +0200 | <bert96> | probie: do you know how to do both the state and the writer bit at the same time? |
2024-08-26 00:17:17 +0200 | Sgeo_ | (~Sgeo@user/sgeo) |
2024-08-26 00:17:22 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2024-08-26 00:20:10 +0200 | <bert96> | i mean, presumably it would just become more messy |
2024-08-26 00:23:52 +0200 | <bert96> | ok, iv read, https://wiki.haskell.org/State_Monad |
2024-08-26 00:24:04 +0200 | <bert96> | but literally, i have no idea how i would write the combination |
2024-08-26 00:24:35 +0200 | <bert96> | i basically get how the bind function works, but i really have trouble translating that through to an implementation |
2024-08-26 00:27:28 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 00:28:03 +0200 | <geekosaur> | have you looked at the definition of RWST? |
2024-08-26 00:28:44 +0200 | <bert96> | https://hackage.haskell.org/package/mtl-2.0.1.0/docs/Control-Monad-RWS-Lazy.html |
2024-08-26 00:28:47 +0200 | <bert96> | this? |
2024-08-26 00:28:57 +0200 | <bert96> | seems like it might be basically what im trying to derive? |
2024-08-26 00:29:02 +0200 | <bert96> | what do you think? |
2024-08-26 00:29:21 +0200 | <bert96> | might be good to see the example rewritten in this style... |
2024-08-26 00:29:41 +0200 | <bert96> | the third "reg" value seems to appear in the types of this library |
2024-08-26 00:31:58 +0200 | <bert96> | wow, if i type |
2024-08-26 00:31:58 +0200 | <bert96> | https://www.bing.com/search?q=%2bsimple+RWST+example+haskell&filters=rcrse%3a%221%22&FORM=RCRE |
2024-08-26 00:31:59 +0200 | <bert96> | bings AI just generates the example as the top result1 |
2024-08-26 00:32:18 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-08-26 00:33:57 +0200 | <bert96> | im going to see if the GPT can spoonfeed me better than the canadians |
2024-08-26 00:37:34 +0200 | <bert96> | check this! https://paste.tomsmeding.com/jGhhv4hF |
2024-08-26 00:37:53 +0200 | <bert96> | chatGPT ftw; https://chatgpt.com/share/12785964-4265-4ac6-b2da-51afb2a42cdd |
2024-08-26 00:40:11 +0200 | ash3en | (~Thunderbi@2a02:3100:7da1:ca00:1a49:3dad:2797:7373) (Remote host closed the connection) |
2024-08-26 00:40:24 +0200 | ash3en | (~Thunderbi@2a02:3100:7da1:ca00:88f6:37f6:5d31:b10c) |
2024-08-26 00:42:25 +0200 | <probie> | Does that typecheck? |
2024-08-26 00:42:44 +0200 | ash3en | (~Thunderbi@2a02:3100:7da1:ca00:88f6:37f6:5d31:b10c) (Client Quit) |
2024-08-26 00:42:54 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 00:43:58 +0200 | Feuermagier | (~Feuermagi@user/feuermagier) |
2024-08-26 00:44:27 +0200 | <bert96> | idk... it seems to be messing up somehow |
2024-08-26 00:44:33 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) |
2024-08-26 00:44:41 +0200 | Guest8 | (~Guest75@2600:387:f:a10::6) |
2024-08-26 00:44:41 +0200 | <bert96> | im not sure if it has made `i' a phantom type by mistake |
2024-08-26 00:44:56 +0200 | <bert96> | but i cant understand the RWST formalism because of how it handles the i variable anyway |
2024-08-26 00:46:45 +0200 | <bert96> | yeah, i dont think it qute does it right... |
2024-08-26 00:46:45 +0200 | <bert96> | https://chatgpt.com/share/12785964-4265-4ac6-b2da-51afb2a42cdd |
2024-08-26 00:47:02 +0200 | <bert96> | can anyone that actually understands this get it into a form that doesnt confuse me!? |
2024-08-26 00:47:17 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-08-26 00:49:06 +0200 | <bert96> | i get screenblind pretty bad ofter a nasty head injury |
2024-08-26 00:50:30 +0200 | son0p | (~ff@186.121.18.131) (Quit: Leaving) |
2024-08-26 00:50:41 +0200 | <bert96> | gona take a break now, if theres a nice typechecking paste when i get back, i will owe you internet prompts |
2024-08-26 00:53:21 +0200 | target_i | (~target_i@user/target-i/x-6023099) (Quit: leaving) |
2024-08-26 00:56:30 +0200 | dysthesis | (~dysthesis@user/dysthesis) (Remote host closed the connection) |
2024-08-26 00:58:20 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 01:00:17 +0200 | <bert96> | damn, no code paste |
2024-08-26 01:00:36 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) (Quit: Client closed) |
2024-08-26 01:00:36 +0200 | Guest8 | (~Guest75@2600:387:f:a10::6) (Quit: Client closed) |
2024-08-26 01:00:49 +0200 | <bert96> | the thing i dont think i get about the state formalism as presented by the RWST monad is how it handles (or fails to handle) composite states |
2024-08-26 01:00:59 +0200 | <bert96> | i think that what i was doing is different in this regard |
2024-08-26 01:01:13 +0200 | <bert96> | the situtation seems to use the state repeatedly |
2024-08-26 01:01:23 +0200 | <bert96> | eg, examples repeatedly incrament the state |
2024-08-26 01:01:41 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) |
2024-08-26 01:01:41 +0200 | <bert96> | in my setup, many different states are composed together, and usually only modified once |
2024-08-26 01:02:01 +0200 | <bert96> | for this reason, i *dont* think that what im trying to do fits into the RWST formalism |
2024-08-26 01:02:08 +0200 | <bert96> | and that the suggestion is basically a misnomer |
2024-08-26 01:02:33 +0200 | <bert96> | instead of the monad handling the composition of states, it handles the composition of state updates |
2024-08-26 01:02:34 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) (Client Quit) |
2024-08-26 01:02:41 +0200 | <bert96> | this is clearly not the same |
2024-08-26 01:02:48 +0200 | Guest14 | (~Guest75@2600:387:f:a10::6) |
2024-08-26 01:02:54 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-08-26 01:03:09 +0200 | <bert96> | i have never thought that the state monad does anything much at all |
2024-08-26 01:03:35 +0200 | <bert96> | its interesting what the GPT managed to do though in terms of refactoring though |
2024-08-26 01:04:32 +0200 | <bert96> | so after all this deliberation, it seems like this is the accepted version; |
2024-08-26 01:04:33 +0200 | <bert96> | https://paste.tomsmeding.com/JrTnEeWi |
2024-08-26 01:04:47 +0200 | Guest14 | (~Guest75@2600:387:f:a10::6) (Client Quit) |
2024-08-26 01:04:55 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) |
2024-08-26 01:05:05 +0200 | <bert96> | can anyone say anything before i go, about how this appears in terms of an interface for a stateful paradigm with regularizer? |
2024-08-26 01:06:01 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) (Write error: Connection reset by peer) |
2024-08-26 01:06:30 +0200 | <bert96> | ok, thats me offskis then. thanks for your help this evening |
2024-08-26 01:06:33 +0200 | bert96 | (~bert@143.58.222.152) (Quit: Connection closed) |
2024-08-26 01:09:36 +0200 | ddellacosta | (~ddellacos@ool-44c73c8f.dyn.optonline.net) (Ping timeout: 252 seconds) |
2024-08-26 01:09:57 +0200 | <monochrom> | I was suspecting that they were fishing for solutions instead of wanting to learn. The use of chatgpt proved it. |
2024-08-26 01:10:40 +0200 | <monochrom> | But the first sign was when I pointed out "there are multitudes of tutorials" they were like "but that won't answer my question". |
2024-08-26 01:11:32 +0200 | ddellacosta | (~ddellacos@ool-44c73c8f.dyn.optonline.net) |
2024-08-26 01:13:45 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 01:15:37 +0200 | <monochrom> | Also one more data point for the negative correlation between understanding and claiming "I understand". |
2024-08-26 01:18:56 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-08-26 01:19:04 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
2024-08-26 01:20:32 +0200 | ddellacosta | (~ddellacos@ool-44c73c8f.dyn.optonline.net) (Read error: Connection reset by peer) |
2024-08-26 01:22:30 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) |
2024-08-26 01:25:03 +0200 | oo_miguel | (~Thunderbi@78.10.207.45) (Ping timeout: 276 seconds) |
2024-08-26 01:25:51 +0200 | ddellacosta | (~ddellacos@ool-44c73c8f.dyn.optonline.net) |
2024-08-26 01:26:47 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) (Client Quit) |
2024-08-26 01:28:46 +0200 | <jle`> | i have had 0 luck with chatgpt and haskell ever |
2024-08-26 01:29:12 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 01:33:41 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-08-26 01:44:38 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 01:46:58 +0200 | <probie> | Sometimes I tempted to sign up so I can see what kind of garbage ChatGPT generates |
2024-08-26 01:48:20 +0200 | <probie> | s/I tempted/I'm tempted/ |
2024-08-26 01:51:52 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-08-26 01:54:10 +0200 | acidjnk_new | (~acidjnk@p200300d6e72cfb47bd23b15f512db0bf.dip0.t-ipconnect.de) |
2024-08-26 01:57:09 +0200 | acidjnk | (~acidjnk@p200300d6e72cfb47c979cc4d7a117a71.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
2024-08-26 01:59:39 +0200 | bilegeek | (~bilegeek@2600:1008:b007:52b2:99e1:c3bf:c468:921) |
2024-08-26 02:00:55 +0200 | acidjnk_new | (~acidjnk@p200300d6e72cfb47bd23b15f512db0bf.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2024-08-26 02:05:07 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) |
2024-08-26 02:06:49 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 02:07:40 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) (Client Quit) |
2024-08-26 02:11:17 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-08-26 02:16:47 +0200 | tcard__ | (~tcard@2400:4051:5801:7500:1e90:74c3:2754:ce8a) (Quit: Leaving) |
2024-08-26 02:22:15 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 02:26:36 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-08-26 02:26:45 +0200 | <EvanR> | chatgpt generates bindings for me lol |
2024-08-26 02:27:25 +0200 | tcard | (~tcard@p3940165-ipxg22501hodogaya.kanagawa.ocn.ne.jp) |
2024-08-26 02:29:13 +0200 | bilegeek | (~bilegeek@2600:1008:b007:52b2:99e1:c3bf:c468:921) (Quit: Leaving) |
2024-08-26 02:32:59 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2024-08-26 02:34:09 +0200 | califax | (~califax@user/califx) |
2024-08-26 02:37:26 +0200 | machinedgod | (~machinedg@d50-99-47-73.abhsia.telus.net) |
2024-08-26 02:37:41 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 02:39:57 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) |
2024-08-26 02:40:53 +0200 | <probie> | My problem with LLMs is that you have to check their work, so you don't end up saving any time |
2024-08-26 02:41:14 +0200 | bilegeek | (~bilegeek@2600:1008:b007:52b2:99e1:c3bf:c468:921) |
2024-08-26 02:41:57 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-08-26 02:45:58 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) (Quit: Client closed) |
2024-08-26 02:46:20 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) |
2024-08-26 02:46:30 +0200 | ZharMeny | (~user@user/ZharMeny) (Quit: ()) |
2024-08-26 02:50:03 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) (Client Quit) |
2024-08-26 02:53:07 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 02:56:53 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
2024-08-26 02:58:22 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-08-26 02:58:55 +0200 | <EvanR> | I check pretty fast |
2024-08-26 02:59:10 +0200 | <EvanR> | random language bindings would take me a while to write out |
2024-08-26 03:08:33 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 03:09:45 +0200 | troojg | (~troojg@user/troojg) |
2024-08-26 03:12:49 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-08-26 03:14:12 +0200 | waleee | (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 272 seconds) |
2024-08-26 03:23:56 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 03:27:39 +0200 | JuanDaugherty | (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
2024-08-26 03:28:30 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-08-26 03:30:57 +0200 | troojg | (~troojg@user/troojg) (Ping timeout: 246 seconds) |
2024-08-26 03:39:20 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 03:44:24 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-08-26 03:54:47 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 03:59:23 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
2024-08-26 04:04:26 +0200 | Inst | (~Inst@user/Inst) (Read error: Connection reset by peer) |
2024-08-26 04:07:21 +0200 | stef204 | (~stef204@user/stef204) (Quit: WeeChat 4.2.1) |
2024-08-26 04:07:47 +0200 | td_ | (~td@i53870916.versanet.de) (Ping timeout: 252 seconds) |
2024-08-26 04:09:49 +0200 | td_ | (~td@i53870916.versanet.de) |
2024-08-26 04:10:13 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 04:14:45 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-08-26 04:14:53 +0200 | xff0x | (~xff0x@2405:6580:b080:900:1a16:bbb0:6f59:723e) (Quit: xff0x) |
2024-08-26 04:17:30 +0200 | son0p | (~ff@2800:e2:f80:ee7::1) |
2024-08-26 04:24:22 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 04:28:42 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-08-26 04:39:48 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 04:44:05 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-08-26 04:53:24 +0200 | bilegeek | (~bilegeek@2600:1008:b007:52b2:99e1:c3bf:c468:921) (Quit: Leaving) |
2024-08-26 04:55:12 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 04:59:30 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-08-26 05:03:41 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
2024-08-26 05:05:27 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2024-08-26 05:08:17 +0200 | youthlic | (~Thunderbi@user/youthlic) |
2024-08-26 05:10:38 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 05:10:44 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 272 seconds) |
2024-08-26 05:15:48 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-08-26 05:17:49 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
2024-08-26 05:20:52 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds) |
2024-08-26 05:22:23 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2024-08-26 05:22:50 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2024-08-26 05:26:03 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 05:28:12 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 246 seconds) |
2024-08-26 05:30:29 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-08-26 05:41:30 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 05:41:58 +0200 | aforemny | (~aforemny@i59F516F8.versanet.de) |
2024-08-26 05:43:40 +0200 | aforemny_ | (~aforemny@2001:9e8:6ce1:ca00:1cd1:13ff:d54d:eb12) (Ping timeout: 272 seconds) |
2024-08-26 05:46:03 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-08-26 05:56:56 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 06:00:24 +0200 | machinedgod | (~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 246 seconds) |
2024-08-26 06:01:20 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
2024-08-26 06:06:43 +0200 | aljazmc | (~aljazmc@user/aljazmc) |
2024-08-26 06:12:20 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 06:16:53 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-08-26 06:21:23 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
2024-08-26 06:25:22 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 06:30:32 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-08-26 06:40:47 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 06:45:27 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-08-26 06:46:36 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2024-08-26 06:53:17 +0200 | michalz | (~michalz@185.246.207.193) |
2024-08-26 06:56:13 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 06:57:22 +0200 | euphores | (~SASL_euph@user/euphores) (Quit: Leaving.) |
2024-08-26 07:01:19 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds) |
2024-08-26 07:01:56 +0200 | aljazmc | (~aljazmc@user/aljazmc) (Quit: Leaving) |
2024-08-26 07:08:52 +0200 | Square2 | (~Square4@user/square) |
2024-08-26 07:10:13 +0200 | dysthesis | (~dysthesis@user/dysthesis) |
2024-08-26 07:11:37 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 07:11:49 +0200 | gmg | (~user@user/gehmehgeh) |
2024-08-26 07:14:57 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
2024-08-26 07:16:07 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-08-26 07:22:35 +0200 | jcarpenter2 | (~lol@2603:3016:1e01:b9a0:dd46:b628:cfda:5fd9) (Read error: Connection reset by peer) |
2024-08-26 07:26:22 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 07:28:19 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
2024-08-26 07:30:11 +0200 | Sgeo_ | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2024-08-26 07:30:33 +0200 | jcarpenter2 | (~lol@2603:3016:1e01:b9a0:3dc1:ba12:10da:4091) |
2024-08-26 07:30:55 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-08-26 07:33:14 +0200 | euphores | (~SASL_euph@user/euphores) |
2024-08-26 07:41:48 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 07:42:15 +0200 | mceresa | (~mceresa@user/mceresa) (Remote host closed the connection) |
2024-08-26 07:43:37 +0200 | mceresa | (~mceresa@user/mceresa) |
2024-08-26 07:46:25 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-08-26 07:57:13 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 08:02:22 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-08-26 08:04:57 +0200 | jinsun | (~jinsun@user/jinsun) (Ping timeout: 252 seconds) |
2024-08-26 08:08:05 +0200 | ThePenguin7 | (~ThePengui@cust-95-80-24-166.csbnet.se) (Remote host closed the connection) |
2024-08-26 08:08:39 +0200 | ThePenguin7 | (~ThePengui@cust-95-80-24-166.csbnet.se) |
2024-08-26 08:12:40 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 08:14:13 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
2024-08-26 08:17:48 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-08-26 08:21:46 +0200 | oo_miguel | (~Thunderbi@78.10.207.45) |
2024-08-26 08:24:42 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
2024-08-26 08:27:21 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 08:31:49 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-08-26 08:33:08 +0200 | mceresa | (~mceresa@user/mceresa) (Remote host closed the connection) |
2024-08-26 08:33:55 +0200 | mceresa | (~mceresa@user/mceresa) |
2024-08-26 08:42:49 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 08:47:13 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-08-26 08:51:23 +0200 | ft | (~ft@p4fc2a393.dip0.t-ipconnect.de) (Quit: leaving) |
2024-08-26 08:58:13 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 09:03:10 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-08-26 09:12:16 +0200 | hendi | (~hendi@193.32.248.133) |
2024-08-26 09:13:50 +0200 | acidjnk_new | (~acidjnk@p200300d6e72cfb41fdef54b6136c7789.dip0.t-ipconnect.de) |
2024-08-26 09:16:02 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Read error: Connection timed out) |
2024-08-26 09:22:30 +0200 | hendi | (~hendi@193.32.248.133) (Ping timeout: 252 seconds) |
2024-08-26 09:35:50 +0200 | terrorjack4 | (~terrorjac@2a01:4f8:121:32e8::) |
2024-08-26 09:44:59 +0200 | sourcetarius | (~sourcetar@user/sourcetarius) |
2024-08-26 09:56:36 +0200 | machinedgod | (~machinedg@d50-99-47-73.abhsia.telus.net) |
2024-08-26 09:59:21 +0200 | merijn | (~merijn@77.242.116.146) |
2024-08-26 10:01:40 +0200 | alexherbo2 | (~alexherbo@2a02-8440-3109-4750-dded-439d-72c1-d801.rev.sfr.net) |
2024-08-26 10:10:26 +0200 | cfricke | (~cfricke@user/cfricke) |
2024-08-26 10:10:41 +0200 | lxsameer | (~lxsameer@Serene/lxsameer) |
2024-08-26 10:12:24 +0200 | merijn | (~merijn@77.242.116.146) (Ping timeout: 246 seconds) |
2024-08-26 10:13:24 +0200 | merijn | (~merijn@77.242.116.146) |
2024-08-26 10:21:06 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-08-26 10:22:58 +0200 | merijn | (~merijn@77.242.116.146) (Ping timeout: 272 seconds) |
2024-08-26 10:23:53 +0200 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
2024-08-26 10:24:49 +0200 | Me-me | (~me-me@kc.randomserver.name) (Changing host) |
2024-08-26 10:24:49 +0200 | Me-me | (~me-me@user/me-me) |
2024-08-26 10:29:07 +0200 | nckx | (nckx@libera/staff/owl/nckx) (Ping timeout: 608 seconds) |
2024-08-26 10:31:35 +0200 | merijn | (~merijn@77.242.116.146) |
2024-08-26 10:32:09 +0200 | Leary | (~Leary@user/Leary/x-0910699) (Remote host closed the connection) |
2024-08-26 10:32:24 +0200 | Leary | (~Leary@user/Leary/x-0910699) |
2024-08-26 10:37:01 +0200 | srazkvt | (~sarah_@2a01:e0a:483:6900:b6d5:d9cd:2f20:2e49) |
2024-08-26 10:52:05 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-08-26 11:01:59 +0200 | ash3en | (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) |
2024-08-26 11:08:33 +0200 | lxsameer | (~lxsameer@Serene/lxsameer) (Quit: WeeChat 4.3.6) |
2024-08-26 11:14:31 +0200 | dysthesis | (~dysthesis@user/dysthesis) (Ping timeout: 260 seconds) |
2024-08-26 11:19:12 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-08-26 11:19:47 +0200 | ss4 | (~wootehfoo@user/wootehfoot) |
2024-08-26 11:22:38 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Ping timeout: 255 seconds) |
2024-08-26 11:22:50 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2024-08-26 11:25:30 +0200 | sawilagar | (~sawilagar@user/sawilagar) |
2024-08-26 11:25:36 +0200 | ss4 | (~wootehfoo@user/wootehfoot) (Ping timeout: 252 seconds) |
2024-08-26 11:25:54 +0200 | ss4 | (~wootehfoo@user/wootehfoot) |
2024-08-26 11:28:29 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Ping timeout: 255 seconds) |
2024-08-26 11:29:21 +0200 | __monty__ | (~toonn@user/toonn) |
2024-08-26 12:03:27 +0200 | murgeljm | (~murgeljm@APN-122-12-44-gprs.simobil.net) |
2024-08-26 12:07:38 +0200 | srazkvt | (~sarah_@2a01:e0a:483:6900:b6d5:d9cd:2f20:2e49) (Quit: Leaving) |
2024-08-26 12:12:34 +0200 | murgeljm | (~murgeljm@APN-122-12-44-gprs.simobil.net) (Read error: Connection reset by peer) |
2024-08-26 12:14:20 +0200 | cpressey | (~weechat@176.254.71.203) |
2024-08-26 12:17:33 +0200 | connrs | (~connrs@user/connrs) (Quit: ZNC 1.8.2 - https://znc.in) |
2024-08-26 12:17:40 +0200 | merijn | (~merijn@77.242.116.146) (Ping timeout: 252 seconds) |
2024-08-26 12:19:36 +0200 | CiaoSen | (~Jura@2a05:5800:42c:fc00:ca4b:d6ff:fec1:99da) |
2024-08-26 12:21:19 +0200 | connrs | (~connrs@user/connrs) |
2024-08-26 12:21:25 +0200 | connrs | (~connrs@user/connrs) (Remote host closed the connection) |
2024-08-26 12:27:30 +0200 | cpressey | (~weechat@176.254.71.203) (Ping timeout: 248 seconds) |
2024-08-26 12:29:01 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 252 seconds) |
2024-08-26 12:29:39 +0200 | merijn | (~merijn@77.242.116.146) |
2024-08-26 12:35:12 +0200 | merijn | (~merijn@77.242.116.146) (Ping timeout: 246 seconds) |
2024-08-26 12:37:10 +0200 | connrs | (~connrs@user/connrs) |
2024-08-26 12:41:44 +0200 | cpressey | (~weechat@176.254.71.203) |
2024-08-26 12:44:15 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) |
2024-08-26 12:46:17 +0200 | merijn | (~merijn@77.242.116.146) |
2024-08-26 12:50:31 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
2024-08-26 12:50:55 +0200 | merijn | (~merijn@77.242.116.146) (Ping timeout: 244 seconds) |
2024-08-26 12:52:09 +0200 | cpressey | (~weechat@176.254.71.203) (Ping timeout: 260 seconds) |
2024-08-26 12:52:33 +0200 | m1dnight | (~christoph@78-20-63-126.access.telenet.be) (Ping timeout: 248 seconds) |
2024-08-26 12:53:35 +0200 | merijn | (~merijn@77.242.116.146) |
2024-08-26 13:00:41 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) (Quit: Client closed) |
2024-08-26 13:02:00 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) |
2024-08-26 13:14:29 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-08-26 13:19:45 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-08-26 13:21:07 +0200 | petrichor | (~znc-user@user/petrichor) (Ping timeout: 265 seconds) |
2024-08-26 13:21:43 +0200 | rosco | (~rosco@175.136.158.234) |
2024-08-26 13:24:21 +0200 | cpressey | (~weechat@176.254.71.203) |
2024-08-26 13:30:33 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-08-26 13:36:59 +0200 | m1dnight | (~christoph@78-20-63-126.access.telenet.be) |
2024-08-26 13:38:25 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) (Quit: Client closed) |
2024-08-26 13:39:31 +0200 | petrichor | (~znc-user@user/petrichor) |
2024-08-26 13:44:50 +0200 | <mauke> | :t let frob (w, b) j ls = go j ls where { go z ((p, f) : xs) | p > w = go (f z) xs; go z xs = (w, b z) : xs } in frob |
2024-08-26 13:44:51 +0200 | <lambdabot> | Ord a => (a, t -> t -> t) -> t -> [(a, t -> t)] -> [(a, t -> t)] |
2024-08-26 13:44:55 +0200 | <mauke> | is this a fold? |
2024-08-26 13:45:46 +0200 | son0p | (~ff@2800:e2:f80:ee7::1) (Quit: Leaving) |
2024-08-26 13:53:52 +0200 | merijn | (~merijn@77.242.116.146) (Ping timeout: 272 seconds) |
2024-08-26 13:59:13 +0200 | sourcetarius | (~sourcetar@user/sourcetarius) (Ping timeout: 248 seconds) |
2024-08-26 14:03:12 +0200 | merijn | (~merijn@77.242.116.146) |
2024-08-26 14:04:44 +0200 | cpressey | (~weechat@176.254.71.203) (Ping timeout: 252 seconds) |
2024-08-26 14:16:42 +0200 | merijn | (~merijn@77.242.116.146) (Ping timeout: 265 seconds) |
2024-08-26 14:18:53 +0200 | merijn | (~merijn@77.242.116.146) |
2024-08-26 14:21:05 +0200 | ThePenguin7 | (~ThePengui@cust-95-80-24-166.csbnet.se) (Remote host closed the connection) |
2024-08-26 14:21:06 +0200 | <Axman6> | I'm having massive deja vu, I swear you've asked this exact question before |
2024-08-26 14:21:37 +0200 | ThePenguin7 | (~ThePengui@cust-95-80-24-166.csbnet.se) |
2024-08-26 14:22:51 +0200 | <mauke> | that would be scary because it would mean I've completely forgotten the time I ported an obscure parsing algorithm from C to Haskell, gaining a deeper understanding |
2024-08-26 14:24:00 +0200 | <Axman6> | like when you run into a problem for the first time, search for the answer, and the links are purple |
2024-08-26 14:28:02 +0200 | ddellacosta | (~ddellacos@ool-44c73c8f.dyn.optonline.net) (Ping timeout: 255 seconds) |
2024-08-26 14:29:17 +0200 | <mauke> | anyway, this function emulates what in C would be traversing down the right spine of a binary tree and modifying it in place |
2024-08-26 14:29:57 +0200 | <mauke> | only in Haskell the tree is represented as a list of functions in reverse (bottom-up) |
2024-08-26 14:31:19 +0200 | <Rembane> | Is it some kind of continuation passing style? |
2024-08-26 14:31:55 +0200 | <mauke> | no, just layers of tree with "holes" where modifications can happen |
2024-08-26 14:32:06 +0200 | <mauke> | hence the functions |
2024-08-26 14:32:42 +0200 | <mauke> | I suspect the whole thing is just a special case of a well-known general parsing algorithm |
2024-08-26 14:32:57 +0200 | <Rembane> | Got it! |
2024-08-26 14:33:10 +0200 | <Rembane> | That sounds reasonable. Just gotta turn it inside out a couple of times more... |
2024-08-26 14:34:10 +0200 | <mauke> | the basic idea is that when you have a complete expression tree and the next input symbol is a binary infix operator, it needs to be inserted in the tree at the right location |
2024-08-26 14:34:42 +0200 | <mauke> | the right location is somewhere along the rightmost branch. the exact height depends on the precedence/weight of the operator |
2024-08-26 14:35:32 +0200 | cpressey | (~weechat@176.254.71.203) |
2024-08-26 14:49:02 +0200 | <Rembane> | That feels super elegant |
2024-08-26 14:50:14 +0200 | CiaoSen | (~Jura@2a05:5800:42c:fc00:ca4b:d6ff:fec1:99da) (Ping timeout: 272 seconds) |
2024-08-26 14:56:03 +0200 | rosco | (~rosco@175.136.158.234) (Read error: Connection reset by peer) |
2024-08-26 14:57:35 +0200 | Inst | (~Inst@user/Inst) |
2024-08-26 15:00:12 +0200 | rosco | (rosco@gateway/vpn/airvpn/rosco) |
2024-08-26 15:01:35 +0200 | ZharMeny | (~user@user/ZharMeny) |
2024-08-26 15:04:09 +0200 | rosco | (rosco@gateway/vpn/airvpn/rosco) (Client Quit) |
2024-08-26 15:10:38 +0200 | murgeljm | (~murgeljm@APN-122-12-44-gprs.simobil.net) |
2024-08-26 15:11:27 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-08-26 15:13:06 +0200 | misterfish | (~misterfis@84.53.85.146) |
2024-08-26 15:18:20 +0200 | cfricke_ | (~cfricke@user/cfricke) |
2024-08-26 15:19:44 +0200 | cpressey | (~weechat@176.254.71.203) (Ping timeout: 260 seconds) |
2024-08-26 15:20:45 +0200 | cfricke | (~cfricke@user/cfricke) (Ping timeout: 246 seconds) |
2024-08-26 15:21:45 +0200 | alexherbo2 | (~alexherbo@2a02-8440-3109-4750-dded-439d-72c1-d801.rev.sfr.net) (Remote host closed the connection) |
2024-08-26 15:25:38 +0200 | spew | (~spew@201.141.102.132) |
2024-08-26 15:32:53 +0200 | spew | (~spew@201.141.102.132) (Quit: spew) |
2024-08-26 15:36:11 +0200 | cpressey | (~weechat@176.254.71.203) |
2024-08-26 15:37:03 +0200 | ystael | (~ystael@user/ystael) (Ping timeout: 245 seconds) |
2024-08-26 15:38:15 +0200 | CiaoSen | (~Jura@2a05:5800:42c:fc00:ca4b:d6ff:fec1:99da) |
2024-08-26 15:40:29 +0200 | nckx | (nckx@libera/staff/owl/nckx) |
2024-08-26 15:44:40 +0200 | son0p | (~ff@2800:e6:4001:8da7:232f:489b:caf3:dc20) |
2024-08-26 15:47:31 +0200 | cpressey | (~weechat@176.254.71.203) (Ping timeout: 264 seconds) |
2024-08-26 15:49:14 +0200 | __monty__ | (~toonn@user/toonn) (Ping timeout: 252 seconds) |
2024-08-26 15:50:29 +0200 | tomboy64 | (~tomboy64@user/tomboy64) (Ping timeout: 260 seconds) |
2024-08-26 16:04:09 +0200 | tomboy64 | (~tomboy64@user/tomboy64) |
2024-08-26 16:05:20 +0200 | __monty__ | (~toonn@user/toonn) |
2024-08-26 16:10:52 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2024-08-26 16:11:51 +0200 | troydm | (~troydm@user/troydm) (Ping timeout: 246 seconds) |
2024-08-26 16:20:25 +0200 | kalj | (~kalj@h-158-174-207-174.NA.cust.bahnhof.se) |
2024-08-26 16:23:10 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) |
2024-08-26 16:23:17 +0200 | euphores | (~SASL_euph@user/euphores) (Ping timeout: 248 seconds) |
2024-08-26 16:25:56 +0200 | ZharMeny | (~user@user/ZharMeny) (Ping timeout: 255 seconds) |
2024-08-26 16:26:06 +0200 | Guest|64 | (~Guest|64@173.38.117.73) |
2024-08-26 16:31:04 +0200 | euphores | (~SASL_euph@user/euphores) |
2024-08-26 16:31:23 +0200 | Guest|64 | (~Guest|64@173.38.117.73) (Quit: Connection closed) |
2024-08-26 16:31:48 +0200 | Guest|64 | (~Guest|64@45-26-3-91.lightspeed.rlghnc.sbcglobal.net) |
2024-08-26 16:33:57 +0200 | kalj | (~kalj@h-158-174-207-174.NA.cust.bahnhof.se) (Ping timeout: 256 seconds) |
2024-08-26 16:37:18 +0200 | Guest|64 | (~Guest|64@45-26-3-91.lightspeed.rlghnc.sbcglobal.net) (Quit: Connection closed) |
2024-08-26 16:38:00 +0200 | smalltalkman | (uid545680@id-545680.hampstead.irccloud.com) |
2024-08-26 16:39:55 +0200 | ddellacosta | (~ddellacos@ool-44c73c8f.dyn.optonline.net) |
2024-08-26 16:45:48 +0200 | ZharMeny | (~user@user/ZharMeny) |
2024-08-26 16:47:58 +0200 | murgeljm | (~murgeljm@APN-122-12-44-gprs.simobil.net) (Quit: murgeljm) |
2024-08-26 16:48:04 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-08-26 16:50:06 +0200 | cfricke_ | (~cfricke@user/cfricke) (Quit: WeeChat 4.2.2) |
2024-08-26 16:54:43 +0200 | billchenchina- | (~billchenc@103.152.35.21) |
2024-08-26 16:59:55 +0200 | youthlic1 | (~Thunderbi@user/youthlic) |
2024-08-26 17:01:02 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2) |
2024-08-26 17:01:15 +0200 | youthlic | (~Thunderbi@user/youthlic) (Ping timeout: 260 seconds) |
2024-08-26 17:01:15 +0200 | youthlic1 | youthlic |
2024-08-26 17:05:51 +0200 | kuribas | (~user@ptr-17d51enukyvq8hfwj1t.18120a2.ip6.access.telenet.be) |
2024-08-26 17:07:51 +0200 | alexherbo2 | (~alexherbo@2a02-8440-3109-4750-1ded-dcf2-0d59-d526.rev.sfr.net) |
2024-08-26 17:10:47 +0200 | Guest75 | (~Guest75@2600:387:f:a10::6) (Ping timeout: 256 seconds) |
2024-08-26 17:11:56 +0200 | waleee | (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
2024-08-26 17:12:56 +0200 | spew | (~spew@201.141.102.132) |
2024-08-26 17:19:51 +0200 | machinedgod | (~machinedg@d50-99-47-73.abhsia.telus.net) (Read error: Connection reset by peer) |
2024-08-26 17:19:54 +0200 | machined1od | (~machinedg@d50-99-47-73.abhsia.telus.net) |
2024-08-26 17:23:13 +0200 | troydm | (~troydm@user/troydm) |
2024-08-26 17:34:05 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-08-26 17:41:00 +0200 | youthlic | (~Thunderbi@user/youthlic) (Remote host closed the connection) |
2024-08-26 17:41:19 +0200 | youthlic | (~Thunderbi@user/youthlic) |
2024-08-26 17:42:02 +0200 | ystael | (~ystael@user/ystael) |
2024-08-26 17:45:24 +0200 | jinsun | (~jinsun@user/jinsun) |
2024-08-26 17:46:49 +0200 | ash3en | (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) (Quit: ash3en) |
2024-08-26 17:47:51 +0200 | tomboy64 | (~tomboy64@user/tomboy64) (Ping timeout: 276 seconds) |
2024-08-26 17:49:04 +0200 | CiaoSen | (~Jura@2a05:5800:42c:fc00:ca4b:d6ff:fec1:99da) (Ping timeout: 260 seconds) |
2024-08-26 17:52:13 +0200 | <tomsmeding> | it also feels like it has quadratic complexity in the worst case :p |
2024-08-26 17:52:47 +0200 | ZharMeny | (~user@user/ZharMeny) (Ping timeout: 252 seconds) |
2024-08-26 17:56:39 +0200 | mceresa | (~mceresa@user/mceresa) (Remote host closed the connection) |
2024-08-26 17:57:43 +0200 | mceresa | (~mceresa@user/mceresa) |
2024-08-26 18:01:37 +0200 | tomboy64 | (~tomboy64@user/tomboy64) |
2024-08-26 18:02:32 +0200 | alexherbo2 | (~alexherbo@2a02-8440-3109-4750-1ded-dcf2-0d59-d526.rev.sfr.net) (Remote host closed the connection) |
2024-08-26 18:03:00 +0200 | alexherbo2 | (~alexherbo@2a02-8440-3109-4750-e0d9-8199-91b0-5b4f.rev.sfr.net) |
2024-08-26 18:05:57 +0200 | <haskellbridge> | <maralorn> Can someone tell me what the type of CTime is in ghcjs? |
2024-08-26 18:06:31 +0200 | alexherbo2 | (~alexherbo@2a02-8440-3109-4750-e0d9-8199-91b0-5b4f.rev.sfr.net) (Remote host closed the connection) |
2024-08-26 18:06:46 +0200 | kuribas | (~user@ptr-17d51enukyvq8hfwj1t.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1)) |
2024-08-26 18:07:17 +0200 | <haskellbridge> | <maralorn> I got to: https://gitlab.haskell.org/ghc/ghc/-/blob/master/libraries/ghc-internal/src/GHC/Internal/Foreign/C… |
2024-08-26 18:07:35 +0200 | tomsmeding | . o O ( give ghcjs `() :: CTime` and look at the error message ) |
2024-08-26 18:07:42 +0200 | <haskellbridge> | <maralorn> which says: "ARITHMETIC_TYPE(CTime,"time_t",HTYPE_TIME_T)" |
2024-08-26 18:07:49 +0200 | ddellacosta | (~ddellacos@ool-44c73c8f.dyn.optonline.net) (Ping timeout: 248 seconds) |
2024-08-26 18:08:16 +0200 | <haskellbridge> | <maralorn> Ah, well. Its a newtype. But yeah, I can try something like that. |
2024-08-26 18:08:20 +0200 | <tomsmeding> | maralorn https://gitlab.haskell.org/ghc/ghc/-/blob/master/libraries/ghc-internal/include/CTypes.h#L23-24 |
2024-08-26 18:10:04 +0200 | <haskellbridge> | <maralorn> Yeah, but how is HTYPE_TIME_T defined?^^ |
2024-08-26 18:10:14 +0200 | ddellacosta | (~ddellacos@ool-44c73c8f.dyn.optonline.net) |
2024-08-26 18:10:15 +0200 | <haskellbridge> | <maralorn> Seems to be automatically generated. |
2024-08-26 18:10:23 +0200 | <haskellbridge> | <maralorn> But I will figure out soon enough with your idea. |
2024-08-26 18:12:35 +0200 | machined1od | (~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 255 seconds) |
2024-08-26 18:17:14 +0200 | <tomsmeding> | maralorn: _build/stage1/libraries/ghc-internal/build/config.status |
2024-08-26 18:17:16 +0200 | comerijn | (~merijn@77.242.116.146) |
2024-08-26 18:17:19 +0200 | <tomsmeding> | D["HTYPE_TIME_T"]=" Int64" |
2024-08-26 18:17:23 +0200 | youthlic | (~Thunderbi@user/youthlic) (Quit: youthlic) |
2024-08-26 18:17:26 +0200 | <tomsmeding> | but that may be system-dependent |
2024-08-26 18:20:02 +0200 | merijn | (~merijn@77.242.116.146) (Ping timeout: 244 seconds) |
2024-08-26 18:21:00 +0200 | <haskellbridge> | <maralorn> It is. In ghcjs it seems to be Int32 |
2024-08-26 18:21:47 +0200 | <haskellbridge> | <maralorn> Which is unfortunate because it means that getTimeZone crashes for dates auf January 2038 in ghcjs. 😄 |
2024-08-26 18:21:56 +0200 | <haskellbridge> | <maralorn> * after |
2024-08-26 18:21:58 +0200 | <tomsmeding> | ... oops :D |
2024-08-26 18:22:19 +0200 | comerijn | (~merijn@77.242.116.146) (Ping timeout: 264 seconds) |
2024-08-26 18:23:29 +0200 | ddellacosta | (~ddellacos@ool-44c73c8f.dyn.optonline.net) (Ping timeout: 260 seconds) |
2024-08-26 18:25:33 +0200 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
2024-08-26 18:26:11 +0200 | chiselfuse | (~chiselfus@user/chiselfuse) (Ping timeout: 260 seconds) |
2024-08-26 18:26:46 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Ping timeout: 260 seconds) |
2024-08-26 18:28:35 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2024-08-26 18:29:27 +0200 | chiselfuse | (~chiselfus@user/chiselfuse) |
2024-08-26 18:31:29 +0200 | ddellacosta | (~ddellacos@ool-44c73c8f.dyn.optonline.net) |
2024-08-26 18:33:18 +0200 | pavonia | (~user@user/siracusa) |
2024-08-26 18:34:43 +0200 | <haskellbridge> | <maralorn> Might someone be able to enlighten me where I can find how ghcjs replaces |
2024-08-26 18:34:43 +0200 | <haskellbridge> | "foreign import ccall unsafe "HsTime.h get_current_timezone_seconds"" with something that works in javascript? |
2024-08-26 18:40:02 +0200 | billchenchina- | (~billchenc@103.152.35.21) (Quit: Leaving) |
2024-08-26 18:44:06 +0200 | infinity0 | (~infinity0@pwned.gg) (Ping timeout: 246 seconds) |
2024-08-26 18:50:48 +0200 | <EvanR> | Int64 seems tricky to just have in javascript |
2024-08-26 18:50:54 +0200 | jinsun | (~jinsun@user/jinsun) (Ping timeout: 276 seconds) |
2024-08-26 18:54:24 +0200 | Inst | (~Inst@user/Inst) (Ping timeout: 252 seconds) |
2024-08-26 18:54:56 +0200 | ft | (~ft@p4fc2a393.dip0.t-ipconnect.de) |
2024-08-26 18:55:53 +0200 | jinsun | (~jinsun@user/jinsun) |
2024-08-26 18:57:19 +0200 | <mauke> | tomsmeding: funnily enough I think this part might actually be linear |
2024-08-26 18:57:52 +0200 | <mauke> | I never fold over the same nodes twice. any subtree folded over becomes a left child and is not re-traversed |
2024-08-26 19:04:40 +0200 | infinity0 | (~infinity0@pwned.gg) |
2024-08-26 19:07:13 +0200 | <haskellbridge> | <thirdofmay18081814goya> if "e" is an expression without WHNF and "[[-]]" is the semantics/evalution function, "[[e]] = ⊥" right? |
2024-08-26 19:07:42 +0200 | jinsun | (~jinsun@user/jinsun) (Read error: Connection reset by peer) |
2024-08-26 19:08:45 +0200 | <tomsmeding> | mauke: ah, I didn't catch that part :) |
2024-08-26 19:09:42 +0200 | <tomsmeding> | maralorn: compile four JS files: one without the import, one with the import, one with the import with one use of the function, and one with the import and 2 uses of the function |
2024-08-26 19:10:15 +0200 | <tomsmeding> | hopefully file 1 and file 2 will be distinct, giving you your answer; if not, look at (3 - 1) - (4 - 3) |
2024-08-26 19:10:56 +0200 | <tomsmeding> | (-) being subtraction/difference :p |
2024-08-26 19:25:27 +0200 | Inst | (~Inst@user/Inst) |
2024-08-26 19:29:43 +0200 | jinsun | (~jinsun@user/jinsun) |
2024-08-26 19:35:25 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-08-26 19:38:07 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) (Ping timeout: 265 seconds) |
2024-08-26 19:38:07 +0200 | c_wraith | (~c_wraith@adjoint.us) (Ping timeout: 265 seconds) |
2024-08-26 19:38:18 +0200 | c_wraith | (~c_wraith@adjoint.us) |
2024-08-26 19:38:23 +0200 | dibblego | (~dibblego@116-255-1-119.ip4.superloop.au) |
2024-08-26 19:38:23 +0200 | dibblego | (~dibblego@116-255-1-119.ip4.superloop.au) (Changing host) |
2024-08-26 19:38:23 +0200 | dibblego | (~dibblego@haskell/developer/dibblego) |
2024-08-26 19:40:09 +0200 | Square | (~Square@user/square) |
2024-08-26 19:42:35 +0200 | Square2 | (~Square4@user/square) (Ping timeout: 255 seconds) |
2024-08-26 19:42:55 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-08-26 19:44:39 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
2024-08-26 19:48:01 +0200 | <tomsmeding> | EvanR: JS has BigInt now though ;) |
2024-08-26 19:56:54 +0200 | Square | (~Square@user/square) (Remote host closed the connection) |
2024-08-26 19:57:11 +0200 | Square | (~Square@user/square) |
2024-08-26 19:58:07 +0200 | Square | (~Square@user/square) (Remote host closed the connection) |
2024-08-26 19:58:24 +0200 | Square | (~Square@user/square) |
2024-08-26 19:59:29 +0200 | mceresa | (~mceresa@user/mceresa) (Remote host closed the connection) |
2024-08-26 20:00:05 +0200 | mceresa | (~mceresa@user/mceresa) |
2024-08-26 20:00:35 +0200 | mceresa | (~mceresa@user/mceresa) (Remote host closed the connection) |
2024-08-26 20:01:08 +0200 | son0p | (~ff@2800:e6:4001:8da7:232f:489b:caf3:dc20) (Quit: Leaving) |
2024-08-26 20:01:47 +0200 | spew | (~spew@201.141.102.132) (Quit: spew) |
2024-08-26 20:02:43 +0200 | mceresa | (~mceresa@user/mceresa) |
2024-08-26 20:08:12 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2024-08-26 20:10:47 +0200 | ash3en | (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) |
2024-08-26 20:12:36 +0200 | misterfish | (~misterfis@84.53.85.146) (Ping timeout: 252 seconds) |
2024-08-26 20:13:53 +0200 | spew | (~spew@201.141.102.132) |
2024-08-26 20:21:28 +0200 | Guest50 | (~Guest50@109-252-8-98.nat.spd-mgts.ru) |
2024-08-26 20:22:04 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
2024-08-26 20:22:36 +0200 | Guest50 | (~Guest50@109-252-8-98.nat.spd-mgts.ru) (Client Quit) |
2024-08-26 20:29:58 +0200 | misterfish | (~misterfis@84.53.85.146) |
2024-08-26 20:35:19 +0200 | Inst | (~Inst@user/Inst) (Ping timeout: 260 seconds) |
2024-08-26 20:36:34 +0200 | bilegeek | (~bilegeek@2600:1008:b017:c901:621d:4241:2804:e5ab) |
2024-08-26 20:36:52 +0200 | cpressey | (~weechat@176.254.71.203) |
2024-08-26 20:36:53 +0200 | <haskellbridge> | <thirdofmay18081814goya> uh, a somewhat more accurate statement: if no reduction of "e" produces a WHNF, then evaluation of "e" is non-terminating, so "[[e]] = ⊥" |
2024-08-26 20:38:21 +0200 | <monochrom> | I agree. |
2024-08-26 20:38:40 +0200 | rvalue- | (~rvalue@user/rvalue) |
2024-08-26 20:38:50 +0200 | <haskellbridge> | <thirdofmay18081814goya> nice ty! |
2024-08-26 20:39:50 +0200 | rvalue | (~rvalue@user/rvalue) (Ping timeout: 272 seconds) |
2024-08-26 20:40:05 +0200 | JuanDaugherty | (~juan@user/JuanDaugherty) |
2024-08-26 20:40:45 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 276 seconds) |
2024-08-26 20:41:35 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2024-08-26 20:41:59 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds) |
2024-08-26 20:43:33 +0200 | Square | (~Square@user/square) (Ping timeout: 248 seconds) |
2024-08-26 20:43:51 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 260 seconds) |
2024-08-26 20:46:35 +0200 | rvalue- | rvalue |
2024-08-26 20:48:47 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 20:50:07 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
2024-08-26 20:50:31 +0200 | <haskellbridge> | <thirdofmay18081814goya> hm, we"d want to distinguish non-terminating expressions that overflow vs. expressions like "[1..]` |
2024-08-26 20:50:40 +0200 | <haskellbridge> | <thirdofmay18081814goya> * we'd want to distinguish non-terminating expressions that overflow vs. expressions like "\[1..\]\" |
2024-08-26 20:50:49 +0200 | <haskellbridge> | <thirdofmay18081814goya> * "[1..\]" |
2024-08-26 20:50:54 +0200 | <haskellbridge> | <thirdofmay18081814goya> hm, we'd want to distinguish non-terminating expressions that overflow vs. expressions like "[1..]" |
2024-08-26 20:53:28 +0200 | <tomsmeding> | mauke: disclaimer, I've spent all of 10 seconds thinking about it, but perhaps Dijkstra's Shunting Yard algorithm is similar? |
2024-08-26 20:53:42 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2024-08-26 20:55:39 +0200 | neuroevolutus | (~neuroevol@37.19.200.148) |
2024-08-26 20:57:13 +0200 | <EvanR> | we do distinguish ⊥ from [1..] |
2024-08-26 20:57:26 +0200 | <EvanR> | they are different |
2024-08-26 20:57:51 +0200 | <haskellbridge> | <thirdofmay18081814goya> EvanR: what's a decent formal statement for this fact? |
2024-08-26 20:58:06 +0200 | <EvanR> | well, what is [[undefined]] and what is [[ [1..] ] |
2024-08-26 20:58:41 +0200 | <tomsmeding> | do you want to describe call-by-value or call-by-need? |
2024-08-26 20:58:46 +0200 | <EvanR> | this might be a reason why the jargon "non-terminate" is maybe bad |
2024-08-26 20:58:52 +0200 | <EvanR> | "non-terminating" |
2024-08-26 20:59:15 +0200 | <haskellbridge> | <thirdofmay18081814goya> tomsmeding: call by need, so that "[1..]" make sense |
2024-08-26 20:59:23 +0200 | <haskellbridge> | <thirdofmay18081814goya> EvanR: hm right |
2024-08-26 20:59:26 +0200 | <EvanR> | ⊥ is the least defined semantic value |
2024-08-26 20:59:55 +0200 | <EvanR> | it's used to represent the meaning of non-terminating computations, and other things |
2024-08-26 21:00:02 +0200 | <EvanR> | meanwhile [1..] isn't non-terminating in that way |
2024-08-26 21:00:21 +0200 | <EvanR> | another way to describe [1..] is productive |
2024-08-26 21:00:22 +0200 | <tomsmeding> | surely, we have [[undefined]] = ⊥, [[1 : undefined]] = 1 : ⊥, [[1 : 2 : undefined]] = 1 : 2 : ⊥ |
2024-08-26 21:00:46 +0200 | <tomsmeding> | so then what is [[ [1..] ]]? Dunno, looks like this notation does not scale well enough |
2024-08-26 21:01:01 +0200 | <EvanR> | it is 1 : 2 : ... |
2024-08-26 21:01:21 +0200 | <EvanR> | 1 : 2 : 3 : [[ [4..] ]] |
2024-08-26 21:01:22 +0200 | <tomsmeding> | no, that is 1 : 2 : 4 : 8 : 16 : ... |
2024-08-26 21:01:57 +0200 | <tomsmeding> | the question, what is the type of [[_]] |
2024-08-26 21:02:04 +0200 | <tomsmeding> | Expression -> ? |
2024-08-26 21:02:05 +0200 | <EvanR> | no, it's not xD |
2024-08-26 21:02:34 +0200 | <EvanR> | syntax -> semantics |
2024-08-26 21:02:49 +0200 | <tomsmeding> | EvanR: any finite-length sequence of N numbers followed by "..." can mean anything you want, just fit an N-degree polynomial to it :p |
2024-08-26 21:03:03 +0200 | <EvanR> | well I clarified to something that doesn't use ... |
2024-08-26 21:03:08 +0200 | <tomsmeding> | what is the precise semantical domain, was my question ;) |
2024-08-26 21:03:12 +0200 | <tomsmeding> | yes I was joking |
2024-08-26 21:03:35 +0200 | <haskellbridge> | <thirdofmay18081814goya> tomsmeding: do we absolutely need one |
2024-08-26 21:03:39 +0200 | <haskellbridge> | <thirdofmay18081814goya> can't we reason by rewriting? |
2024-08-26 21:03:40 +0200 | <EvanR> | you see authors say that the semantic 1 2 3 etc are "the numbers 1 2 and 3" |
2024-08-26 21:04:00 +0200 | <tomsmeding> | EvanR: your equality ([[1 : l]] = 1 : [[l]]) looks nice, but that looks awfully like the semantical domain is "Haskell", which is circular :p |
2024-08-26 21:04:18 +0200 | <haskellbridge> | <thirdofmay18081814goya> like i'm trying to avoid domain theory |
2024-08-26 21:04:22 +0200 | <EvanR> | it looks that way doesn't it |
2024-08-26 21:04:26 +0200 | <tomsmeding> | we can definitely reason by rewriting, and then this [[1 : l]] = 1 : [[l]] equality is fine |
2024-08-26 21:04:27 +0200 | <EvanR> | but it's not haskell |
2024-08-26 21:04:38 +0200 | <monochrom> | You cannnot avoid domain theory for infinite lists. |
2024-08-26 21:04:58 +0200 | <monochrom> | or at least, for Haskell infinite lists. |
2024-08-26 21:05:16 +0200 | <tomsmeding> | but if you reason by rewriting, you've defined small-step operational semantics, which is not at all the same as denotational semantics, which is I think what you were originally looking for |
2024-08-26 21:06:15 +0200 | <EvanR> | syntax -> syntax as a semantics doesn't work in haskell because, for one thing infinite stuff |
2024-08-26 21:07:13 +0200 | <EvanR> | and the program that freezes up and produces nothing doesn't have a form |
2024-08-26 21:07:23 +0200 | <EvanR> | you rewrite to empty string? ... no |
2024-08-26 21:08:49 +0200 | <monochrom> | syntax -> syntax as a semantics is OK. It is just operational or equational or axiomatic instead of denotational. |
2024-08-26 21:09:09 +0200 | <EvanR> | it's often the case that haskell is easy to reason about when you pretend ⊥ doesn't happen. But if ⊥ happens it gets more complicated |
2024-08-26 21:09:56 +0200 | <haskellbridge> | <thirdofmay18081814goya> hm, what sort of operational semantics could distinguish between "[1..]" and "fix \x -> x + 0"? |
2024-08-26 21:10:15 +0200 | <EvanR> | that's easy |
2024-08-26 21:10:28 +0200 | <EvanR> | try to evaluate either to WHNF |
2024-08-26 21:10:56 +0200 | <EvanR> | the results are distinguishable |
2024-08-26 21:11:05 +0200 | <EvanR> | by a competent jury |
2024-08-26 21:11:23 +0200 | <tomsmeding> | operational semantics only describes the next step in evaluation; it doesn't go all the way to the end |
2024-08-26 21:11:38 +0200 | <monochrom> | [1..] is simply enumFrom 1 (as a thunk) |
2024-08-26 21:12:17 +0200 | <EvanR> | if the next step is WHNF, they behave different on the first step |
2024-08-26 21:12:25 +0200 | <monochrom> | If you WHNF it, it's probably something like 0 : enumFrom (0+1), fullstop. |
2024-08-26 21:13:05 +0200 | <haskellbridge> | <thirdofmay18081814goya> hm I see |
2024-08-26 21:13:07 +0200 | <monochrom> | whereas fix \x -> x + 0 won't have a WHNF |
2024-08-26 21:14:18 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-08-26 21:15:07 +0200 | <monochrom> | err, 1 : enumFrom (1+1). Why doesn't everyone start from 0? |
2024-08-26 21:15:25 +0200 | <tomsmeding> | to keep you on your toes :) |
2024-08-26 21:15:30 +0200 | <tomsmeding> | ever programmed APL? |
2024-08-26 21:15:35 +0200 | <monochrom> | I can understand why people in real analysis starting from 1. |
2024-08-26 21:15:37 +0200 | <EvanR> | because 1 is first duh |
2024-08-26 21:15:43 +0200 | <EvanR> | 0 is zeroth |
2024-08-26 21:15:43 +0200 | <monochrom> | 0st. |
2024-08-26 21:16:42 +0200 | <tomsmeding> | ( https://aplwiki.com/wiki/Index_origin ) |
2024-08-26 21:17:45 +0200 | ash3en | (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) (Quit: ash3en) |
2024-08-26 21:18:13 +0200 | ash3en | (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) |
2024-08-26 21:20:28 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2024-08-26 21:22:08 +0200 | img | (~img@user/img) |
2024-08-26 21:22:58 +0200 | machinedgod | (~machinedg@d50-99-47-73.abhsia.telus.net) |
2024-08-26 21:23:58 +0200 | <probie> | I think most modern APL uses `⎕IO←0`. Without it, you can't index an array with a boolean, which is inconvenient |
2024-08-26 21:24:58 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 21:26:50 +0200 | <haskellbridge> | <thirdofmay18081814goya> hm yeah, no satisfactory way to reason about "[1..]" vs "fix \x -> x + 0" without more theory. or limited to operational semantics we might say something like, "[1..]" has intermediary WHNF forms |
2024-08-26 21:27:31 +0200 | <tomsmeding> | I think what monochrom was getting at, is that perhaps [[_]] should only evaluate to WHNF |
2024-08-26 21:28:39 +0200 | <haskellbridge> | <thirdofmay18081814goya> oh, and the non-terminating behaviour of "ghci> [1..]" would be something due to the Show derivation |
2024-08-26 21:28:44 +0200 | <tomsmeding> | then the codomain of [[_]] would be "values with thunks", "values" being finite combinations of data constructors |
2024-08-26 21:28:47 +0200 | troydm | (~troydm@user/troydm) (Ping timeout: 255 seconds) |
2024-08-26 21:29:01 +0200 | <tomsmeding> | [[ [1..] ]] = [[1]] : [[ [2..] ]] |
2024-08-26 21:29:41 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
2024-08-26 21:29:47 +0200 | <tomsmeding> | perhaps less ambiguously written: [[ [1..] ]] = Thunk{1} : Thunk{[2..]}, where `Thunk{E}` is a thunk resulting from not evaluating expression E |
2024-08-26 21:30:25 +0200 | <tomsmeding> | [[ undefined ]] = ⊥ |
2024-08-26 21:30:42 +0200 | <haskellbridge> | <thirdofmay18081814goya> hm I see |
2024-08-26 21:30:49 +0200 | <tomsmeding> | but [[ [undefined] ]] = Thunk{undefined} : [] |
2024-08-26 21:31:05 +0200 | <tomsmeding> | (perhaps that [] should be in a Thunk{}; not sure) |
2024-08-26 21:31:46 +0200 | <tomsmeding> | I feel like one could make this formal |
2024-08-26 21:32:44 +0200 | <dolio> | Describing printing 'useful' output forever as 'non-terminating' is crude, if the latter is also what is used to describe a non-productive loop. |
2024-08-26 21:33:16 +0200 | <tomsmeding> | (and indeed, with this WHNF definition of [[_]], [1..] terminates!) |
2024-08-26 21:34:37 +0200 | ash3en | (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) (Quit: ash3en) |
2024-08-26 21:34:58 +0200 | <haskellbridge> | <thirdofmay18081814goya> tomsmeding: yeah I think that works, what was skewing my interpretation was that "ghci> [1..]" evaluates all thunks in "[1..]" |
2024-08-26 21:35:14 +0200 | <tomsmeding> | that's because it tries to evaluate `show [1..]` to NF |
2024-08-26 21:35:15 +0200 | <haskellbridge> | <thirdofmay18081814goya> dolio: yeah that's what I was trying to fix |
2024-08-26 21:35:59 +0200 | <haskellbridge> | <thirdofmay18081814goya> right, and "show" is strict |
2024-08-26 21:36:18 +0200 | <dolio> | No, it isn't. |
2024-08-26 21:36:24 +0200 | <tomsmeding> | note that I wrote "NF", not "WHNF" |
2024-08-26 21:36:45 +0200 | <tomsmeding> | `show` on [Int] happens to be strict, though |
2024-08-26 21:37:24 +0200 | target_i | (~target_i@user/target-i/x-6023099) |
2024-08-26 21:38:03 +0200 | <dolio> | > show (undefined :: [Int]) |
2024-08-26 21:38:04 +0200 | <lambdabot> | "*Exception: Prelude.undefined |
2024-08-26 21:39:19 +0200 | michalz_ | (~michalz@185.246.207.222) |
2024-08-26 21:40:24 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 21:41:16 +0200 | michalz | (~michalz@185.246.207.193) (Ping timeout: 272 seconds) |
2024-08-26 21:42:28 +0200 | <dolio> | I don't think show is strict on any type. |
2024-08-26 21:42:46 +0200 | gmg | (~user@user/gehmehgeh) (Ping timeout: 260 seconds) |
2024-08-26 21:43:36 +0200 | <tomsmeding> | > show (undefined :: [Int]) `seq` () |
2024-08-26 21:43:38 +0200 | <lambdabot> | *Exception: Prelude.undefined |
2024-08-26 21:43:38 +0200 | <haskellbridge> | <thirdofmay18081814goya> dolio: don't we have "show undefined" throwing an error on any type for "undefined"? |
2024-08-26 21:43:54 +0200 | <tomsmeding> | dolio: what do you mean precisely? It seems strict to me |
2024-08-26 21:44:18 +0200 | <tomsmeding> | `show` is not strict if the Show instance for the type in question does not define a strict `show` :p |
2024-08-26 21:44:22 +0200 | gmg | (~user@user/gehmehgeh) |
2024-08-26 21:44:26 +0200 | <tomsmeding> | instance Show MyFoolishType where show _ = "foolish" |
2024-08-26 21:44:59 +0200 | <dolio> | Oh, I guess it's the extra layer of show that's non-strict. |
2024-08-26 21:45:14 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-08-26 21:45:18 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
2024-08-26 21:45:25 +0200 | <tomsmeding> | you mean the `"` being printed? |
2024-08-26 21:45:32 +0200 | <tomsmeding> | yeah that's `show . show` not being strict :p |
2024-08-26 21:45:38 +0200 | <dolio> | Yeah. That's String show. I was confusing myself. |
2024-08-26 21:45:47 +0200 | michalz_ | (~michalz@185.246.207.222) (Remote host closed the connection) |
2024-08-26 21:46:16 +0200 | <EvanR> | > show (undefined :: [Char]) |
2024-08-26 21:46:17 +0200 | <lambdabot> | "\"*Exception: Prelude.undefined |
2024-08-26 21:47:12 +0200 | <dolio> | Anyhow, show being strict for various types is not relevant to the infintie list example. |
2024-08-26 21:48:15 +0200 | <haskellbridge> | <thirdofmay18081814goya> maybe non-terminating is still useful here? since "[1..]" is terminating when not evaluated strictly? |
2024-08-26 21:48:37 +0200 | michalz | (~michalz@185.246.207.205) |
2024-08-26 21:48:45 +0200 | <dolio> | [1..] is well-defined, so being strict in it is fine. |
2024-08-26 21:48:47 +0200 | <EvanR> | you're just conflating at least two different senses of "non-terminating" |
2024-08-26 21:48:58 +0200 | <EvanR> | just admit that it means different things |
2024-08-26 21:49:00 +0200 | <dolio> | > [1..] `seq` () |
2024-08-26 21:49:01 +0200 | <tomsmeding> | [1..] does not have a normal form, but it does have a weak-head normal form |
2024-08-26 21:49:01 +0200 | <lambdabot> | () |
2024-08-26 21:49:17 +0200 | <tomsmeding> | that is to say: in WHNF evaluation it terminates; in NF evaluation it does not |
2024-08-26 21:49:44 +0200 | <dolio> | And showing [1..] produces an infinite string, which will then be printed infinitely. |
2024-08-26 21:49:47 +0200 | <tomsmeding> | ghci NF-evaluates `show E` where E is what you entered; for [Int], NF-evaluating `show` happens to NF-evaluate the argument |
2024-08-26 21:49:48 +0200 | <EvanR> | or just stick to more technical and specific stuff like WHNF |
2024-08-26 21:50:16 +0200 | <haskellbridge> | <thirdofmay18081814goya> doesn't haskell only do "WHNF" evaluation? |
2024-08-26 21:50:22 +0200 | <haskellbridge> | <thirdofmay18081814goya> * WHNF |
2024-08-26 21:50:31 +0200 | <EvanR> | > rnf [1..] |
2024-08-26 21:50:32 +0200 | <lambdabot> | error: Variable not in scope: rnf :: [a0] -> t |
2024-08-26 21:50:50 +0200 | <EvanR> | you can use the deepseq package to ask for normal forms |
2024-08-26 21:51:27 +0200 | <EvanR> | though it's often more practical to use strict fields or bang patterns for some purpose |
2024-08-26 21:51:46 +0200 | michalz | (~michalz@185.246.207.205) (Remote host closed the connection) |
2024-08-26 21:51:54 +0200 | <EvanR> | strict fields changes how data gets evaluated when |
2024-08-26 21:52:34 +0200 | <haskellbridge> | <thirdofmay18081814goya> right, don't we have NF evaluation of an argument only when a function is strict in that argument? |
2024-08-26 21:52:44 +0200 | <EvanR> | that's not what strict means |
2024-08-26 21:53:00 +0200 | <tomsmeding> | "strict" in haskell refers to WHNF |
2024-08-26 21:53:03 +0200 | <tomsmeding> | not to NF :) |
2024-08-26 21:53:16 +0200 | JuanDaugherty | (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
2024-08-26 21:53:55 +0200 | <EvanR> | strict also means specifically that a function necessarily ⊥s when presented with ⊥ |
2024-08-26 21:54:24 +0200 | michalz | (~michalz@185.246.207.205) |
2024-08-26 21:54:36 +0200 | <EvanR> | which doesn't require normal forms to happen |
2024-08-26 21:55:49 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 21:55:52 +0200 | waleee | (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 265 seconds) |
2024-08-26 21:56:25 +0200 | <dolio> | > show (1:2:3:4:undefined) |
2024-08-26 21:56:26 +0200 | <lambdabot> | "[1,2,3,4*Exception: Prelude.undefined |
2024-08-26 21:58:17 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 265 seconds) |
2024-08-26 21:58:28 +0200 | <haskellbridge> | <thirdofmay18081814goya> ah right I was getting confused. if "f" is strict in "x", "x" still only gets evaluated to the next WHNF |
2024-08-26 21:58:53 +0200 | <tomsmeding> | well, "f is strict" means that x gets evaluated _at least_ to WHNF |
2024-08-26 21:58:57 +0200 | <tomsmeding> | f might evaluate x further |
2024-08-26 21:59:10 +0200 | <tomsmeding> | `length . show` evaluates a whole lot, typically |
2024-08-26 21:59:18 +0200 | <dolio> | id is strict |
2024-08-26 21:59:30 +0200 | <EvanR> | haha yeah |
2024-08-26 21:59:40 +0200 | <EvanR> | strict without having to evaluate anything at all! |
2024-08-26 22:00:06 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-08-26 22:00:22 +0200 | <EvanR> | where do all these random associations between evaluation and strictness come from! |
2024-08-26 22:00:34 +0200 | <haskellbridge> | <thirdofmay18081814goya> profound confusion |
2024-08-26 22:01:04 +0200 | <mauke> | const undefined is strict |
2024-08-26 22:07:34 +0200 | <tomsmeding> | GHC's demand analysis calls 'const undefined' "hyper-strict", and 'id' "lazy" |
2024-08-26 22:07:54 +0200 | <tomsmeding> | comparing https://play.haskell.org/saved/J0yapC7k with the table halfway down https://bgamari.github.io/posts/2015-01-19-understanding-ghc-core.html |
2024-08-26 22:11:14 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2024-08-26 22:11:15 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 22:11:26 +0200 | stef204 | (~stef204@user/stef204) |
2024-08-26 22:13:59 +0200 | <EvanR> | good, that settles another myth, that lazy = non-strict |
2024-08-26 22:14:41 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer) |
2024-08-26 22:14:45 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
2024-08-26 22:15:41 +0200 | ddellacosta | (~ddellacos@ool-44c73c8f.dyn.optonline.net) (Ping timeout: 252 seconds) |
2024-08-26 22:16:18 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-08-26 22:16:21 +0200 | <tomsmeding> | I always get annoyed that there is not a single up-to-date source of truth to what the demand annotation notation means |
2024-08-26 22:16:36 +0200 | <tomsmeding> | that blog post is from 2015 and it seems outdated, because I get 1L from GHC and the blog post describes 1*L |
2024-08-26 22:16:51 +0200 | <tomsmeding> | I never can find anything in the source, and the wiki also doesn't seem to have anything |
2024-08-26 22:16:57 +0200 | ddellacosta | (~ddellacos@ool-44c73c8f.dyn.optonline.net) |
2024-08-26 22:17:09 +0200 | <tomsmeding> | but the GHC source makes _extensive_ use of the notation in Notes in the demand analyser |
2024-08-26 22:17:28 +0200 | <tomsmeding> | with gems like P(AAAdAAAAA) |
2024-08-26 22:17:51 +0200 | Guest1 | (~Guest1@198.181.38.121.16clouds.com) |
2024-08-26 22:18:06 +0200 | waleee | (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
2024-08-26 22:23:33 +0200 | waleee | (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 246 seconds) |
2024-08-26 22:25:52 +0200 | waleee | (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
2024-08-26 22:26:40 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 22:26:59 +0200 | Guest1 | (~Guest1@198.181.38.121.16clouds.com) (Ping timeout: 256 seconds) |
2024-08-26 22:27:46 +0200 | ddellacosta | (~ddellacos@ool-44c73c8f.dyn.optonline.net) (Ping timeout: 265 seconds) |
2024-08-26 22:27:47 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
2024-08-26 22:31:17 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-08-26 22:37:01 +0200 | ash3en | (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) |
2024-08-26 22:40:44 +0200 | misterfish | (~misterfis@84.53.85.146) (Ping timeout: 260 seconds) |
2024-08-26 22:42:06 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 22:43:01 +0200 | son0p | (~ff@186.121.18.131) |
2024-08-26 22:44:03 +0200 | michalz | (~michalz@185.246.207.205) (Remote host closed the connection) |
2024-08-26 22:46:38 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
2024-08-26 22:46:38 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds) |
2024-08-26 22:47:00 +0200 | ash3en | (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) (Quit: ash3en) |
2024-08-26 22:47:15 +0200 | benjaminl_ | (~benjaminl@c-76-144-12-233.hsd1.or.comcast.net) |
2024-08-26 22:48:54 +0200 | benjaminl | (~benjaminl@user/benjaminl) (Ping timeout: 260 seconds) |
2024-08-26 22:50:39 +0200 | ash3en | (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) |
2024-08-26 22:51:49 +0200 | ddellacosta | (~ddellacos@ool-44c73c8f.dyn.optonline.net) |
2024-08-26 22:53:37 +0200 | neuroevolutus | (~neuroevol@37.19.200.148) (Ping timeout: 256 seconds) |
2024-08-26 22:53:52 +0200 | cpressey | (~weechat@176.254.71.203) (Ping timeout: 265 seconds) |
2024-08-26 22:54:27 +0200 | alexherbo2 | (~alexherbo@2a02-8440-3109-4750-f47c-92a3-9b35-3df5.rev.sfr.net) |
2024-08-26 22:57:30 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 23:00:24 +0200 | cpressey | (~weechat@176.254.71.203) |
2024-08-26 23:01:53 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-08-26 23:10:51 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 23:13:29 +0200 | spew | (~spew@201.141.102.132) (Quit: brb) |
2024-08-26 23:13:50 +0200 | spew | (~spew@201.141.102.132) |
2024-08-26 23:15:33 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-08-26 23:18:09 +0200 | cpressey | (~weechat@176.254.71.203) (Ping timeout: 246 seconds) |
2024-08-26 23:24:22 +0200 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
2024-08-26 23:24:38 +0200 | spew | (~spew@201.141.102.132) (Quit: too much light) |
2024-08-26 23:26:16 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 23:31:05 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-08-26 23:32:23 +0200 | <__monty__> | The User's Guide does mention the notation. Not sure whether it's up to date nor whether it's as detailed as you want though. |
2024-08-26 23:41:42 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-08-26 23:42:14 +0200 | target_i | (~target_i@user/target-i/x-6023099) (Quit: leaving) |
2024-08-26 23:44:53 +0200 | cpressey | (~weechat@176.254.71.203) |
2024-08-26 23:46:18 +0200 | xal | (~xal@mx1.xal.systems) (Quit: bye) |
2024-08-26 23:46:29 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-08-26 23:46:41 +0200 | ash3en | (~Thunderbi@2a02:3100:7e98:4100:89bf:d133:e52a:2d93) (Read error: Connection reset by peer) |
2024-08-26 23:48:00 +0200 | <tomsmeding> | oh _there_ it was! |
2024-08-26 23:48:03 +0200 | <tomsmeding> | __monty__: thanks |
2024-08-26 23:48:09 +0200 | xal | (~xal@mx1.xal.systems) |
2024-08-26 23:52:30 +0200 | oo_miguel | (~Thunderbi@78.10.207.45) (Ping timeout: 276 seconds) |
2024-08-26 23:57:08 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |