A Gentle Introduction to ML: Tutorial One Answers

fun double x = 2*x;
fun triple x = 3*x;
fun times4 x = double(double x);
fun times6 x = double(triple x);
fun times9 x = triple(triple x);
 
fun duplicate s    = s^s;
fun quadricate s   = duplicate(duplicate s);
fun octicate s     = duplicate(quadricate s);
fun hexadecicate s = quadricate(quadricate s);
 
fun middle s   = substring(s, size s div 2,1);
fun dtrunc s   = substring(s, 1, size  s -  2);
fun incFirst s = chr(ord s + 1) ^ substring(s, 1, size s -1);
fun switch s   = substring(s,size s div 2,size s div 2) ^
                 substring(s, 0, size s div 2);
fun dubmid s   = substring(s,0,(1 + size s) div 2) ^
                 substring(s,size s div 2,(1+size s) div 2);