Charts are from different sources and thus colors are inconsistent, please carefully read the chart's legends.
Like this? Check React Native vs Flutter: https://gist.github.com/tkrotoff/93f5278a4e8df7e5f6928eff98684979

Charts are from different sources and thus colors are inconsistent, please carefully read the chart's legends.
Like this? Check React Native vs Flutter: https://gist.github.com/tkrotoff/93f5278a4e8df7e5f6928eff98684979
This is the final part of a series about Algebraic Effects and Handlers.
So we've come to the core topic. The reality is that we've already covered most of it in the previous parts. Especially, in the third part, where we saw delimited continuations at work.
// Copied from typescript playground - https://www.typescriptlang.org/play/ | |
class Vector { | |
constructor(public x: number, public y: number, public z: number) { } | |
static times(k: number, v: Vector) { | |
return new Vector(k * v.x, k * v.y, k * v.z); | |
} |
This is a demo of experimental work into ClojureScript parameter type inference.
The work is in a branch, and if you'd like to try out any of this yourself, you can start up a REPL based on the experimental branch using the following command, and play along at home:
clj -Srepro -Sdeps '{:deps {github-mfikes/gist-1e2341b48b882587500547f6ba19279d {:git/url "https://gist.github.com/mfikes/1e2341b48b882587500547f6ba19279d" :sha "55d6c6e9a1c4fc9b58fec74aef1af4aba57bad2a"}}}' -m cljs.main -co @compile-opts.edn -re node -r
To date, all ClojureScript inference "flows" in a certain direction, essentially from primitive values or type-hinted locals to their use sites. For example, consider this expression:
Hmm... I don't see any docs for 4.0 on https://webpack.js.org. I guess I'll just wing it.
All I need to do is npm i -D webpack@next
, right?
+ [email protected]
Why should programmers care about Monoids? Because Monoids are a common pattern that shows up over and over in programming. And when patterns show up, we can abstract them and leverage work we've done in the past. This allows us to quickly develop solutions on top of proven, stable code.
Add Commutative Property to a Monoid (Commutative Monoid) and you have something that can be executed in parallel. With the end of Moore's Law, parallelism is our only hope to increasing processing speeds.
What follows is what I've learned after studying Monoids. It is hardly complete, but hopefully will prove to be helpful as an introduction for others.
(ns specter-idea | |
(:require [com.rpl.specter :as specter :refer [setval ALL | |
NONE multi-path | |
selected? | |
pred | |
]])) | |
(def data ;; only x and y are allowed | |
[{:name "x" :rels ["x" "y"]} ;=> fine, keep as is | |
{:name "y" :rels ["x" "y" "z"]} ;=> keep only allowed rels: {:name "y" :rels ["x" "y"]} |
type | |
MaybeKind = enum Just, Nothing | |
Maybe[T] = object | |
case kind: MaybeKind | |
of Just: value: T | |
of Nothing: discard | |
EitherKind = enum Left, Right | |
Either[L, R] = object | |
case kind: EitherKind |
Quick comparison to the cljs.loader recently added to CLJS.
Things shadow-cljs
does for you:
enable-console-print!
is a config option, you do not need to call itloader/set-loaded!
will be injected for you as well