You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I claim this behaviour is very counterintuitive, because return is explicitly a word from the imperative paradigm, but it does not behave like the corresponding imperative construct.
(Note that if you try and early-return anything other than unit, you are correctly told that the thing you're trying to return needs to be of unit type to satisfy the constraint that it's the body of an if block.)
Describe the solution you'd like
A warning indicating that this code likely does not do what I expect, suggesting that I remove the return keyword.
I don't know how wide-ranging this problem is, because I haven't thought hard about it. Does the warning make sense only for the async computation expression, or will it have similarly unexpected semantics in every computation expression that implements Return?
The text was updated successfully, but these errors were encountered:
Idea: can we make a label like analyzer-candidate and apply it to issues like these to get an easy way to track analyzer requests? That will help motivate working on analyzers support all-up.
Is your feature request related to a problem? Please describe.
The following code compiles, but its semantics are not at all obvious: the
return
keyword is not in fact returning anything, and it prints "Here".I claim this behaviour is very counterintuitive, because
return
is explicitly a word from the imperative paradigm, but it does not behave like the corresponding imperative construct.(Note that if you try and early-
return
anything other thanunit
, you are correctly told that the thing you're trying toreturn
needs to be ofunit
type to satisfy the constraint that it's the body of anif
block.)Describe the solution you'd like
A warning indicating that this code likely does not do what I expect, suggesting that I remove the
return
keyword.I don't know how wide-ranging this problem is, because I haven't thought hard about it. Does the warning make sense only for the
async
computation expression, or will it have similarly unexpected semantics in every computation expression that implementsReturn
?The text was updated successfully, but these errors were encountered: