I hope this helps .

First of all, I've made your Haskell code a little bit more comprehensible:

```
getNPartitionPermutations :: [a] -> Int -> [[[a]]]
getNPartitionPermutations xs 1 = [[xs]]
getNPartitionPermutations xs n = iter xs 1 []
where iter ys n acc
| length xs == n = acc
| otherwise =
iter ys (n+1) (elem:acc)
where elem = map (\x -> [(take n ys)]:x) rec'
rec' = getNPartitionPermutations (drop n ys) (n-1)
```

```
[(take n ys)]:x
```

```
getNPartitionPermutations :: [a] -> Int -> [[[a]]]
getNPartitionPermutations xs 1 = [[xs]]
getNPartitionPermutations xs n = iter xs 1 []
where iter ys n acc
| length xs == n = acc
| otherwise =
iter ys (n+1) (elem:acc)
where elem = map (\x -> undefined) rec'
rec' = getNPartitionPermutations (drop n ys) (n-1)
```

```
getNPartitionPermutations :: [a] -> Int -> [[[a]]]
getNPartitionPermutations xs 1 = [[xs]]
getNPartitionPermutations xs n = iter xs 1 []
where iter ys n acc = undefined
```

```
getNPartitionPermutations :: [a] -> Int -> [[[a]]]
getNPartitionPermutations xs 1 = [[xs]]
getNPartitionPermutations xs n = iter xs 1 []
where iter ys n acc
| length xs == n = acc
| otherwise = undefined
```

```
getNPartitionPermutations :: [a] -> Int -> [[[a]]]
getNPartitionPermutations xs 1 = [[xs]]
getNPartitionPermutations xs n = iter xs 1 []
where iter ys n acc
| length xs == n = acc
| otherwise =
iter ys (n+1) (elem:acc)
where elem = undefined
rec' = undefined
```