CoinBLAS
LIPS
CoinBLAS | LIPS | |
---|---|---|
3 | 39 | |
21 | 386 | |
- | 1.8% | |
1.8 | 9.9 | |
almost 3 years ago | 7 days ago | |
Jupyter Notebook | JavaScript | |
- | MIT |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
CoinBLAS
-
The "missing" graph datatype already exists. It was invented in the '70s
When you consider that a graph and a matrix are isomorphic, doing vector matrix multiplication takes a vector with a set value, say row 4, and multiplies it by a matrix where row 4 has values present that represent edges to the nodes that are adjacent to it (ie "adjacency" matrix). The result is a vector with the next "step" in a BFS across the graph, do that in a loop and you step across the whole graph.
A cool result of this is, for example, taking an adjacency matrix and squaring it is the "Friend of a Friend" graph. It takes every node/row and multiplies it by itself, returning a matrix that are adjacent to the adjacencies of each node, ie, the friends (adjacencies of the adjacencies) of friends (adjacencies) of the nodes.
Deeper traversal are just higher nodes, a matrix cubed are the friends of the friends of the friends.
A picture is worth a thousand words, see figure 7 of this paper:
https://arxiv.org/pdf/1606.05790.pdf
Also check out figure 8, this shows how incidence matrices can work to represent hyper and multi graphs. An pair of incidence matrices reprsent two graphs, one from nodes to edges and the other from edges to nodes, these are n by m and m by n. When you multiply them, you get a square adjacency matrix that "projects" the incidence into an adjacency. This can be used to collapse hypergraphs into simple graphs that use different semirings to combine the multiple edges.
For some pretty pictures of this kind of stuff, check out CoinBLAS (note I am not a crypto-bro, it was just a very handy extremely large multi-graph that I could easily download in chunks to play with):
https://github.com/Graphegon/CoinBLAS/
-
Ask HN: What Are You Working On?
Python wrapper around The GraphBLAS API:
https://github.com/michelp/pygraphblas
For an upcoming paper we've open sourced using pygraphblas to analyse the bitcoin graph using the GAP benchmarks on a server with 1TB of RAM:
https://github.com/Graphegon/CoinBLAS
- Show HN: CoinBLAS – Bitcoin Analysis with the GraphBLAS
LIPS
- LIPS: Powerful Scheme based Lisp interpreter in JavaScript
-
(Learn 'Scheme)
Sweet, I'll have to give that a go :)
Another option in browser land is lips[0], which exclusively targets a js backend.
[0] https://lips.js.org
-
All Web frontend lisp projects
For Scheme implementations there are LIPS and biwascheme. I haven't done more than play around with them, so I can't really give an informed opinion about pros and cons or favorites.
-
Extending a Language — Writing Powerful Macros in Scheme
Your example revealed a bug in my Scheme interpreter. This is an example that fails to match:
-
What other Scheme parser tricks do you know?
In my interpreter, LIPS Scheme, vector literal syntax is created using a syntax extension, a token that is mapped to a function or a macro. So you can use things like this:
-
How to list defined symbols?
I'm not sure about other Scheme interpreters but in my interpreter LIPS Scheme, there is (env) function that returns a list of symbols. You can also access environment objects e.g. (current-environment) return object that is used internally. And you can even access the scope chain because the env object has __parent__ property that returns the parent scope.
-
May I see some of your projects? :)
Few of my Open Source projects: * jQuery terminal * LIPS Scheme * Gaiman * Sysend * Wayne
-
Async / Await in Scheme
(define promise (--> '>(fetch "https://lips.js.org/") (then (lambda (res) (res.text))) (then (lambda (text) (. (text.match #/\s*([^>]+?)\s*<\/h1>/) 1)))))
-
Yes we are men. Men is what we are.
ngl when I first saw the headline my first thought was, “Wait, bring CAR into JavaScript? Make it a Lisp? But hasn't it already been done?”
-
If you were hired to create a new distribution of Lisp, what would you include?
Languages like Biwa Scheme and LIPS Scheme are good for running Scheme in the browser. But I would prefer compiling Scheme code to JavaScript in the server, then serving the compiled JavaScript image to the browser.
What are some alternatives?
Tasker - A commitment tracker desktop app that tracks the progress of your tasks with mouse, keyboard and audio hooks.
scheme-lsp-server
covid_status
biwascheme - Scheme interpreter written in JavaScript
roost - Proof of Concept for Eventsourced backend
murex - A smarter shell and scripting environment with advanced features designed for usability, safety and productivity (eg smarter DevOps tooling)
suncalc - A tiny JavaScript library for calculating sun/moon positions and phases.
atbswp - A minimalist macro recorder
osmosis-js - JS reference implementation of Osmosis, a JSON data store with peer-to-peer background sync
slam-crappy - Navigation project for an indoor robot using a Raspberry Pi, Arduino by combining a camera/OpenCV and physical measurements from ultrasonic and single point lidar sensor.
spleeter-web - Self-hostable web app for isolating the vocal, accompaniment, bass, and drums of any song. Supports Spleeter, D3Net, Demucs, Tasnet, X-UMX. Built with React and Django.