за 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

Ответить