case classes that help use create new type of objects. For instance List
is a type constructory.
Generic types that take parameters such as —
trait Foo[T[_]] {
def bar(x: T[Int]): Unit
const Set = (lens, value, target) => lens.set(value, target) | |
const View = (lens, target) => lens.get(target) | |
const Over = (lens, func, target) => | |
Set(lens, func(View(lens, target), target), target) | |
const Compose = (...lenses) => { | |
lenses = lenses.reverse() | |
const itar = (i, target, value) => { | |
if (i === lenses.length) return value | |
return lenses[i].set(itar(i + 1, lenses[i].get(target), value), target) |
We started off brain storming almost a week prior to the event about various problems that might get people interested in them. The [Web Crawler](link to the problem statement) was one which was the right balance of complexity and fun and adhered to our philosophy of
A good game is easy to start with but tough to master.
We started off brain storming almost a week prior to the event about various problems that might get people interested in them. The [Web Crawler](link to the problem statement) was one which was the right balance of complexity and fun and adhered to our philosophy of
A good game is easy to start with but tough to master.
#!/usr/bin/env bash | |
git ls-files | \ | |
grep -E '.*(css|ts|graphql)$' | \ | |
xargs prettier --print-width 80 --single-quote --no-semi --no-bracket-spacing --write |
const R = require('ramda') | |
const O = require('observable-air') | |
const axios = require('axios') | |
const { JSDOM } = require('jsdom') | |
const makeRequest = url => | |
axios.get(url).then(response => response.data).then(html => new JSDOM(html)) | |
const fetchDOM = url => O.multicast(O.fromPromise(() => makeRequest(url))) | |
const fromArray = R.compose(O.fromArray, Array.from) | |
const findE = R.curry((sel, dom) => |
#!/usr/bin/env bash | |
git fetch origin | |
commitID=`git log origin/master..HEAD --oneline --pretty=format:"%h" | tail -1` | |
git rebase --onto origin/master $commitID~1 -i --preserve-merges --autosquash |
const flatMapLatest = (fn, stream) => | |
stream.publish(s => s.flatMap(v => fn(v).takeUntil(s))); | |
const flatMapLatest = (fn, stream, resultSelector) => stream.publish(s => { | |
return s.flatMap(v => fn(v).map(v2 => resultSelector(v, v2)).takeUntil(s)); | |
}); | |
const delay = (source, delay) => source.flatMap(e => Rx.Observable.timer(delay).mapTo(e)) | |
const debounceTime = (time, stream) => flatMapLatest(v => of(v).delay(time), stream); |
made with esnextbin
made with esnextbin