Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A guaranteed terminating version of the language #22

Open
mk270 opened this issue Dec 11, 2023 · 0 comments
Open

A guaranteed terminating version of the language #22

mk270 opened this issue Dec 11, 2023 · 0 comments

Comments

@mk270
Copy link

mk270 commented Dec 11, 2023

Would this be in some sense trivial, or should it be more useful than that? The most interesting work I've seen in the area of "maximum expressiveness while guaranteed to terminate" is Charity, which in a nutshell adds expressiveness with a neat duality: it allows (ordinary) recursive datatypes, required to be finite, operated on by primitive recursion (paramorphism; guaranteed to terminate); and corecursive datatypes (allowed to be potentially infinite) operated on by co-recursion (apomorphism; guaranteed to be productive, i.e. "to make progress"). The key is that each type of datatype can only be operated on by its corresponding control structure.

This is sufficient to write non-primitive-recursive functions such as Ackermann's.

(Unfortunately the Wikipedia page seems to have been deleted.)

@rrthomas rrthomas changed the title there should be a guaranteed terminating version of the language A guaranteed terminating version of the language Dec 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant