LINUX.ORG.RU

История изменений

Исправление balsoft, (текущая версия) :

Тред не читал

portmanteau a b = take n a ++ b
  where n = head [ x | x <- [0..length a], drop x a == take (length a - x) b ]
main = getContents >>= mapM_ (putStrLn . (\[a, b] -> portmanteau a b) . words) . lines

Если хотим склеивать таким образом все слова в строке, а не только 2, то

portmanteau a b = take n a ++ b
  where n = head [ x | x <- [0..length a], drop x a == take (length a - x) b ]
portmanteauMany = foldl portmanteau ""
main = getContents >>= mapM_ (putStrLn . portmanteauMany . words) . lines

Исправление balsoft, :

Тред не читал

portmanteau a b = take n a ++ b
  where n = head [ x | x <- [0..length a], drop x a == take (length a - x) b ]
main = getContents >>= mapM_ (putStrLn . uncurry portmanteau . (\[a, b] -> (a, b)) . words) . lines

Если хотим склеивать таким образом все слова в строке, а не только 2, то

portmanteau a b = take n a ++ b
  where n = head [ x | x <- [0..length a], drop x a == take (length a - x) b ]
portmanteauMany = foldl portmanteau ""
main = getContents >>= mapM_ (putStrLn . portmanteauMany . words) . lines

Исправление balsoft, :

Тред не читал

portmanteau a b = take n a ++ b
  where n = head [ x | x <- [0..length a], drop x a == take (length a - x) b ]
main = getContents >>= mapM_ (putStrLn . uncurry portmanteau . (\[a, b] -> (a, b)) . words) . lines

Если хотим склеивать таким образом все слова в строке, а не только 2, то

portmanteau a b = take n a ++ b
  where n = head [ x | x <- [0..length a], drop x a == take (length a - x) b ]
portmanteauMany = foldl portmanteau []
main = getContents >>= mapM_ (putStrLn . portmanteauMany . words) . lines

Исходная версия balsoft, :

Тред не читал

portmanteau a b = take n a ++ b
  where n = head [ x | x <- [0..length a], drop x a == take (length a - x) b ]
main = getContents >>= mapM_ (putStrLn . curry portmanteau . (\[a, b] -> (a, b)) . words) . lines

Если хотим склеивать таким образом все слова в строке, а не только 2, то

portmanteau a b = take n a ++ b
  where n = head [ x | x <- [0..length a], drop x a == take (length a - x) b ]
portmanteauMany = foldl portmanteau []
main = getContents >>= mapM_ (putStrLn . portmanteauMany . words) . lines