質問いいですか?

ttp://a414s1.it.nanzan-u.ac.jp/smlbook/smlwww/node12.html
を見つつお勉強してるんですが、
ここに載ってる例の、
exception Get_nth;
fun get_nth _ nil = raise Get_nth
|get_nth 1 (front :: _) = front
|get_nth n (_ :: rest) = get_nth (n-1) rest;

val get_third = get_nth 3;
というのが、smlで
stdIn:7.1-7.22 Warning: type vars not generalized because of
value restriction are instantiated to dummy types (X1,X2,...)
val get_3 = fn : ?.X1 list -> ?.X1
と言われて動きません。

moscow ml だと
! Warning: Value polymorphism:
! Free type variable(s) at top level in value identifier get3
と言われつつも動くのですが。

なんでですか?

Standard ML of New Jersey v110.9.1 [FLINT v1.41], October 19, 1998
Moscow ML version 2.00 (June 2000)
NetBSD 1.5ZA
にて。