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' [] _ = []
我想制作一个从列表中选择给定索引元素的函数。
例如:
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' [] _ = []