LINUX.ORG.RU

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

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

В списке тоже можно [1,2,error IOException] делать.

error – это не исключение, это другая штука совершенно. Их важно различать. И как именно ты перехватывать IOException собрался?

В смысле, с Polysemy сравнивали? А с interact?

interact – это тупо \f -> putStrLn . f =<< getLine, в этом нет ничего особенного. Даже сигнатуры одинаковые.

Prelude> :t \f -> putStrLn . f =<< getLine
\f -> putStrLn . f =<< getLine :: (String -> String) -> IO ()
Prelude> :t interact
interact :: (String -> String) -> IO ()

Твой подход с interact слишком примитивен и не работает, например, когда нужны треды и их синхронизация.

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

В списке тоже можно [1,2,error IOException] делать.

error – это не исключение, это другая штука совершенно. Их важно различать.

В смысле, с Polysemy сравнивали? А с interact?

interact – это тупо \f -> putStrLn . f =<< getLine, в этом нет ничего особенного. Даже сигнатуры одинаковые.

Prelude> :t \f -> putStrLn . f =<< getLine
\f -> putStrLn . f =<< getLine :: (String -> String) -> IO ()
Prelude> :t interact
interact :: (String -> String) -> IO ()

Твой подход с interact слишком примитивен и не работает, например, когда нужны треды и их синхронизация.

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

В списке тоже можно [1,2,error IOException] делать.

error – это не исключение, это другая штука совершенно. Их важно различать.

В смысле, с Polysemy сравнивали? А с interact?

interact – это тупо \f -> putStrLn . f =<< getLine, в этом нет ничего особенного. Даже сигнатуры одинаковые.

Prelude> :t \f -> putStrLn . f =<< getLine
\f -> putStrLn . f =<< getLine :: (String -> String) -> IO ()
Prelude> :t interact
interact :: (String -> String) -> IO ()