
You can factor out the fromIntegral t part using (***) from Control.Arrow. For functions,
(f *** g) (x,y) = (f x, g y)
Drop time (t) handling from render:
playSong :: DtzEvents -> IO() playSong events = runContT (foo "128:0" 120 (map (fromIntegral *** render) events)) print where render (NoteOn c n v) = noteOn c n v ...
-- Conal
On Sun, Nov 3, 2013 at 9:36 AM, martin
Am 11/03/2013 03:35 PM, schrieb Niklas Hambüchen:
It depends a bit:
What is supposed to happen / what happens in your library when one of the numbers is larger than a Word8?
That usually determines where / how the conversion fits in nicely.
For example, if you already know that all the values in DtzEvent can only be Word8s, then they should probably already be Word8s and not Int.
Silly me,
yes using Word8 instead of Ints got rid of most of the fromIntegrals. I didn't know that Word8 was an actual haskell type. Thought it was something private to ALSA.Sequencer.
There is one remaining fromIntegral. This is "time"
Couldn't match expected type `alsa-seq-0.6.0.2:Sound.ALSA.Sequencer.Marshal.Time.Tick' with actual type `T'
This seems to be realy a private thing and I found to way other than fromIntegral to make the compiler happy.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe