int fact (int x ) { int result = x; while ( x > 1) { x -= 1; result *= x; } return result; } int array [] factarray (int array [] arr){ int length = 0; !(length(arr), length); int array[length] result; for(int i=0; i < length; i+=1;){ result[i] = fact(arr[i]); } return result; } int list factlist(int list lst){ if(lst = nil[int]){ return nil[int]; } else { return fact(car lst)::factlist(cdr lst); } } int list array [] factlistarray(int list array [] arr){ int length = 0; !(length(arr), length); int list array[length] result; for(int i=0; i < length; i+=1;){ result[i] = factlist(arr[i]); } return result; } struct roflwaffle {int list array [] arr; }; struct roflchef {roflwaffle array [3] normal; roflwaffle special; };