Какой снобизм? Просто непонимание, почему, если без unsafePerformIO никуда, говорят о чистоте.
readFile говорите? Открываем исходники bytestring-0.10.6.0 и видим. hGetContentsN :: Int -> Handle -> IO ByteString hGetContentsN k h = lazyRead -- TODO close on exceptions where lazyRead = unsafeInterleaveIO loop loop = do c <- S.hGetSome h k -- only blocks if there is no data available if S.null c then do hClose h >> return Empty else do cs <- lazyRead return (Chunk c cs) Есть и unsafeInterleaveIO, и даже комментарий есть. А когда может прилететь exceptions? Когда чистой функции md5 потребуется следующая порция данных. В чистой функции exceptions. Это как? Или считать, что exceptions в fmap, bind происходят? Хотя, если считать, что отсутствие результата - это не результат, то да Haskell - чистый. А так он "Best Imperative Language", в котором для IO сделали красивую обертку. P.S. Что почитать посоветуете? On Wednesday, 27 April 2016, 11:26, Alexander Q <[email protected]> wrote: за unsafePerformIO по такому поводу — билет на хедхантер в одну сторону, мне кажется. Если md5 чистая функция Bytestring -> Bytestring, и у нас есть IO Bytestring какой-нибудь (readFile там), то мы делаем очевидный ходfmap md5 (readFile path)и вот смотри ка, даже упёртому должно быть понятно, что у наса) отделение IO от чистой логикиб) ровно то, что хочется на входе и выходе Для перемножения матриц я рекомендую использовать unboxed вектора из библиотеки vector. А ещё я предлагаю засунуть свой снобизм туда же, где ваши знания про функциональное программирование, и почитать хоть что нибудь уже. Вот даже цитату принёс:> Haskell is a pure language, which means that the result of any function call is fully determined by its arguments. On Wed, Apr 27, 2016 at 9:47 AM ksvs <[email protected]> wrote: unsafePerformIO md5 - функция принимает на вход ленивую ByteString от файла и выдает Integer. Чистая функция? Да. А внутри unsafePerformIO. :-) Перемножить матрицы для скорости паралельно. Тип функции :: матрица -> матрица -> матрица Чистая функция, а внутри forkIO и unsafePerformIO. От всем хорош haskell, только притворятся чистым языком. :-) On Tuesday, 26 April 2016, 16:59, Alexander Q <[email protected]> wrote: > На ум приходит посчитать md5, но а если файла, то его целиком читать в >память не оптимально, то это уже кондуиды, и на каждую порцию получаем IO в >алгоритме. Отличное условие. Посчитать функцию от (IO a) без IO? Будьте добры, спойте "ёлочку", не набирая воздух в течение получаса. -- Moscow.pm mailing list [email protected] | http://moscow.pm.org -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
