ascript-normal := λ(: t AST)(: tt Type). (: ( (if (non-zero tt) ( (let prev-tt (normalize(typeof t))) (if (non-zero prev-tt) ( (if (is-arrow tt) () ( (let norm-tt (normalize tt)) (if (&&( (can-unify( prev-tt norm-tt )) (can-unify( norm-tt prev-tt )) )) () ( (print prev-tt) (print '\s!=\s_s) (print norm-tt) (print '\n_s) (exit-error( 'Type\sAscription\sInequality_s t )) )) )) ) ( (set tt (denormalize tt)) (ascript( t tt )) (set types-have-changed True_u8) )) ) ()) ) Nil);