Comments (10)
Strong type system
Introduce some complicated type system that will be able to figure out complex cases for even operators.
Especially it must answer the question - how many port elements this operator will use?
from neva.
Only N:N
Allow arr-ports and outports to be only 1:1 inports to outports
Problem
TODO
from neva.
Default/empty values
Always use all the outports but send some empty values to the ones that are not needed.
Example: p1, p2, p3 -> router -> r1, r2, r3, r4
. There is no value for r4
but router
will send some default value there
Problems
- Computations without any sense
from neva.
Array bypass solution
Just forbid array outport indexing and introduce new type of port reference / connection - "array bypass".
It must be used when we want to connect some array-outport with some array-inport.
Both part of the connection must be array-ports.
Problems
- Makes hard to implement routing #38
- Impossible to send specific elements to nodes inports (use normal ports for that?)
- Could be hard to compute port elements count #41
from neva.
Only array-inport indexing
Allow only referencing array element if its inport
Problem
- Probably not solves the routing problem
- It could be impossible or VERY hard to figure out incoming connections count (e.g Parent network could use
bypass
connection)
from neva.
Only allow if incoming connections count is known
- if it's clear how parent network uses component
- if it's clear how many elements submodule uses
Problems
- Doesn't solve routing problem (there should be some operator for routing)
- Makes modules less reusable (module with arr-ports indexing could not be used by some networks)
- Makes compiler more complicated
from neva.
Don't implement array ports
Just use List
Problems
- Synchronous flow (must accumulate elements into single peace before processing, must accumulate new list before passing further)
- Doesn't solves routing problem (bypass also not solves it)
- FBP has array ports
from neva.
Allow array outports
Just aware programmer that array-outports must be used with caution
Pros
- Solves the routing problem
- True FBP
Cons
- Possibility for runtime blocks
- More testing needed
- Can't claim that "if it compiles it runs" any longer
from neva.
Check for holes only
If there is a[2]
then there must be a[0]
and a[1]
. Because if there is a[3]
then there is 0,1
elements that must be used because someone is must be sending values to those ports.
Problems
- Unread values - If there's
n
ports filled but only<n
ports are used outside (could be solved in #54) - Unfilled values - if there's
<n
ports filled butn
ports used #55
from neva.
Make sure indexing errors are startup errors
Allow outports indexing but make sure any indexing errors will happen at startup of the program
TODO think how to implemnt
from neva.
Related Issues (20)
- Closure (Implement "visibility scope" via hierarchy of deferred connections) HOT 1
- [Idea]: Should we write Runtime funcs to use one Goroutine per port? HOT 4
- Multiline Comments HOT 2
- Inconsistent output inside `For` with branching HOT 7
- Match allows array-port overwrite HOT 1
- Consistent naming for boolean components
- Alternative syntax for outports HOT 3
- `Zip` component HOT 2
- Iter should support strings HOT 1
- Race-condition with fan-in pattern HOT 2
- Force Outport Operator HOT 3
- Data processing components out of the box
- `Find` component HOT 1
- `Has` component HOT 1
- `Collate` component
- Reduce noise when using ports by replacing `:` with `.` HOT 1
- HTTP Client
- Improve struct field selectors syntax
- Move println to io HOT 2
- Reduce as higher order component for binary handlers HOT 1
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 neva.