Hi I'm trying to make a custom function to replace a given element in a list. Code: let i = elemIndex toReplace lst in case i of Just i -> let z = splitAt i lst x = fst z y = (snd z) in init x x ++ newNmr x ++ y Nothing -> [5] Error:
1) * Couldn't match expected type `[a] -> [a]' with actual type `[a]' * The function `init' is applied to two arguments, but its type `[a] -> [a]' has only one In the first argument of `(++)', namely `init x x' In the expression: init x x ++ newNmr x ++ y * Relevant bindings include y :: [a] (bound at C:\users\niel\desktop\test2.hs:41:21) x :: [a] (bound at C:\users\niel\desktop\test2.hs:40:21) z :: ([a], [a]) (bound at C:\users\niel\desktop\test2.hs:39:21) newNmr :: [a] (bound at C:\users\niel\desktop\test2.hs:34:30) lst :: [a] (bound at C:\users\niel\desktop\test2.hs:34:26) toReplace :: a (bound at C:\users\niel\desktop\test2.hs:34:16) (Some bindings suppressed; use -fmax-relevant-binds=N or -fno-max-relevant-binds) 2) * Couldn't match expected type `[a] -> [a]' with actual type `[a]' * The function `newNmr' is applied to one argument, but its type `[a]' has none In the first argument of `(++)', namely `newNmr x' In the second argument of `(++)', namely `newNmr x ++ y' * Relevant bindings include y :: [a] (bound at C:\users\niel\desktop\test2.hs:41:21) x :: [a] (bound at C:\users\niel\desktop\test2.hs:40:21) z :: ([a], [a]) (bound at C:\users\niel\desktop\test2.hs:39:21) newNmr :: [a] (bound at C:\users\niel\desktop\test2.hs:34:30) lst :: [a] (bound at C:\users\niel\desktop\test2.hs:34:26) toReplace :: a (bound at C:\users\niel\desktop\test2.hs:34:16) (Some bindings suppressed; use -fmax-relevant-binds=N or -fno-max-relevant-binds)
I've tried a lot, but I always got an error. What am I doing wrong? Thanks!