I'd like to be sure when one defines a type with "type", it truly merely creates a synonym, and no matter what one could replace the left side by the right side in the whole program, and vice versa, and it wouldn't change a thing in the actual meaning, value of the program.<br><br>Eg if i define:<br>type In2 t = t -> t -> t<br>I can thereafter replace for any type t, any signature like<br>f :: t -> t -> t<br>with<br>f :: In2 t<br>then strictly no consequence other than visual in the source code, by me, will occur.<br>Thanks!