Code Monkey home page Code Monkey logo

Comments (7)

davidchambers avatar davidchambers commented on June 12, 2024 1

I think it's a good question. I've always found ChainRec confusing, though, so I'm no help. ;)

from fantasy-land.

davidchambers avatar davidchambers commented on June 12, 2024

Did you answer your own question, @ivenmarquardt?

from fantasy-land.

ivenmarquardt avatar ivenmarquardt commented on June 12, 2024

Actually not, @davidchambers. I have continued my study of different forms of monadic recursion and am far from done, Since nobody answered I figured the question was a bit rash.

from fantasy-land.

safareli avatar safareli commented on June 12, 2024

Maybe take a look at the original issue
#151 (comment)

for example in PureScript there are instances of MonadRec for many monads https://pursuit.purescript.org/search?q=MonadRec

This example might highlight motivation:
https://github.com/purescript/purescript-tailrec/blob/master/src/Control/Monad/Rec/Class.purs#L33-L55

from fantasy-land.

ivenmarquardt avatar ivenmarquardt commented on June 12, 2024

OK, will look into that more closely. I figured that purescript just needs it this way, so that the compiler could apply the usual tail call elimination. Then, however, it would be a purescript specific issue.

from fantasy-land.

safareli avatar safareli commented on June 12, 2024

One of the reasons MonadRec exists is that purescript compiler can't optimize monadic recursion.
It can optimize regular tail call recursion into for loop but not monadic.

from fantasy-land.

ivenmarquardt avatar ivenmarquardt commented on June 12, 2024

I wonder why PS cannot optimize recursion within a monad when we can write a stack-safe monad instance for the Trampoline type in a principled way. I am not a compiler programmer though.

With Trampoline you can add stack-safety to many transfromer stacks and keep your code DRY. ChainRec on the other hand is probably more efficient. I will use the monad instance for the time being and report here if I ever feel the need for ChainRec.

from fantasy-land.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.