Quick Summary: In a lambda, annotating the argument with the wrong type argument causes an error:
thread blocked indefinitely in an MVar operation
SSCCE
test : a -> a
test =
\a ->
let
b : b
b =
a
in
b
elm throws
You ran into a compiler bug. Here are some details for the developers:
b [rank = 2]
Please create an <http://sscce.org/> and then report it
at <https://github.com/elm/compiler/issues>
CallStack (from HasCallStack):
error, called at compiler/src/Type/Solve.hs:206:15 in main:Type.Solve
-- ERROR -----------------------------------------------------------------------
I ran into something that bypassed the normal error reporting process! I
extracted whatever information I could from the internal error:
> thread blocked indefinitely in an MVar operation
if the argument a is part of the declaration top
test : a -> a
test a = ...
the correct error is thrown
This a value is a:
a
But the type annotation on b says it should be:
b
The result type can be chosen arbitrarily, for example () or Int.
If the result type is set to b a correct error is thrown
The body is an anonymous function of type:
b -> b
But the type annotation on test says it should be:
Quick Summary: In a lambda, annotating the argument with the wrong type argument causes an error:
SSCCE
elm throws
if the argument
a
is part of the declaration topthe correct error is thrown
The result type can be chosen arbitrarily, for example
()
orInt
. If the result type is set tob
a correct error is thrown