за unsafePerformIO по такому поводу — билет на хедхантер в одну сторону, мне кажется.
Если md5 чистая функция Bytestring -> Bytestring, и у нас есть IO Bytestring какой-нибудь (readFile там), то мы делаем очевидный ход fmap md5 (readFile path) и вот смотри ка, даже упёртому должно быть понятно, что у нас а) отделение IO от чистой логики б) ровно то, что хочется на входе и выходе Для перемножения матриц я рекомендую использовать unboxed вектора из библиотеки vector <https://hackage.haskell.org/package/vector>. А ещё я предлагаю засунуть свой снобизм туда же, где ваши знания про функциональное программирование, и почитать хоть что нибудь <https://wiki.haskell.org/IO_inside> уже. Вот даже цитату принёс: > 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
