sml - Zip and unzip lists in Standard ML -


how create function zip , unzip 2 lists tupled lists in standard ml?

example:

unzip [[1,4],[2,5],[3,6]] -> [1,2,3] [4,5,6]  zip [1,2,3] [0,2,4] -> [[1,0],[2,2],[3,4]] 

it not idea use head , tail, instead use pattern matching. can encode unzip bit more elegantly follows:

fun unzip l =    case l     of nil => (nil, nil)      | (a,b)::tl =>          let val (l1, l2) = unzip tl         in (a::l1, b::l2) end 

also 1 of commenters above mentioned, zip , unzip typically work on pairs of lists, , lists of pairs respectively.


Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -