История изменений
Исправление 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 ()