LINUX.ORG.RU

Маленькая программка на языке Hope. Помогите ((

 


0

1

В общем, нужно определить функцию insStr: list(char) #num # list(char) -> list(char); которая вставляет вторую строку в первую в позицию num (считая c 1). Что-то вроде такого: insStr(«ABC»,2,«DEF»)= «ADEFBC», insStr(«A»,10,«DEF»)= «ADEF» (если больше длины, то в конец). Может кто-то помочь?

С Hope не знаком, но, полагаю, переписать не составит труда.

insStr :: [Char] -> Int -> [Char] -> [Char]
insStr d n f = a ++ f ++ b
  where n' = if n <= 1 then 0 else n - 1
        (a, b) = splitAt n' d
$ cat ins.hs 
insStr :: [Char] -> Int -> [Char] -> [Char]
insStr d n f = a ++ f ++ b
  where n' = if n <= 1 then 0 else n - 1
        (a, b) = splitAt n' d

main = do
  putStrLn $ show $ insStr "ABC" 2 "DEF"
  putStrLn $ show $ insStr "ABC" 10 "DEF"
$ runhaskell ins.hs
"ADEFBC"
"ABCDEF"
Siborgium ★★ ()
Последнее исправление: Siborgium (всего исправлений: 2)