__color__,__group__,ticket,summary,component,version,type,owner,status,created,_changetime,_description,_reporter
2,,21,Value skipping Behaviour,None,,defect,,new,2009-01-09T01:46:33Z+0000,2009-01-09T01:46:33Z+0000,"Case01 is the original, Case02 fixes things, Case03 breaks it again, but in a different way (the behaviour is the same as in case 1)

Case 3 shows that this is not necessarily related to snapshot, my bets go on stepper and/or Double as TimeT.

Conal thinks this might be related to http://hackage.haskell.org/trac/ghc/ticket/2558 , let's see.",ksf
3,,9,External events leak space when unused,None,,defect,,new,2008-11-16T22:09:45Z+0000,2008-11-16T22:09:45Z+0000,"There is a space leak with the current implementation of external events.
Each one has an associated channel that gets filled whether or not anyone is listening.
When there are no listeners, the channel just gets filled and not drained.
Perhaps the leak could be eliminated with the help of a weak reference.
Access the channel's read end via a structure than has an unused strong pointer to the channel.
Access its write end via a weak ref.
If the read end becomes inaccesible, then GC will (eventually) make the write end inaccesible, so it will stop getting filled and the existing channel content will get reclaimed.

I think this mechanism can be wrapped up as a reusable abstraction that hides the channel entirely.
",conal
3,,11,Reactive-GLUT does not have reports of unpress events,None,,defect,,new,2008-11-23T22:09:36Z+0000,2008-11-23T22:09:36Z+0000,"Hopefully this is the right trac for this
",EyalLotem
3,,14,Event -> Behaviour -> Event blocking,None,,defect,,new,2008-11-30T18:52:05Z+0000,2008-12-06T03:56:10Z+0000,,lilac
3,,15,Events don't hold monad laws,None,,defect,,new,2008-12-01T15:12:47Z+0000,2008-12-01T15:12:47Z+0000,"{{{
m :: EventG X String
m = listToEvent [future 1 ""m0""]

f,g :: String -> EventG X String
f = const $ listToEvent [ future 0 ""f0""
                        , future 0 ""f1""
                        ]
g = const $ listToEvent [ future 0 ""g0""
                        , future 1 ""g1""
                        ]

a = (m >>= f) >>= g
-- ((1,m0) >>= f) >>= g
-- [(1,f0), (1,f1)] >>= g
-- [(1,g0), (1,g1), (1,g0), (1,g1)]

b = m >>= (\x -> f x >>= g)
-- m >>= (\x -> f x >>= g)
-- m >>= ([(0,f0), (0,f1)] >>= g)
-- m >>= [(0,g0), (0,g0), (1,g1), (1,g1)]
-- [(1,g0), (1,g0), (1,g1), (1,g1)]
}}}

Beneath a and b is a calculation of the result in the semantic domain. This serves as a counter example of the assertion that joinE as defined in section 2.2.3 of the paper forms a monad with the rest of the things (list equality, fmap, etc.).",camio
3,,16,Rename 'mealy' function,None,,defect,,new,2008-12-01T18:11:34Z+0000,2008-12-01T18:11:34Z+0000,"As [http://www.haskell.org/pipermail/reactive/2008-November/000101.html Robin Green pointed out]


> On Mon, 24 Nov 2008 20:27:34 -0800
> ""Conal Elliott"" <conal@conal.net> wrote:

> > I renamed 'stateE' and 'stateE_' to' mealy' and 'mealy_' in
> > reactive-0.9.4 (just released).  I've been meaning to change these
> > names for a while now. I prefer these new names as being more clear &
> > specific and connecting clearly to automata theory rather than to
> > imperative programming.

> I don't think mealy is as general as a Mealy machine, so this seems
> misleading. A Mealy machine can jump to different states depending on
> its input. If 's' is the state type, and 'b' the input type (which
> seems to me to be the natural way to interpret it), that
> ""conditional jumping"" feature isn't present.

