fsharp
fsharp copied to clipboard
task defined as top-level static value doesn't get statically compiled
Most the time tasks are defined in functions, e.g.
let f() = task { return 1 }
That's fine, however if you define a task as a top-level value (e.g. in F# Interactive) you get a warning that a dynamic task implementation is used:
> task { return 1 };;
task { return 1 };;
^^^^
stdin(2,1): warning FS3511: This state machine is not statically compilable. A resumable code invocation at '(2,0--2,4)' could not be reduced. An alternative dynamic implementation will be used, which may be slower. Consider adjusting your code to ensure this state machine is statically compilable, or else suppress this warning.
It's not a super-critical show-stopping bug because
- the task still runs correctly
- it's rare to define tasks like this in project code (however it may happen a lot in notebooks)
- tasks at the top-level like this are never perf-critical