そもそも
http://a414s1.it.nanzan-u.ac.jp/smlbook/smlwww/node39.html
の例は
> - flat;・
> val it = fn : 'a list list -> 'a list
って出てるし、
一つの関数で、深さの違うリストに対応せよって話でもない気が…。