Size: a a a

2020 July 08

АХ

Алексей Худяков... in Haskell
Paul Lemon
Как удалить из него пустые, т. е. те, которые получены через return()?
Никак
источник

PL

Paul Lemon in Haskell
:(
источник

PL

Paul Lemon in Haskell
А как превратить его в список String?
источник

A

Aleksandr Khristenko in Haskell
Paul Lemon
Есть IO String, есть IO ()
А как у тебя в одном списке IO String и IO () ?
источник

A

Aleksandr Khristenko in Haskell
Ты лучше опиши задачу, которую пытаешься решить.
источник

֍֎

֍ ֎ in Haskell
Paul Lemon
Есть IO String, есть IO ()
В Haskell списки могут содержать только значения одного и того же типа, для значений разных типов придуманы такие обертки, как Either.

В данном примере можно сделать так:

doSomeComputations :: [IO (Either String ())]

stripEmpty :: [IO (Either String ())] -> [IO String]
stripEmpty []       = []
stripEmpty (x:xs) = do
 val <- x
 case val of
   Left str -> return str : xs'
   Right empty -> xs'
 where
   xs' = stripEmpty xs
источник

PL

Paul Lemon in Haskell
У меня есть функция, которая печатает строку, либо печатает пустую строку (return ())
источник

֍֎

֍ ֎ in Haskell
Paul Lemon
У меня есть функция, которая печатает строку, либо печатает пустую строку (return ())
Какой ее тип?
источник

PL

Paul Lemon in Haskell
containTranslation :: String -> String -> String -> IO()
источник

֍֎

֍ ֎ in Haskell
Paul Lemon
containTranslation :: String -> String -> String -> IO()
Она всегда возвращает ()
источник

PL

Paul Lemon in Haskell
Вот, и есть другая функция, которая должна собрать вывод для нескольких функций containTranlsation
источник

АБ

Александр Бантьев... in Haskell
IO a -- не Eq
источник

֍֎

֍ ֎ in Haskell
Paul Lemon
Вот, и есть другая функция, которая должна собрать вывод для нескольких функций containTranlsation
Имеется в виду то, что containTranslation напечатала?
источник

PL

Paul Lemon in Haskell
Да.
источник

PL

Paul Lemon in Haskell
let ioArray = map (\i -> containTranslation word (list !! i) (dictionary !! i)) indexArray
источник

АБ

Александр Бантьев... in Haskell
Сравнить два IO нельзя (по крайней мере без unsafe)
источник

֍֎

֍ ֎ in Haskell
Тогда containTranslation должен не печатать, а возвращать строку, а если он ее не всегда возвращает - есть Maybe
источник

PL

Paul Lemon in Haskell
֍ ֎
Тогда containTranslation должен не печатать, а возвращать строку, а если он ее не всегда возвращает - есть Maybe
Потом я собираю вывод вот так: mconcat $ intersperse (putStr ", ") ioArray
источник

֍֎

֍ ֎ in Haskell
Paul Lemon
Потом я собираю вывод вот так: mconcat $ intersperse (putStr ", ") ioArray
Гораздо проще будет возвращать строку
источник

PL

Paul Lemon in Haskell
Да, я знаю, что проще...
источник