> I think

> \f g a e -> f <$> scanlE g a e

> is precisely a *Moore* machine, though? If so, scanlE is a particular
> kind of Moore machine in which f is the identity. And so are the other
> scanl* functions in the library - right?
> --
> Robin
",conal
3,,20,Functor instance for Reactive has an error.,None,,defect,,new,2008-12-12T13:59:35Z+0000,2008-12-12T13:59:35Z+0000,"The current definition:

{{{
instance Functor (ReactiveG t) where
  fmap f ~(a `Stepper` e) = f a `stepper` fmap f e
}}}

A reduction for `fmap id _|_`.
{{{
fmap id _|_
stepper (id (case _|_ of (Stepper a _) -> a)) (fmap id (case _|_ of (Stepper _ b -> b)))
Stepper (id (case _|_ of (Stepper a _) -> a)) (fmap id (case _|_ of (Stepper _ b -> b)))
Stepper (id _|_) (fmap id (case _|_ of (Stepper _ b -> b)))
Stepper _|_ (fmap id (case _|_ of (Stepper _ b -> b)))
}}}

We use http://www.haskell.org/onlinereport/exps.html#sect3.17.3 for the lazy pattern matching.

In section 6.3.5 we have the law for functors that fmap id = id, so

`fmap id _|_ == Stepper _|_ (fmap id (case _|_ of (Stepper _ b -> b))) /= _|_ == id _|_`

