в листе.
replace :: (Int, a) -> [a] -> [a]
replace (index, element) list = before ++ [element] ++ after
where
(before, _:after) = splitAt index list
Предложенная в интернете имплементация работает. Но, как мне кажется, альтернативная имплементация:
replace :: (Int, a) -> [a] -> [a]
replace (index, element) list = before ++ [element] ++ after
where
(before, tail after) = splitAt index list
ломает hls & ghc:
` Error | ormolu: Internal Error: ormoluCmd: OrmoluParsingFailed (RealSrcSpan SrcSpanOneLine
"/home/archlnv/Documents/Haskell/liaths-game/app/Main.hs" 32 14 24 Nothing) "[GHC-07626] Parse error in pattern: tail"\n'
`
Что не так с использованием tail?
В матчинге можно указывать конструкторы, но не функции
можно сделать {-# LANGUAGE ViewPatterns #-} ... (before, tail -> after) = splitAt index list
и тогда будто это то, что ты хочешь
Обсуждают сегодня