287 karma · joined March 9, 2011
http://tiye.me
https://marctenbosch.com/quaternions/#h_5 https://www.bilibili.com/video/BV1Ey4y1P782/?vd_source=85697...
People may hold opinion that Solid/Svelte are excellent. However that's going towards another direction. Virtual DOM decouples how you declare UI and how it's rendered/updated by framework. Solid/Svelte couple them.
Personally I moved to my own language Calcit for my own projects using dynamic language tools. Calcit is still following lots of designs from Clojure.
I have several more articles/videos posted in Chinese, not ready to push all that forward yet... there are too many repos under Cirru and Calcit, many of them are not well maintained I'm afraid. :D
If anyone feel interested, please give a try.
One thing to notice is Calcit is using indentation-based syntax while supporting macros. It's strange, but it works really well.
Tips to notice is WASM runs inside a sandbox, which means threads, random numbers generator(not sure for WASI), FFIs, etc. have to be moved out of the core to prevent them being compiled to WASM, which would probably fail. For major part of the code, they can be compiled to WASM and WASI(WASM System Interface) very easily.
- Demo for Pads https://repo.cirru.org/tree-layout/ - Code https://github.com/Cirru/tree-layout
V8 still has to updater its parser. Other tools that handle JavaScript parsing need to do that as well.
> You'd be able able to use typescript autocomplete and linting in your editor, and just serve the files to your browser with a static http server.
Nope, it's not using TypeScript directly, but just another language very similar to TypeScript.
->
range 100
map $ fn (x)
* x x
foldl 0 &+
println
which is S-Expressions with indentations, with in-line paren pairs. It looks a lot like Python by still using prefixed operators and it's still S-Expressions after parsing to remain homoiconic.And my prototype language http://calcit-lang.org/ .
a bad aspect of CoffeeScript I see is "it's not an industry language". too flexible, insufficient integrations with standard tools, slow fixes and new features. The industry definitely need as lot of features for pushing and also controlling work.
Object variants could support this need. But I was already amazed by those Haskell features.
Say I have `{:a 1}`, which is equivalent to `(hash-map :a 1)`, I take it as data and I can recreate the expression with the later form:
user=> (quote (hash-map :a 1))
(hash-map :a 1)
user=> (def a (quote (hash-map :a 1)))
#'user/a
user=> (list (nth a 0) (nth a 1) (nth a 2))
(hash-map :a 1)
but for `{:a 1}`, I got error since it's a bit different: user=> (def b (quote {:a 1}))
#'user/b
user=> (list (nth b 0) (nth b 1) (nth b 2))
Execution error (UnsupportedOperationException) at user/eval12 (REPL:1).
nth not supported on this type: PersistentArrayMap
user=> b
{:a 1}
now it's different, it's no longer homoiconic in this syntax. user=> (first b)
[:a 1]
I would rather not using this syntax in my own lisp and still using a prefixed version.