Описание тега stream-fusion

2 ответа

Почему `Vector.length (Vector.replicate n 0)" не сливается?

Следующий код неожиданно (по крайней мере для меня) создает промежуточный вектор: import qualified Data.Vector as Vector main :: IO () main = print (test n) n :: Int n = 1000000 test :: Int -> Int test n = Vector.length (Vector.replicate n (0 :: …
18 мар '16 в 23:28
2 ответа

Что такое фьюжн в Хаскеле?

Время от времени я замечал в документации по Haskell следующее: (например, в Data.Text): Подлежит слиянию Что такое фьюжн и как его использовать?
11 авг '16 в 20:17
1 ответ

Не удается установить пакет Haskell stream-fusion-0.1.2.5: неоднозначное вхождение

Я пытаюсь построить проект Barbarosa, который требует пакет stream-fusion-0.1.2.5. тем не мение cabal install терпит неудачу со следующим [3 of 3] Compiling Control.Monad.Stream ( Control/Monad/Stream.hs, dist/dist-sandbox-8bb5b9c9/build/Control/Mon…
06 ноя '15 в 08:49
0 ответов

Почему -O2 так сильно влияет на простой калькулятор расстояний L1 в Хаскеле?

Я реализовал простой калькулятор расстояния L1, используя Haskell. Поскольку я заинтересован в производительности, я использовал распакованные векторы для хранения изображений для сравнения. calculateL1Distance :: LabeledImage -> LabeledImage -&g…
1 ответ

Постоянно увеличивающееся потребление ресурсов процессора с помощью Haskell и Stream-Fusion

Вот короткая программа на Haskell, которая генерирует звук 440 Гц. Он использует pulseaudio в качестве аудио-бэкенда. import GHC.Float import Control.Arrow import Sound.Pulse.Simple import qualified Data.List.Stream as S import Data.List type Time =…
11 мар '14 в 16:42
1 ответ

Как я могу улучшить производительность этой реализации minmax?

Вот мой текущий код. Это наивная реализация. import System.Environment (getArgs) minmax [] = Nothing minmax [x] = Just (x, x) minmax (a:b:xs) = Just $ minmax' xs $ sort a b where minmax' [] lohi = lohi minmax' [x] lohi@(lo, hi) | x < lo = (x, hi)…
05 сен '17 в 21:19
1 ответ

Какие компиляторы сегодня способны преобразовывать (map f (map g h)) в (map (f . G) h)?

Для этого используются многие методы, от простых, таких как Short Cut Fusion, до разработки Stream Fusion. Я знаю, что компиляторы, такие как GHC и MLTon, в значительной степени полагаются на эту технику. Существуют ли другие компиляторы, которые де…
1 ответ

Как создать контейнеры на Haskell, которые сливаются?

Я заинтересован в создании нового типа контейнера Haskell (строгие списки) и хочу убедиться, что операции над ними пригодны для объединения потоков. Как я могу включить функцию объединения потоков GHC? Если мой контейнер TraversableБудет ли он автом…
03 дек '14 в 05:16