Question: IN HASKELL This is my question: Define a function shuffle :: Int -> [a] -> [a] that takes a natural number n and an even-lengthed
IN HASKELL
This is my question: Define a function shuffle :: Int -> [a] -> [a] that takes a natural number n and an even-lengthed list, and splits and then riffles the list n times. For example, shuffle 2 [1,2,3,4,5,6] = [1,5,4,3,2,6].
Here is my riffle function:
riffle :: [a] -> [a] -> [a]
riffle [] ys = ys
riffle xs [] = xs
riffle (x:xs)(y:ys) = x : y : riffle xs ys
Here is my shuffle function that I am confused on:
shuffle :: Int -> [a] -> [a]
shuffle [] = []
let shuffle 0 x = x
shuffle n x = shuffle (n-1) $ uncurry riffle $ splitAt (length x `div` 2) x
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
