bookowl / nemo Goto Github PK
View Code? Open in Web Editor NEWA fishy programming language.
License: The Unlicense
A fishy programming language.
License: The Unlicense
nemo needs
LLVM supports coroutines, so maybe someday nemo can become a compiled language.
The current API just sucks. Probably will be fixed with #1
Currently nemo uses threads and queues to implement piping. This isn't a very good solution for several reasons.
A single threaded solution would be much better. I've tried coroutines, but I can't get the code to work right without segmentation faults.
The current module system you have works fine if you want to make functions with the standard library. But what about implementing new features, such as creating HTTP requests?
I am aware that this language is not fully developed and more of a project than an actual language, so this is not really an issue as much as it is an inquiry: how would you implement foreign modules into your language?
If nemo is going to be useable for anything serious, it needs modules.
There will be two types of modules:
The distinction will only be in the interpreter, not to nemo code.
The syntax for comments will be
# This is a comment
I originally created nemo to see what a language that provided high level support for piping would be like. I believe that is has succeed in this aim and taught me several things.
Coroutines are much more general than pipes and allow several different styles of organizing code. Pipes are very specific, and can be easily created with coroutines.
I believe nemo would be a much better and more useful language if it makes working with async code using coroutines as easy as sync code, while still being fast.
Despite nemo not being a functional (as in the paradigm), I have tried to make much of its syntax functional. This made things unnecessarily confusing. I'm going to try to make the syntax more traditional in places where the language is like other languages, but still keep the new stuff different.
pub fn eval<'a, 'b>(ast: &'a Expr, env: ProtectedEnv, this: Arc<Mutex<queue::Consumer<Value>>>, next: Arc<Mutex<queue::Producer<Value>>>) -> Result<Value, Error<'b>> {}
nemo's current source code is complex and not very fast compared to things like bytecode VMs and JITs. #7 can be fixed as part of this.
I believe that the best way to fix this is to redesign nemo with an eye towards coroutines and async code, and completely rewrite the source.
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.