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
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started