Skip to content

Instantly share code, notes, and snippets.

const pipe = require('ramda/src/pipe')
const curry = require('ramda/src/curry')
const clampA = (min, max, value) => {
let newValue = Number(value)
newValue = Math.min(max, newValue)
newValue = Math.max(min, newValue)
return newValue
}
@joelnet
joelnet / keybase.md
Created September 9, 2019 20:36
keybase.md

Keybase proof

I hereby claim:

  • I am joelnet on github.
  • I am joelnet (https://keybase.io/joelnet) on keybase.
  • I have a public key ASBhE_5H8aJ_C-JIpSwxrk42nUN2c1I_f0Fe6jmlWphKhgo

To claim this, I am signing this object:

@joelnet
joelnet / es6-proxy-set.js
Created August 20, 2019 17:11
ES6 Proxy Set
/**
* Demo for https://twitter.com/joelnet/status/1163820524709076992
*/
class Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}
// Y Combinator
const Y = a => (b => b (b)) (b => a (c => b (b) (c)))
// isomorphic Church encoding/decoding
const Church = {
to: n => f => x => Array.from (Array (n)).reduce (f, x),
from: f => f (x => x + 1) (0)
}
const True = a => b => a
@joelnet
joelnet / boolean-expressions-ski.js
Last active August 5, 2019 08:42
Boolean Logic with the SKI Combinators
// S and K are primitive function combinators.
const S = a => b => c => a (c) (b (c))
const K = a => b => a
// Non-primitive combinators can be created with S and K.
const C = S (S (K (S (K (S)) (K))) (S)) (K (K))
const I = S (K) (K)
const KI = K (I)
const M = S (I) (I)
const R = S (K (S (K (S)) (K))) (S (K (S (I))) (K))
@joelnet
joelnet / once.sh
Created May 30, 2019 05:13
Shell script to execute a command once (while running)
#!/bin/bash
pidfile=$1
cmd=$2
if [ -z "$pidfile" ] || [ -z "$cmd" ]; then
echo "Usage: once <pidfile> \"<command>\""
exit 0
fi
const user = { id: 100, name: 'Howard Moon' }
const password = 'Password!'
const userWithPassword = {
...user,
id: 100,
...(password && { password })
}
userWithPassword //=> { id: 100, name: 'Howard Moon', password: 'Password!' }
const renamed = ({ ID, ...object }) => ({ id: ID, ...object })
const user = {
ID: 500,
name: "Bob Fossil"
}
renamed(user) //=> { id: 500, name: 'Bob Fossil' }
const setDefaults = ({ ...object}) => ({ quotes: [], ...object })
const user2 = {
id: 200,
name: 'Vince Noir'
}
const user4 = {
id: 400,
name: 'Bollo',
quotes: ["I've got a bad feeling about this..."]
}