Comments (8)
Can we open some more dialog on this? I don't really buy the only comment against this - if you try and use operators that aren't part of Num
, you get a type error as expected. That's mildly annoying, but not a disaster. The Num
operators remove a significant amount of noise, especially in game related programming.
from reactive-banana.
I'm in favor now. See #174
from reactive-banana.
Personally, I think this is a bad idea; see this comment.
from reactive-banana.
I think that a Num
instance is very useful for animations or audio, but I don't have enough experience with animations to know how useful exactly. For instance, current graphics libraries tend to use vector space operations, like vecAdd
and vecSub
, so a Num
instance wouldn't work.
I would like to leave this open for now. If you have any examples that showcase how life is made simpler with class instances, please let me know!
from reactive-banana.
Has there been any more thought on this? The examples in the original fran tutorial are in my opinion remarkably expressive due to the Num
instance.
accelBecky u = moveXY x 0 becky
where
x = -1 + atRate v u
v = 0 + atRate 1 u
flows u = trailWords motion
"Time flows like a river"
where
motion = 0.7 *^ vector2XY (cos time)
(sin (2 * time))
from reactive-banana.
I'm still undecided.
The operator (*^)
is not a member of the Num
class, though, right?
from reactive-banana.
That's right - it's part of a vector-space. I guess Conal must have made a VectorSpace
instance for Behavior
as well.
from reactive-banana.
I realise I never voiced my opinion here. I'd like to mention that I am quite strongly 👍 on Num
, Fractional
and Floating
instances. I would even go further and add IsString a => IsString (Behavior a)
, but in the work I'm doing this particular case can be hidden behind a newtype
. (The numeric stuff however I do want to be working with Behavior
and not another type)
from reactive-banana.
Related Issues (20)
- `reactive-banana` can't be compiled on GHC 9.2 HOT 2
- I created a Matrix channel HOT 8
- An interesting `Applicative`-ish way of combining `Event`s HOT 4
- Add `MonadMoment` instances for all monad transformers in `transformers` HOT 1
- Release 1.3.0.0 HOT 3
- Join Stackage HOT 4
- `Behavior` constantly re-evaluating when caching is expected HOT 4
- Unexpected memory growth HOT 6
- Event handler not seeing early events. HOT 12
- `Behavior`s can hold onto more memory than they need to HOT 2
- Memory leak with dynamic behavior switching HOT 16
- Gloss GUI events not responding HOT 5
- Idea: add a combinator to track when a behavior is a different value HOT 14
- Call `unregister` for garbage collected events made by `AddHandler`. HOT 9
- Discrepancy in model and implementation HOT 15
- Optimize representation of Latch HOT 1
- Not compatible with these-1.2 (disallowed) HOT 2
- Simultaneous events can have undefined behavior within execute HOT 2
- source-code formatter? HOT 2
- Accept deepseq-1.5 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from reactive-banana.