Size: a a a

2020 July 08

PL

Paul Lemon in Haskell
Но тут я не могу так.
источник

АБ

Александр Бантьев... in Haskell
Paul Lemon
Потом я собираю вывод вот так: mconcat $ intersperse (putStr ", ") ioArray
Идиоматичнее сделать

containTranslation :: String -> String -> String -> Maybe String

stringArray :: [ String ]
stringArray = map (\i -> containTranslation word (list !! i) (dictionary !! i)) indexArray

main = mconcat $ putStrLn <$> intersperse ", " stringArray
источник

PL

Paul Lemon in Haskell
А можно сделать так, чтобы она возвращала Maybe IO?
источник

АБ

Александр Бантьев... in Haskell
Да
источник

JS

Jerzy Syrowiecki in Haskell
Paul Lemon
Но тут я не могу так.
почему? не верю, что не можете
источник

АБ

Александр Бантьев... in Haskell
Paul Lemon
А можно сделать так, чтобы она возвращала Maybe IO?
Но это IMHO какой-то костыль.
источник

PL

Paul Lemon in Haskell
Jerzy Syrowiecki
почему? не верю, что не можете
В этой функции мне надо считать вывод с IO в переменную.
источник

PL

Paul Lemon in Haskell
text <- capture_ $ parse $ drop (length phrase + 1) translationArray
источник

АБ

Александр Бантьев... in Haskell
Paul Lemon
В этой функции мне надо считать вывод с IO в переменную.
Так возвращай IO String
источник

JS

Jerzy Syrowiecki in Haskell
Paul Lemon
В этой функции мне надо считать вывод с IO в переменную.
и как это мешает?
источник

АБ

Александр Бантьев... in Haskell
Потом mconcat этот список [IO String] чтобы получить IO [String], потом внутри IO вытащи [String] и скорми его mconcat $ intersperse ", "
источник

PL

Paul Lemon in Haskell
Jerzy Syrowiecki
и как это мешает?
Я не знаю, как это сделать, если фукнция не возвращает IO )
источник

JS

Jerzy Syrowiecki in Haskell
Paul Lemon
Я не знаю, как это сделать, если фукнция не возвращает IO )
есть функция pure :: a -> IO a — из чего угодно можно сделать IO
источник

АБ

Александр Бантьев... in Haskell
containTranslation :: String -> String -> String -> IO String
containTranslation = do
 text <- capture_ $ parse $ drop (length phrase + 1) translationArray
 return $ foo text

stringArray :: IO [ String ]
stringArray = sequence $ map (\i -> containTranslation word (list !! i) (dictionary !! i)) indexArray

nonemptyStrings :: [ String ] -> [ String ]
nonemptyStrings = filter (( != 0) . length)

main = do
 strings <- stringArray
 putStrLn $ mconcat $ intersperse ", " $ nonemptyStrings strings
источник

JS

Jerzy Syrowiecki in Haskell
Александр Бантьев
containTranslation :: String -> String -> String -> IO String
containTranslation = do
 text <- capture_ $ parse $ drop (length phrase + 1) translationArray
 return $ foo text

stringArray :: IO [ String ]
stringArray = sequence $ map (\i -> containTranslation word (list !! i) (dictionary !! i)) indexArray

nonemptyStrings :: [ String ] -> [ String ]
nonemptyStrings = filter (( != 0) . length)

main = do
 strings <- stringArray
 putStrLn $ mconcat $ intersperse ", " $ nonemptyStrings strings
/=
источник

АБ

Александр Бантьев... in Haskell
Да, точняк, слишком много в последнее время на Nix пишу )
источник

PL

Paul Lemon in Haskell
Jerzy Syrowiecki
есть функция pure :: a -> IO a — из чего угодно можно сделать IO
Мне нужно поток, который я вывожу в IO считать в переменную
источник

АБ

Александр Бантьев... in Haskell
Paul Lemon
Мне нужно поток, который я вывожу в IO считать в переменную
Скинь уже код. libastral.so на хаскель пока не портировали
источник

JS

Jerzy Syrowiecki in Haskell
Paul Lemon
Мне нужно поток, который я вывожу в IO считать в переменную
в каком виде представлен поток?
источник

АБ

Александр Бантьев... in Haskell
Paul Lemon
Мне нужно поток, который я вывожу в IO считать в переменную
Если ты выводишь его средствами Haskell (т.е. из String/Text/ByteString/etc делаешь соответствующий print), то ловить его -- неправильный подход.
источник