An overview of algebraic laws from the perspective of a functional programmer. I've used a Haskell-esque syntax for the definitions of the laws and examples.
name | definition | example |
---|---|---|
Identity [¹][] | f x = x |
add 0 42 = 42 |
// ============================================================================ | |
// PACKAGE VERSIONS (2025-07-30) | |
// ============================================================================ | |
// | |
// Dependencies: | |
// - effect: 3.17.3 | |
// - @effect/platform: 0.90.0 | |
// - @effect/rpc: 0.68.0 | |
// | |
// ============================================================================ |
Note: This gist may be outdated, thanks to all contributors in comments.
adb
is the Android CLI tool with which you can interact with your android device, from your PC
You must enable developer mode (tap 7 times on the build version in parameters) and install adb on your PC.
Don't hesitate to read comments, there is useful tips, thanks guys for this !
-- Create our directories table. | |
CREATE TABLE `directories` ( | |
`id` int(11) NOT NULL AUTO_INCREMENT, | |
`name` varchar(255) DEFAULT NULL, | |
`lft` int(11) NOT NULL, | |
`rgt` int(11) NOT NULL, | |
PRIMARY KEY (`id`), | |
UNIQUE KEY `directory_lft` (`lft`), | |
UNIQUE KEY `directory_rgt` (`rgt`) | |
) ENGINE=InnoDB DEFAULT CHARSET=utf8; |
Write a function of type String -> Integer
. The input may or may not be a
valid JSON string. If it is valid, the resulting JavaScript value is expected
to be an object, but may not be. If it is an object, it is expected to have a
foo
property whose value is expected to be an object, but may not be. This
value is expected to have a bar
property which is expected to be an object
with a baz
property whose value is expected to be an array of strings.
Each of these strings is expected to be a hex representation of an integer
(e.g. 0xFF
). If every element of the array meets this expectation, the
const daggy = require('daggy') | |
const Task = require('data.task') | |
const _ = require('lodash') | |
const kleisli_comp = (f, g) => x => f(x).chain(g) | |
const compose = (f, g) => x => f(g(x)) | |
const id = x => x | |
//=============FREE============= | |
const Free = daggy.taggedSum({Impure: ['x', 'f'], Pure: ['x']}) | |
const {Impure, Pure} = Free |
const daggy = require('daggy') | |
const compose = (f, g) => x => f(g(x)) | |
const id = x => x | |
//===============Define Coyoneda========= | |
const Coyoneda = daggy.tagged('x', 'f') | |
Coyoneda.prototype.map = function(f) { | |
return Coyoneda(this.x, compose(f, this.f)) | |
} |
const daggy = require('daggy') | |
const compose = (f, g) => x => f(g(x)) | |
const id = x => x | |
const kleisli_comp = (f, g) => x => f(x).chain(g) | |
//=============FREE============= | |
const Free = daggy.taggedSum({Impure: ['x', 'f'], Pure: ['x']}) | |
const {Impure, Pure} = Free |
const I = x => x | |
const K = x => y => x | |
const A = f => x => f (x) | |
const T = x => f => f (x) | |
const W = f => x => f (x) (x) | |
const C = f => y => x => f (x) (y) | |
const B = f => g => x => f (g (x)) | |
const S = f => g => x => f (x) (g (x)) | |
const S_ = f => g => x => f (g (x)) (x) | |
const S2 = f => g => h => x => f (g (x)) (h (x)) |