Logs: freenode/#haskell
| 2020-10-18 19:27:40 | → | gioyik joins (~gioyik@190.67.155.46) |
| 2020-10-18 19:28:02 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 2020-10-18 19:28:11 | → | evanjs joins (~evanjs@075-129-188-019.res.spectrum.com) |
| 2020-10-18 19:29:11 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 2020-10-18 19:29:41 | <hpc> | rust's Result sugar in particular is like being in a whole-program Either |
| 2020-10-18 19:30:08 | <dolio> | You can't in C#, either, which also shows you that the line people take in here about them only being useful because they can be abstracted over is also wrong. :) |
| 2020-10-18 19:32:06 | <hpc> | it's a little bit of both |
| 2020-10-18 19:32:10 | → | christo joins (~chris@81.96.113.213) |
| 2020-10-18 19:32:14 | <hpc> | like how you don't see much CPS in python code |
| 2020-10-18 19:32:35 | <hpc> | even though it has "first-class functions" |
| 2020-10-18 19:32:39 | × | gioyik quits (~gioyik@190.67.155.46) (Ping timeout: 260 seconds) |
| 2020-10-18 19:32:40 | × | stefan-__ quits (~cri@42dots.de) (Read error: Connection reset by peer) |
| 2020-10-18 19:32:44 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 2020-10-18 19:32:56 | × | codygman quits (~codygman@47-184-107-46.dlls.tx.frontiernet.net) (Ping timeout: 256 seconds) |
| 2020-10-18 19:33:00 | → | stefan-__ joins (~cri@42dots.de) |
| 2020-10-18 19:33:07 | <dolio> | CPS just makes stack usage worse in python. |
| 2020-10-18 19:33:21 | × | proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection) |
| 2020-10-18 19:33:29 | <Rembane> | Is there an optimization needed to not bloat the stack? |
| 2020-10-18 19:33:50 | <hpc> | well, that too |
| 2020-10-18 19:34:00 | <dolio> | You need 'proper tail recursion'. |
| 2020-10-18 19:34:14 | <hpc> | still, that hardly stops ruby programmers from doing the same thing |
| 2020-10-18 19:35:22 | <dolio> | Do you mean blocks? |
| 2020-10-18 19:35:32 | <dolio> | Those are a little less aggresive than CPS. |
| 2020-10-18 19:35:54 | → | proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net) |
| 2020-10-18 19:36:07 | × | thir quits (~thir@p200300f27f2f0100d058ed1e9e148e98.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 2020-10-18 19:36:49 | × | christo quits (~chris@81.96.113.213) (Ping timeout: 260 seconds) |
| 2020-10-18 19:36:52 | <dolio> | It definitely influences the designs people use, tough. |
| 2020-10-18 19:37:00 | × | albertus1 quits (~seb@x4db9b903.dyn.telefonica.de) (Quit: Leaving.) |
| 2020-10-18 19:37:04 | <dolio> | Having a good syntax for it. |
| 2020-10-18 19:37:04 | <hpc> | they result in the same sort of code |
| 2020-10-18 19:37:21 | → | gioyik joins (~gioyik@190.67.155.46) |
| 2020-10-18 19:37:41 | <Rembane> | dolio: Got it. Does this imply that they have proper tail recursion in the Javascript engines, because I see Javascript code that looks awfully lot like CPS |
| 2020-10-18 19:37:42 | → | codygman joins (~codygman@2600:380:f900:eb14:1646:9538:6f47:89d5) |
| 2020-10-18 19:38:16 | <dolio> | Some might now, but they've been doing CPS a lot longer than that. |
| 2020-10-18 19:39:22 | → | GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) |
| 2020-10-18 19:39:22 | × | GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host) |
| 2020-10-18 19:39:22 | → | GyroW joins (~GyroW@unaffiliated/gyrow) |
| 2020-10-18 19:39:22 | <hpc> | setTimeout does a nice job of resetting things, in any event |
| 2020-10-18 19:39:43 | × | GyroW_ quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 260 seconds) |
| 2020-10-18 19:40:05 | × | proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Ping timeout: 240 seconds) |
| 2020-10-18 19:40:17 | <hpc> | or all sorts of browser built-in asynchronous stuff really |
| 2020-10-18 19:40:25 | <hpc> | javascript tends to run in short bursts |
| 2020-10-18 19:40:46 | <dolio> | It's specific stuff that uses that, though, because there's basically no other choice. If you tried to just turn some loops into CPS or something, you'd have a bad time. |
| 2020-10-18 19:40:50 | <Rembane> | That's true. |
| 2020-10-18 19:41:24 | <dolio> | They're using it for pseudo threading stuff, kind of. |
| 2020-10-18 19:41:55 | × | jmsx quits (~jordan@li1158-85.members.linode.com) (Quit: bye o/) |
| 2020-10-18 19:42:02 | × | knupfer quits (~Thunderbi@200116b82c6f4e003906994b36cffa11.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
| 2020-10-18 19:42:04 | × | gioyik quits (~gioyik@190.67.155.46) (Ping timeout: 256 seconds) |
| 2020-10-18 19:42:39 | × | geekosaur quits (ae68c070@cpe-174-104-192-112.neo.res.rr.com) (Remote host closed the connection) |
| 2020-10-18 19:45:57 | <dolio> | Lack of sensible handling for this doesn't make much sense, but that's another topic, I guess. |
| 2020-10-18 19:46:05 | × | alp quits (~alp@2a01:e0a:58b:4920:a554:1244:1f69:224d) (Ping timeout: 272 seconds) |
| 2020-10-18 19:46:42 | × | recon_- quits (~quassel@2602:febc:0:b6::6ca2) (Ping timeout: 260 seconds) |
| 2020-10-18 19:48:18 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 2020-10-18 19:48:25 | × | dwt quits (~dwt@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 240 seconds) |
| 2020-10-18 19:50:19 | → | recon_- joins (~quassel@208.87.96.9) |
| 2020-10-18 19:52:46 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
| 2020-10-18 19:54:18 | <dolio> | Rembane: By the way, "proper tail recursion," is what Scheme calls it, but I think it's a bad name, because it's not about recursion. |
| 2020-10-18 19:55:13 | × | jchia__ quits (~jchia@58.32.37.146) (Quit: Leaving.) |
| 2020-10-18 19:55:13 | <Rembane> | dolio: Is it the transformation of a recursive function that passes some test into a while-function they call proper tail recursion? |
| 2020-10-18 19:55:28 | hackage | FunGEn 1.1 - A lightweight, cross-platform, OpenGL/GLUT-based game engine. https://hackage.haskell.org/package/FunGEn-1.1 (SimonMichael) |
| 2020-10-18 19:55:32 | → | jchia__ joins (~jchia@58.32.37.146) |
| 2020-10-18 19:55:49 | × | jchia__ quits (~jchia@58.32.37.146) (Client Quit) |
| 2020-10-18 19:56:03 | <monochrom> | In Javascript and I suppose Python, you would both CPS and trampoline. |
| 2020-10-18 19:56:05 | <dolio> | It says that it must be possible to perform an unbounded amount of tail calls (in a bounded amount of space). |
| 2020-10-18 19:56:36 | × | conal quits (~conal@172.255.125.154) (Quit: Computer has gone to sleep.) |
| 2020-10-18 19:56:58 | <monochrom> | CPS eliminates non-tail calls. To manually turn tail calls to jumps, you trampoline. |
| 2020-10-18 19:57:11 | <monochrom> | s/ to / into / |
| 2020-10-18 19:58:04 | → | knupfer joins (~Thunderbi@i59F7FFD6.versanet.de) |
| 2020-10-18 20:00:30 | <dolio> | Specifically, if you only handle recursive procedures, CPS will ruin it, because CPS builds a heap-allocated function that does a ton of tail calls in a way that isn't obviously direct recursion. |
| 2020-10-18 20:00:55 | <dolio> | So you need the tail calls in the continuation to behave well, too. |
| 2020-10-18 20:01:07 | <Rembane> | It's turtles all the way down! |
| 2020-10-18 20:01:16 | <dolio> | Otherwise you'll have an optimmized loop that builds a function that blows up the stack. |
| 2020-10-18 20:01:25 | <monochrom> | The ridiculous length people would go to obfuscate their source code, just because "high-level" languages don't grow out of "stack is limited, heap is unlimited". |
| 2020-10-18 20:01:53 | <monochrom> | forgetting that "I'm a high-level language, I am in a position to actually redefine what 'stack' and 'heap" mean". |
| 2020-10-18 20:03:26 | <monochrom> | Yeah you will want to do general tail-call optimizations, not just tail-recursion optimizations. |
| 2020-10-18 20:04:15 | × | pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: gone to sleep. ZZZzzz…) |
| 2020-10-18 20:04:16 | <Rembane> | Isn't this what we have good compilers for? Or at least decent runtime systems? |
| 2020-10-18 20:04:45 | <dolio> | Most people use languages that don't. |
| 2020-10-18 20:05:07 | <dolio> | Because they're industry standard and popular. |
| 2020-10-18 20:05:49 | <dolio> | Languages with good compilers/runtimes are for ivory tower academics. |
| 2020-10-18 20:06:12 | → | jmsx joins (~jordan@li1158-85.members.linode.com) |
| 2020-10-18 20:06:13 | → | rprije joins (~rprije@110-175-117-18.tpgi.com.au) |
| 2020-10-18 20:06:16 | × | isovector1 quits (~isovector@172.103.216.166.cable.tpia.cipherkey.com) (Remote host closed the connection) |
| 2020-10-18 20:06:50 | <Rembane> | Well, then I prefer the ivory tower languages. |
| 2020-10-18 20:08:38 | → | gioyik joins (~gioyik@190.67.155.46) |
| 2020-10-18 20:10:02 | × | xff0x quits (~fox@2001:1a81:53f8:9f00:217d:12db:12d5:cd4c) (Ping timeout: 260 seconds) |
| 2020-10-18 20:10:42 | → | xff0x joins (~fox@2001:1a81:53f8:9f00:7c69:3a05:36cd:a9b4) |
| 2020-10-18 20:13:07 | × | gioyik quits (~gioyik@190.67.155.46) (Ping timeout: 246 seconds) |
| 2020-10-18 20:13:24 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 2020-10-18 20:15:40 | → | isovector1 joins (~isovector@172.103.216.166) |
| 2020-10-18 20:16:46 | <sm[m]> | g'day all, I have released an update of https://github.com/haskell-game/fungen (simple 2d opengl-based game engine tested with ghc 8.8, 8.10) |
| 2020-10-18 20:17:43 | → | conal joins (~conal@172.255.125.154) |
| 2020-10-18 20:20:36 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
| 2020-10-18 20:22:03 | → | pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net) |
| 2020-10-18 20:23:58 | → | contiver_ joins (~contiver@84-115-64-62.wifi.dynamic.surfer.at) |
| 2020-10-18 20:24:35 | × | ggole quits (~ggole@2001:8003:8119:7200:a8c8:f35b:bee4:ed57) (Quit: Leaving) |
| 2020-10-18 20:26:05 | × | contiver__ quits (~contiver@84-115-64-62.wifi.dynamic.surfer.at) (Ping timeout: 240 seconds) |
| 2020-10-18 20:26:37 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 2020-10-18 20:27:20 | × | dansho quits (~dansho@ip68-108-167-185.lv.lv.cox.net) (Quit: Leaving) |
| 2020-10-18 20:33:45 | → | thir joins (~thir@p200300f27f2f0100d058ed1e9e148e98.dip0.t-ipconnect.de) |
All times are in UTC.