Newest at the top
2025-05-05 01:15:06 +0200 | Googulator33 | (~Googulato@2a01-036d-0106-4a24-1dc7-297e-fae3-e794.pool6.digikabel.hu) (Quit: Client closed) |
2025-05-05 01:01:24 +0200 | <hellwolf> | good night. |
2025-05-05 01:01:21 +0200 | <hellwolf> | YulApply :: forall eff a b. YulO2 a b => YulCat eff (YulCat eff a b ⊗ a) b |
2025-05-05 01:01:21 +0200 | <hellwolf> | to complete, apply is: |
2025-05-05 01:00:37 +0200 | <hellwolf> | YulCurry (YulSwitch [(True, ..), (False, ..)]) :: YulCat eff (a ⊗ BOOL) c |
2025-05-05 00:59:48 +0200 | <hellwolf> | and curry is general categorical operation |
2025-05-05 00:59:36 +0200 | <hellwolf> | YulSwitch constructs the specialized switch statement |
2025-05-05 00:59:06 +0200 | <hellwolf> | no more specialized ITE, but a switch statement, which the target langauge is using anyways. |
2025-05-05 00:58:17 +0200 | <hellwolf> | a curry and a switch, job done. |
2025-05-05 00:58:12 +0200 | <hellwolf> | YulSwitch :: [(B32, YulCat eff a b)] -> YulCat eff (a ⊗ B32) b |
2025-05-05 00:58:08 +0200 | <hellwolf> | YulCurry :: forall eff a b c. YulO3 a b c => YulCat eff (a ⊗ b) c -> YulCat eff a (YulCat eff b c) |
2025-05-05 00:58:05 +0200 | <hellwolf> | here you go, |
2025-05-05 00:55:47 +0200 | sprotte24 | (~sprotte24@p200300d16f243100f18c0be91bdc6e3d.dip0.t-ipconnect.de) |
2025-05-05 00:52:27 +0200 | jbalint | (~jbalint@syn-071-090-119-177.res.spectrum.com) |
2025-05-05 00:50:49 +0200 | target_i | (~target_i@user/target-i/x-6023099) (Quit: leaving) |
2025-05-05 00:34:44 +0200 | hiredman | (~hiredman@frontier1.downey.family) hiredman |
2025-05-05 00:31:10 +0200 | sm | (znc@plaintextaccounting/sm) sm |
2025-05-05 00:29:31 +0200 | sm | (znc@plaintextaccounting/sm) (Quit: ZNC 1.6.6+deb1ubuntu0.2 - http://znc.in) |
2025-05-05 00:23:16 +0200 | JuanDaugherty | (~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org)) |
2025-05-05 00:18:58 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
2025-05-05 00:18:43 +0200 | Typedfern | (~Typedfern@213.red-83-37-26.dynamicip.rima-tde.net) (Ping timeout: 252 seconds) |
2025-05-05 00:08:33 +0200 | Square | (~Square@user/square) (Remote host closed the connection) |
2025-05-05 00:08:29 +0200 | Square2 | (~Square@user/square) (Client Quit) |
2025-05-05 00:07:36 +0200 | Square2 | (~Square@user/square) Square |
2025-05-05 00:07:10 +0200 | Square2 | (~Square@user/square) (Quit: Leaving) |
2025-05-05 00:06:31 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2025-05-05 00:03:55 +0200 | <hellwolf> | the currently one doesn't compose, makes some code duplication. Anyways, perhaps too specific. |
2025-05-05 00:03:16 +0200 | <EvanR> | Yultide |
2025-05-05 00:02:43 +0200 | <hellwolf> | in contrast, my current YulITE :: YulCat eff a b -> YulCat eff a b -> YulCat eff (BOOL, a) b |
2025-05-05 00:00:19 +0200 | <hellwolf> | that becomes the essence of the if-then-else control structure, the codegen will translate that to the target language code, which is rather short. |
2025-05-04 23:58:34 +0200 | <hellwolf> | my old ITE didn't use cartesian closed, created duplicated coded. |
2025-05-04 23:58:30 +0200 | notdabs | (~Owner@2600:1700:69cf:9000:953a:ffda:3cd1:4a35) () |
2025-05-04 23:58:16 +0200 | <hellwolf> | ^-- that constructor reads: give me two morphisms from a ~> b, representing two branches of the if-then-else, I will you give back a new morphism also from a (must be, otherwise doesn't compose) to another morphism (hence closed cartesian) that is BOOL ~> b |
2025-05-04 23:58:10 +0200 | notdabs | (~Owner@2600:1700:69cf:9000:953a:ffda:3cd1:4a35) |
2025-05-04 23:55:53 +0200 | <hellwolf> | to be continued. |
2025-05-04 23:55:49 +0200 | <hellwolf> | I don't need the INT after all, if I can make this type-check |
2025-05-04 23:55:40 +0200 | <hellwolf> | thanks for the help |
2025-05-04 23:55:38 +0200 | <hellwolf> | that'd be my new constructor to replace old inefficient ITE. |
2025-05-04 23:55:20 +0200 | <hellwolf> | YulITE :: YulCat eff a b -> YulCat eff a b -> YulCat eff a (YulCat eff BOOL b) |
2025-05-04 23:54:08 +0200 | <hellwolf> | no, that's good. I have different approach here. But I can do a similar thing. |
2025-05-04 23:54:03 +0200 | <tomsmeding> | anyway bedtime for me o/ |
2025-05-04 23:53:50 +0200 | <tomsmeding> | though usually I do have more types in the language to interpret so that there's actually something to preserve :p |
2025-05-04 23:53:27 +0200 | <tomsmeding> | I've written this kind of code too often |
2025-05-04 23:53:19 +0200 | <tomsmeding> | apologies for being impatient for a bit there by the way, it's late here |
2025-05-04 23:52:22 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2025-05-04 23:48:33 +0200 | <tomsmeding> | :') |
2025-05-04 23:48:31 +0200 | <tomsmeding> | if you want practice with this particular trick, do assignment 0.3 here https://utrechtuniversity.github.io/infomcpd/assignments/asg0.pdf |
2025-05-04 23:47:13 +0200 | <hellwolf> | I am digesting |
2025-05-04 23:46:45 +0200 | <EvanR> | see what tomsmeding just did |
2025-05-04 23:46:29 +0200 | <EvanR> | doesn't matter what source language |