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

Effect tracking with recursive functions and extra effect incorrectly depends on call order #32

Open
stephanemagnenat opened this issue Jan 30, 2025 · 0 comments
Labels
bug Something isn't working effect The side-effect tracking system

Comments

@stephanemagnenat
Copy link
Member

The following code:

fn b(f) {
    a(f, || effects::write())
}

fn a(f, g) {
    b(f); f(); g(); ()
}

(where effects::write() is a nop function with write effects (see effects test module).

Has incorrect effect type schema for a:

fn a (() → A ! e₀, () → B) → () ! e₀, Write

Where it should be:

fn a (() → A ! e₀, () → B ! e₁) → () ! e₀, e₁, Write

@stephanemagnenat stephanemagnenat added bug Something isn't working effect The side-effect tracking system labels Jan 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working effect The side-effect tracking system
Projects
None yet
Development

No branches or pull requests

1 participant