kriyative / clojurejs Goto Github PK
View Code? Open in Web Editor NEWA naive Clojure to javascript translator
A naive Clojure to javascript translator
In 1.2.7 release, a keyword :foo-bar is translated as 'foo-bar'. I think the prior release, it was translated to 'foo_bar'.
Translating :foo-bar to 'foo_bar' makes it easy to write code such as {:foo-bar (fn [] ...)} and later refer to it as (.foo-bar baz). Can this behavior be restored?
When I try (use 'clojurejs.js) in lein repl using Clojure 1.5.1 I get this error:
CompilerException java.lang.IllegalArgumentException: Duplicate case test constant: quote, compiling:(clojurejs/js.clj:487:5)
Multiple arity support for the defn
and fn
forms could be implemented by conditionally dispatching on the Javascript Function.length property.
Currently slot (or field) access is done via the get
special form, which simply does an array index lookup. Presumably, the same could be done for length
as well, via a macro in boot.cljs, instead of treating it as a reserved word.
Since macro expanders are kept in a single global ref, macros with the same name in different clojurejs scripts will overwrite one another, which is bad. Since, macro definitions need to be persistent across multiple HTTP requests, using a thread local binding isn't a sufficient solution.
One idea is to implement a minimal ns
form in clojurejs, which could establish the namespace for a given clojurejs script, and keep the macro definitions independent.
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.