Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Yes, recursion can be used to define a function inductively, just as we would in maths. However, recursion is the "GOTO" of functional programming and we prefer to used structured programming if possible, e.g maps/folds/unfolds etc. That would be a better reply for the parent post.


Of course I use combinators more often than I write recursive functions. But if someone finds recursion less readable, I still think they're missing something crucial.

And I don't think recursion is a GOTO that should be avoided. It's a useful tool that's easy to read and reason about.


I agreed with your parent post and upvoted you, but too many inexperienced with functional programming claim it is all (or too much) recursion. I think this should be challenged.

Yes recursion is a useful tool, just like GOTO and is sometimes necessary or more practical. But it is better to e.g. use a fold if you can because that further constrains and aids reasoning. For example, a fold will always terminate unlike general recursion.

I recommend looking into recursion schemes, if you aren't familiar with them.


I read about them a few times, but I never saw them proposed as the main access to recursion. Are there examples of that use?


If you don't mind some advanced Haskell, these slides have plenty of examples:

https://github.com/willtim/recursion-schemes/blob/master/sli...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: