Haskell - 我的函数中的非详尽模式

Haskell - Non-exhaustive patterns in my function

我想制作一个从列表中选择给定索引元素的函数。

例如:

reconstruct' [1,4] "bear" = [br]
reconstruct' [2,3,4] [1,2,3,4,5] = [2,3,4] 

函数定义:

reconstruct' :: [Int] -> [a] -> [a]
reconstruct' _ [] = []
reconstruct' (x:xs) l = [place (x-1) l ] ++ (reconstruct' (xs) l)

place :: Int -> [a] -> a
place _ [] = error "error"
place y (x:xs)  | y <= 0 = x
                 | otherwise = place (y-1) xs

我的函数几乎可以正常工作,但是在返回正确的元素后,它没有关闭列表而是给出了错误: [2,3,4*** 异常:函数重构中的非详尽模式'

我该如何解决这个问题?

您没有捕捉到索引列表为空时的情况:

reconstruct' [] _ = []