zipn(List) -> zipn([],List). zipn(Acc,[]) -> lists:map(fun lists:reverse/1,Acc); zipn([],[A|Rest]) -> AccStart = [[V] || V<-A], zipn(AccStart,Rest); zipn(Acc,[A|Rest]) -> NewAcc = zipn_helper(Acc,A), zipn(NewAcc,Rest). zipn_helper(Acc,A) -> zipn_helper([],Acc,A). zipn_helper(Acc,[],[]) -> lists:reverse(Acc); zipn_helper(Acc,[AccHd|AccRest],[VHd|VRest]) -> NewAccHd = [VHd|AccHd], NewAcc = [NewAccHd|Acc], zipn_helper(NewAcc,AccRest,VRest).