The solution is to remove the ~ from the definition.",camio
3,,22,rhs of a::Event <|> b::Event push-lagging more than its lhs,None,,defect,,new,2009-01-27T20:36:24Z+0000,2009-01-27T20:36:24Z+0000,"...as exposed in [http://moonpatio.com:8080/fastcgi/hpaste.fcgi/view?id=977]
. That one depends on unreleased and discontinued ffi bindings to [http://libagar], I can provide the source if necessary.

""more"" meaning that even the lhs may lag occasionally, but rarely.

Those Events are produced and consumed by
{{{
type Sync :: Clock TimeT

registerEvent :: Sync -> Object -> String -> (AgarEvent -> IO a) -> IO (Event a)
registerEvent cl o s a = do
    (sink, src) <- makeEvent cl
    setEvent o s (\ev -> forkIO (a ev >>= sink) >> return ())
    return src

makeSink :: (a -> Action) -> Event a -> IO ThreadId
makeSink a = forkIO . adaptE . fmap a
}}}

that is, event handlers spark threads to sink, and output is shoved into agar in another thread than the one running its event loop (that is sparking the threads).",ksf
3,,23,Circular integral equation doesn't work,None,,defect,,new,2009-04-26T02:18:21Z+0100,2009-04-26T02:36:46Z+0100,"I wrote the following small demo. Note the circular relationship between the velocity and acceleration. Conal says this is supposed to work. The program produces the first frame of animation (managing to draw the black background and white disk), but then immediately freezes, and doesn't repaint itself.

{{{
import Control.Applicative
import Data.VectorSpace
import FRP.Reactive
import FRP.Reactive.GLUT.Adapter
import Graphics.FieldTrip
import FRP.Reactive.FieldTrip
import Data.Traversable (sequenceA)

main = anim2 myDisk

myDisk ui = motion . pure $ uscale2 (0.1 :: Double) *% udisk
  where motion = liftA2 (*%) (fmap translate2 (position ui))

position ui = integral (framePass ui) (velocity ui)

velocity ui = integral (framePass ui) (accel ui)

accel ui = liftA2 (^+^) (keyAccel ui) (fmap ((-0.1) *^) (velocity ui))

keyAccel :: Anim (Vector2 Double)
keyAccel ui = accumB zeroV . fmap f $ keyAction ui
  where f (Down, k) = (^+^ keyMotion k)
        f (Up, k)   = (^-^ keyMotion k)

arrowKeys :: UI -> Event (KeyState, Key)
arrowKeys = filterE ((`elem` map SpecialKey [KeyUp, KeyDown, KeyLeft, KeyRight]) . snd) . keyAction

keyMotion (SpecialKey KeyUp)    = vector2 0 1
keyMotion (SpecialKey KeyDown)  = vector2 0 (-1)
keyMotion (SpecialKey KeyLeft)  = vector2 (-1) 0
keyMotion (SpecialKey KeyRight) = vector2 1 0
keyMotion _ = zeroV
}}}

For reference, here's the GHCi log, which includes the version numbers of the packages involved. I got everything from Hackage.
{{{
GHCi, version 6.10.1: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer ... linking ... done.
Loading package base ... linking ... done.
[1 of 1] Compiling Main             ( ReactiveGame.hs, interpreted )
Ok, modules loaded: Main.
*Main> main
Loading package syb ... linking ... done.
Loading package base-3.0.3.0 ... linking ... done.
Loading package array-0.2.0.0 ... linking ... done.
Loading package containers-0.2.0.0 ... linking ... done.
Loading package old-locale-1.0.0.1 ... linking ... done.
Loading package old-time-1.0.0.1 ... linking ... done.
Loading package random-1.0.0.1 ... linking ... done.
Loading package filepath-1.1.0.1 ... linking ... done.
Loading package unix-2.3.1.0 ... linking ... done.
Loading package directory-1.0.0.2 ... linking ... done.
Loading package process-1.0.1.0 ... linking ... done.
Loading package haskell98 ... linking ... done.
Loading package QuickCheck-1.2.0.0 ... linking ... done.
Loading package mtl-1.1.0.2 ... linking ... done.
Loading package MemoTrie-0.4 ... linking ... done.
Loading package OpenGL-2.2.1.1 ... linking ... done.
Loading package GLUT-2.1.1.2 ... linking ... done.
Loading package graphicsFormats-0.1 ... linking ... done.
Loading package vector-space-0.5 ... linking ... done.
Loading package pretty-1.0.1.0 ... linking ... done.
Loading package Cabal-1.6.0.1 ... linking ... done.
Loading package bytestring-0.9.1.4 ... linking ... done.
Loading package editline-0.2.1.0 ... linking ... done.
Loading package hpc-0.5.0.2 ... linking ... done.
Loading package packedstring-0.1.0.1 ... linking ... done.
Loading package template-haskell ... linking ... done.
Loading package ghc-6.10.1 ... linking ... done.
Loading package category-extras-0.53.5 ... linking ... done.
Loading package lazysmallcheck-0.3 ... linking ... done.
Loading package Stream-0.3 ... linking ... done.
Loading package TypeCompose-0.6.4 ... linking ... done.
Loading package FieldTrip-0.2.1 ... linking ... done.
Loading package checkers-0.1.3 ... linking ... done.
Loading package unamb-0.1.9 ... linking ... done.
Loading package reactive-0.10.5 ... linking ... done.
Loading package reactive-glut-0.1.6 ... linking ... done.
Loading package InfixApplicative-1.0.1 ... linking ... done.
Loading package reactive-fieldtrip-0.0.8 ... linking ... done.
}}}",cgibbard
3,,24,GLUT mouse coordinates do not appear to match 2D graphics coordinates,None,,defect,,new,2009-04-26T05:18:58Z+0100,2009-04-26T05:18:58Z+0100,"Here is a program in which a disc should follow the mouse cursor. Instead, the coordinate scaling is a little different, so they only meet when the mouse is in the centre of the view. 

{{{
import Control.Applicative
import Data.VectorSpace
import FRP.Reactive
import FRP.Reactive.GLUT.Adapter
import Graphics.FieldTrip
import FRP.Reactive.FieldTrip

main = anim2 myDisk

myDisk ui = motion . pure $ uscale2 (0.1 :: Double) *% udisk
  where motion = liftA2 (*%) (fmap translate2 mouse)
        mouse = fmap (uncurry vector2) (mousePosition ui)
}}}",cgibbard
3,,26,Strange performance behaviour,None,,defect,,new,2009-04-26T05:57:50Z+0100,2009-04-26T05:57:50Z+0100,"In the following program, velocity is computed as the sum of the integral of an acceleration term derived from keyboard input, and the position of the mouse. If I comment out the liftA2 (^+^) and either one of the two sources of velocity, the performance is smooth. However, taking the sum like this makes the program very jerky and unresponsive. Compiling with optimisations does not appear to help. Is it just my machine?

{{{
import Control.Applicative
import Data.VectorSpace
import FRP.Reactive
import FRP.Reactive.GLUT.Adapter
import Graphics.FieldTrip
import FRP.Reactive.FieldTrip

main = anim2 myDisk

myDisk ui = motion . pure $ uscale2 (0.1 :: Double) *% udisk
  where motion = liftA2 (*%) (fmap translate2 (position ui))

position = uiIntegral velocity

velocity ui = liftA2 (^+^)
                (uiIntegral accel ui)
                (fmap (uncurry vector2) (mousePosition ui))

accel ui = keyAccel ui 

keyAccel :: Anim (Vector2 Double)
keyAccel ui = accumB zeroV . fmap f $ keyAction ui
  where f (Down, k) = (^+^ keyMotion k)
        f (Up, k)   = (^-^ keyMotion k)

keyMotion (SpecialKey KeyUp)    = vector2 0 1
keyMotion (SpecialKey KeyDown)  = vector2 0 (-1)
keyMotion (SpecialKey KeyLeft)  = vector2 (-1) 0
keyMotion (SpecialKey KeyRight) = vector2 1 0
keyMotion _ = zeroV
}}}",cgibbard
3,,29,join is broken for events,None,,defect,,new,2009-10-08T20:54:07Z+0100,2009-10-08T21:32:26Z+0100,"In GHCi:

{{{
Prelude FRP.Reactive.Reactive Control.Monad Control.Applicative> join $ return (empty :: Event ())
Loading package syb ... linking ... done.
Loading package base-3.0.3.1 ... linking ... done.
Loading package array-0.2.0.0 ... linking ... done.
Loading package old-locale-1.0.0.1 ... linking ... done.
Loading package old-time-1.0.0.2 ... linking ... done.
Loading package random-1.0.0.1 ... linking ... done.
Loading package filepath-1.1.0.2 ... linking ... done.
Loading package unix-2.3.2.0 ... linking ... done.
Loading package directory-1.0.0.3 ... linking ... done.
Loading package process-1.0.1.1 ... linking ... done.
Loading package haskell98 ... linking ... done.
Loading package mtl-1.1.0.2 ... linking ... done.
Loading package MemoTrie-0.4.5 ... linking ... done.
Loading package containers-0.2.0.1 ... linking ... done.
Loading package pretty-1.0.1.0 ... linking ... done.
Loading package Cabal-1.6.0.3 ... linking ... done.
Loading package bytestring-0.9.1.4 ... linking ... done.
Loading package hpc-0.5.0.3 ... linking ... done.
Loading package packedstring-0.1.0.1 ... linking ... done.
Loading package template-haskell ... linking ... done.
Loading package ghc-6.10.4 ... linking ... done.
Loading package category-extras-0.53.5 ... linking ... done.
Loading package lazysmallcheck-0.3 ... linking ... done.
Loading package unamb-0.2.2 ... linking ... done.
Loading package vector-space-0.5.7 ... linking ... done.
Loading package QuickCheck-2.1.0.2 ... linking ... done.
Loading package TypeCompose-0.6.7 ... linking ... done.
Loading package checkers-0.2.4 ... linking ... done.
Loading package Stream-0.3.2 ... linking ... done.
Loading package reactive-0.11 ... linking ... done.
Event: *** Exception: BothBottom
}}}

join . return should be equal to id",greenrd
3,,30,Build fails with QuickCheck 2.1.0.2,None,,defect,,new,2009-10-10T06:09:42Z+0100,2009-10-10T06:09:42Z+0100,"With QC 2.1.0.2, the ""import Test.QuickCheck.Applicative ()"" is no longer needed, since QC defines its own Applicative instance. That module has been removed from the latest checkers too, so it actually causes the reactive build to fail.",ajd
3,,31,BehaviorG has no Monad instance,None,,defect,,new,2010-06-13T11:48:07Z+0100,2010-06-14T22:04:33Z+0100,Despite being documented as Monad BehaviorG have no monad instances.,uzytkownik
3,,32,Several failed monotonicity tests for Reactive.PrimReactive,None,,defect,,new,2011-01-10T21:08:08Z+0000,2011-01-12T22:25:35Z+0000,"There are failed monotonicity tests (located in src/Test.hs) for Reactive.!PrimReactive in version 0.11.5 of reactive.  The failing functions are: withTimeGE, accumE, mappend, mplus, <|>. and fmap.

I am using GHC 6.12.1 on a Fedora 13 x86_64 machine.

The versions of the dependencies are:[[BR]]
base-4.2.0.0[[BR]]
category-extras-0.53.5[[BR]]
checkers-0.2.8[[BR]]
old-time-1.0.0.3[[BR]]
!QuickCheck-2.4.0.1[[BR]]
random-1.0.0.2[[BR]]
Stream-0.4.2[[BR]]
!TypeCompose-0.8.0[[BR]]
unamb-0.2.4[[BR]]
vector-space-0.5.9[[BR]]

I have also run the test on a GHC 7.0.1 Fedora 14 x86_64 machine with the same results.",HackerFoo
3,,10,Export some general class functions from FRP.Reactive,None,,enhancement,,new,2008-11-21T21:38:33Z+0000,2008-11-21T21:59:52Z+0000,"Specifically, join from Monad, mappend and mempty from Monoid, and the liftA* functions from Applicative. Maybe also the infix functions from applicative although I don't use these personally.",camio
3,,17,"Make a ""Beginner"" priority/milestone/keyword",None,,enhancement,,new,2008-12-03T17:02:38Z+0000,2008-12-03T17:02:38Z+0000,"Neil Mitchell, in his article in the Monad Reader issue 12, mentioned that some of the bug listings for Hoogle include a ""Beginner"" tag. This seems like a great way to get people new to the project involved in its development and have immediate success.

The trac system includes ""milestone"" and ""priority"" tags that we could use, but I'm also seeing the ""Keywords:"" thing below which may be best. I think to implement this well, we'd need to:

 * Decide on Using Milestone, Priority, or Keyword with a preference for Keyword.
 * Create a custom report in ""View Tickets"" that displays two graphs, one for beginner incomplete and another for beginner complete.
 * Revamp the front page of the ""trac"" wiki linking to a the beginner ticket list and others with explanations.
 * (If easy enough) Modify the trac templates to note on the ""Create New Ticket"" page that ""beginner"" can be used as a keyword.",camio
3,,18,Mailing list for changes in the main reactive repository,None,,enhancement,,new,2008-12-03T17:11:03Z+0000,2008-12-03T18:10:17Z+0000,"If there was a mailing list for patches integrated into the main reactive repository, developers could keep tabs on what's going on while away from their development machines. It also opens the opportunity for discussion on the patches themselves, and buys us a nice graphical interface, via. mailman, for the trunk's history.

Doing this would first involve seeing if anything out there that can make this simple.",camio
3,,19,"Make a ""getting involved"" wiki page",None,,enhancement,,new,2008-12-03T17:19:12Z+0000,2008-12-03T17:19:12Z+0000,"It would be nice if we have a very beginner-friendly page for getting involved with the reactive community. This change may entice some to join the community who otherwise wouldn't. This sort of relates to #7 and would certainly mention #17 if implemented.

It could walk through questions like:
 * What's too beginnerish of a question to ask on the mailing list (none hopefully!).
 * I found a bug, how do I report it?
 * What are some fun things to do immediately? (Tutorial/play tetris)
 * Which packages do I need to get up and running?
 * Who's the big commercial sponsor of reactive? Anygma!
 * . . .",camio
3,,25,GLUT provides many useful and practical features which are not exposed by the adapter,None,,enhancement,,new,2009-04-26T05:38:24Z+0100,2009-04-26T05:38:24Z+0100,"It would be nice if a larger portion of the features provided by GLUT were accessible in some way to programs using reactive-glut. In particular, it would be nice to have the ability to control the window geometry and title, fullscreen, per-window keyboard repeat setting (which should probably default to being off), and a wider range of events available from the library. Another ticket points out that there's no mouse-up events, but there's also no reporting of a middle mouse button or wheel, and keyboard modifier keys aren't reported.",cgibbard
4,,27,mkUpdater sleeps for constant behaviours,None,,defect,,new,2009-05-02T06:11:32Z+0100,2009-05-02T13:56:34Z+0100,"I wrote a little sample program:

{{{
main = do
    c <- makeClock
    a <- mkUpdater (cGetTime c) (fmap (const (print ""ping"")) time)
    a
}}}

which, to my dismay, exited without printing ""ping""! I have therefore added a new behaviour and a rewrite rule which allows me to implement my test thusly:

{{{
main = do
    c <- makeClock
    a <- mkUpdater (cGetTime c) (bConst (print ""blah""))
    a
}}}
",povman
4,,28,Adds mouse button-up and mouse/keyboard behaviors to reactive-glut,None,,enhancement,,new,2009-05-18T21:56:07Z+0100,2009-05-18T21:56:07Z+0100,"One patch, as ordered.",Baughn
3,,6,Hackage web page for reactive shows markup.,component1,,defect,conal,assigned,2008-11-14T14:23:06Z+0000,2008-11-14T21:21:16Z+0000,"When I view the Hackage page for Reactive, I see things like &#169; and other markup.

http://hackage.haskell.org/cgi-bin/hackage-scripts/package/reactive-0.9.0",camio
1,,2,joinE not lazy enough,component1,,defect,somebody,new,2008-11-11T15:54:01Z+0000,2008-11-11T15:54:01Z+0000,"This is an oldie. It is exemplified in the tutorial with the metronome example. It seems to be one step behind. Looking at the implementation of joinE:
{{{
-- Note, joinE should not be called with an infinite list of events that all
-- occur at the same time.  It can't decide which occurs first.
joinE :: (Ord t) => EventG t (EventG t a) -> EventG t a
joinE (Event (Future (Max MaxBound, _))) = mempty
joinE (Event (Future (t0h, e `Stepper` ((Event (Future (Max MaxBound, _)))))))
  = adjustE t0h e
joinE (Event (Future (t0h, e `Stepper` ee'@((Event (Future (t1h, _)))))))
  = happy (adjustE t0h e) t1h (adjustTopE t0h (joinE ee'))
}}}

we can see how it hast to look two events into the future.",camio
2,,8,Problems with filterMP,component1,,defect,somebody,new,2008-11-16T16:18:55Z+0000,2008-11-19T17:56:57Z+0000,"This sample code generates rather strange results: 

{{{
import FRP.Reactive as R
import FRP.Reactive.LegacyAdapters
    
import Control.Applicative

import Control.Monad
import Data.Monoid
import Control.Concurrent
import System.IO

main = do
  c <- makeClock 
  (onStanza, snk_onS) <- makeEvent c
  let bred = ((const $ putStrLn "">10"") <$> filterMP (>10) onStanza) `mappend`
             ((const $ putStrLn ""<10"") <$> filterMP (<10) onStanza)
  hSetBuffering stdout NoBuffering
  doSched c connect bred
  mapM (\x -> snk_onS x >> threadDelay 1000) [5..15]
  forever $ threadDelay 1000000000
  return ()

doSched clock init act = do
  updater <- mkUpdater (cGetTime clock) (stepper init act)
  forkIO $ forever $ (updater)
}}}

After displaying: 
{{{
<10
<10
}}} 
everything hangs. Debugging shows that sink and updater are called, but updater does nothing. 

Same code without filterMP works as expected: it displays 20 messages. ",pierre
3,,3,Crash when integral acts on single event,component1,,defect,somebody,new,2008-11-13T00:01:39Z+0000,2008-11-14T20:30:32Z+0000,"If you run the following code it will work correctly & run into the already tracked <<loop>> problem with integral.  If you change the events to events' in the main function, it eats up all the RAM & causes a hard lockup. I'm not sure yet if this is related to any known bug. 

import FRP.Reactive[[BR]]
import FRP.Reactive.LegacyAdapters[[BR]]
import Control.Concurrent[[BR]]
import Control.Monad[[BR]]

x :: Event () -> Behavior Double[[BR]]
x e = b where b = integral e b

events :: Event ()[[BR]]
events = atTimes [0.1,0.2]

events' :: Event ()[[BR]]
events' = once events

schedule a = threadDelay 100000 >> a

main = do
 c <- makeClock[[BR]]
 u <- mkUpdater (cGetTime c) (fmap print $  x events)[[BR]]
 forever $ schedule u[[BR]]",wchogg
3,,5,Metronome example doesn't work,component1,,defect,somebody,new,2008-11-14T14:19:30Z+0000,2008-11-14T14:20:35Z+0000,"On my machine I get no sound and the following output when I used ""adapt metronome"" with '''ghci EventTut.hs''':
{{{
<interactive>: Future mempty: it'll never happen, buddy
}}}

This code (aside from the legacy adapter) is from David and Conal's Event tutorial here:

http://netsuperbrain.com/blog/posts/introducing-reactive-events/

Sasha Rush and Michael Smith both wrote their own Legacy Adapters using adaptE and gained similar results. I suspect this is somehow related to #2 since I discovered that bug by narrowing down a different program with similar behavior.",camio
3,,7,User Friendly Reactive home page,component1,,defect,somebody,new,2008-11-14T14:29:43Z+0000,2008-11-26T21:26:29Z+0000,"In my opinion, the Reactive home page isn't user friendly for those new to FRP. I believe the library could gain a wider user and developer base if it was stated prominently, clearly, and concisely how this library could serve someone who wants to use it. I'd also like to see an emphasis on some easily digestible problems that is solves.

The implementation details (mentions of Improving and Reactive) and history could go on sub-pages for those who are interested.",camio
3,,4,Find a way to exploit periodicity of behaviours/time functions,component1,,enhancement,somebody,new,2008-11-13T02:26:41Z+0000,2008-11-13T03:48:38Z+0000,"It seems that for purposes of efficiency, it would be appropriate to exploit known periodicity to be able to cache expensive time functions.

In order to do this, you would likely need to be able to fix a time resolution at which the time function was to be sampled, however, there might be a reasonable way to propagate demand for time resolution, similar to how real arithmetic libraries propagate demand for precision (in order to not lose composability).",cgibbard
3,,1,Recursive integration (ODEs) lock up,component1,,defect,wchogg,new,2008-11-08T01:59:27Z+0000,2009-10-02T01:23:37Z+0100,"Perhaps other self-reactive behaviors as well.  I defined the semantics of reactivity carefully to allow this sort of thing to be meaningful and work.  The problem might be a little over-strictness, or it could be deeper.",conal
