I'm a senior software engineer. I like math, skiing, and tanks.
stephen-zhao / cascas Goto Github PK
View Code? Open in Web Editor NEWCanadian Students' Computer Algebra System
Canadian Students' Computer Algebra System
Description:
The following entries should be added to the built-in context:
Item (2) should be added as a temporary measure until #3 can be completed. Then it must be removed (future story).
Split up Expr.scala into numerous files, one for each Expr subclass
e.g.
let y := x + 8;
should not throw a "not in context" error. The x should be implicitly declared.
Moreover, e.g.
let z := x + 3;
should refer to the same x as the previous "let y..." expression, so the x should be implicitly declared in the surrounding scope.
Currently the following are allowed as type labels:
Allowing ApplyExpr gives us the ability to use operators as type identifiers.
This will facilitate what most languages call Type Generics.
e.g.
if
List : OperatorType(T: Type)(Type)
then we can define a list of numbers like this
myListOfNumbers : List(Number)
Right now all function applications look the same. It'd be nice if BuiltIns can define their own toRepr function that is used when the BuiltIn is applied.
It might be worth considering making a set of standardized "looks" for a toRepr.
e.g. A set of toReprs { appearanceBinaryInfixOperator, appearanceStandard, appearanceUnaryPostfixOperator, appearanceUnaryPrefixOperator } and have the developer who creates the Builtin choose among these options as to how their function should look on default when being displayed in a function application.
This probably shouldn't just be an enumeration like above though. It should be smarter (deal with number of operands maybe). The developer should also be able to override with a custom "look".
Remove old files:
*/lang/EvaluatedType.scala
*/lang/Obj.scala
*/lang/Collection.scala
*/lang/Number.scala
.. among others
... or at least place the ParseNodes file in a new package since it is shared between several other components
Code does not provide the proper behaviour when signs are involved in the numerators / denominators.
Implicit type parameters are needed for operators that cannot infer the types of their parameters, so need general types. The following functionality is needed for this:
i.e. def Object::inferThatType (that: Object, ctx: Context): Option[TypeIdentifier]
This method will try to figure out the type of that
within the object this
given the context ctx
.
This should make it easier to implement built-in operators and eliminate repeated boilerplate code.
But we need to "create" the framework first. I think most what currently exists already works. It just needs some revision/polishing and the addition of a generic parameter processor.
As described in the "Ideas to Jot" page on the wiki.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.