On Wed, Nov 13, 2013 at 5:37 PM, Vlatko Basic <vlatko.basic@gmail.com> wrote:
Hi Cafe,

in an example function

    f :: a -> Bool
    f a = let b = "x" in a == b

compiler complains with
  `a' is a rigid type variable bound by  the type signature for f :: a -> Bool

I'm puzzled with the choice of word 'rigid' here.
I see these types as
    - 'b' has "rigid/unchangeable" type (only String), and
    - 'a' has "soft/variable" type (any type, no constraints).

Why is it called rigid?
Where does the meaning (in this context) come from?



Best regards,

vlatko

Hi Vlatko,

I suspect the nomenclature comes from SPJ et al.'s "Simple Unification-based Type Inference for GADTs" (even though you're not using GADTs). Here, 'rigid' is used as a more technical term for "user-supplied".

But I'm not sure.

Kind regards,

Stijn