Ticket #915 (new task)

Opened 3 years ago

Last modified 3 months ago

Implement list fusion using streams instead of foldr/build

Reported by: simonpj Owned by:
Component: libraries/base Version: 6.8
Keywords: fusion Cc: dons@…, duncan.coutts@…, rl@…, Bulat.Ziganshin@…, kfrdbs@…, johan.tibell@…, Deewiant, pumpkingod@…, mhenrion@…, pho@…
Operating System: Unknown/Multiple
Test Case: N/A Architecture: Unknown/Multiple
Type of failure:

Description

We'd like to try using the stream-fusion idea of Don Stewart, Duncan Coutts and Roman Leshchinskiy, and replace the (somewhat fragile) foldr/build stuff.

See #876.

Change History

Changed 3 years ago by simonpj

  • owner set to simonpj

Changed 3 years ago by igloo

  • testcase set to N/A

Changed 3 years ago by dons

  • keywords fusion added
  • difficulty changed from Unknown to Project (> 1 week)
  • version changed from 6.4.2 to 6.6
  • architecture changed from Unknown to Multiple

This task has its own website now:

 http://www.cse.unsw.edu.au/~dons/streams.html.

Changed 3 years ago by guest

  • cc Bulat.Ziganshin@… added

it will be great to see this included in ghc base if this work is already completed

Changed 3 years ago by duncan

It's not done yet. There's a paper on it but we still have issues with complex list comprehensions.

The new streams stuff will be included in the new bytestring-1.0 package though (as you know, the base package is being split up and ByteString? will be in its own package).

Changed 2 years ago by guest

  • cc kfrdbs@… added

Changed 2 years ago by simonmar

  • milestone changed from 6.8 branch to 6.10 branch

Changed 2 years ago by simonmar

  • owner simonpj deleted

Changed 2 years ago by dons

  • cc dons@…, duncan.coutts@…, rl@… added
  • version changed from 6.6 to 6.8

We should also rerun the benchmarks in the light of the changes that made it into head since April when the fusion library was last benchmarked. There's no that much more to do here, to finish the job.

Changed 2 years ago by tibbe

  • cc johan.tibell@… added

Changed 19 months ago by igloo

  • milestone changed from 6.10 branch to 6.12 branch

Changed 17 months ago by Deewiant

  • cc Deewiant added

Changed 17 months ago by dons

This library has been written and released,

 http://hackage.haskell.org/cgi-bin/hackage-scripts/package/stream-fusion

To replace GHC's existing list fusion, we'll need to work out how concatMap is optimised, and push the desugaring for list comprehensions into GHC.

For now though, users can just use the library, and avoid list comprehensions and [n .. m] (use enumFromTo).

Changed 17 months ago by simonmar

  • architecture changed from Multiple to Unknown/Multiple

Changed 17 months ago by simonmar

  • os changed from Unknown to Unknown/Multiple

Changed 7 months ago by pumpkin

  • cc pumpkingod@… added

Changed 7 months ago by mux

  • cc mhenrion@… added

Changed 7 months ago by PHO

  • cc pho@… added

Changed 3 months ago by simonmar

  • difficulty changed from Project (> 1 week) to Project (more than a week)
Note: See TracTickets for help on using tickets.