Write an SML function groupdupes that takes a list of integers as its only argument. The function takes runs of values (i.e., consectuive, duplicated values) in the list, copying those runs into separate sublists, returning a list of those sublists. Examples: groupdupes([4,4,4,2,3,3,7,7,7,7,2,3,4,4,4]) would return [[4,4,4],[2],[3,3],[7,7,7,7],[2],[3],[4,4,4]] groupdupes([8,6,7,5]) would return [[8],[6],[7],[5]] Solution fun groupdupes_helper(L:int list, subL:int list, result:int list list) = if (L = nil) then result @ [subL] else if ( ( subL = nil ) orelse ( hd(subL) = hd(L) ) ) then groupdupes_helper( tl(L), hd(L)::subL, result ) else groupdupes_helper( tl(L), hd(L)::nil, result @ [subL] ) (* groupdupes Wrapper Function *) fun groupdupes(L:int list) = groupdupes_helper(L, nil, nil); .