- Built-in
- User defined
let makeUser = \(user : Text) ->
let home = "/home/${user}"
let privateKey = "${home}/.ssh/id_ed25519"
let makeUser = \(user : Text) ->
let home = "/home/${user}"
let privateKey = "${home}/.ssh/id_ed25519"
const range = (start: number, end: number) => | |
Array.from({ length: end - start + 1 }, (v, k) => k + start); | |
/* Monad */ | |
const ret = <T>(x: T): T[] => [x]; | |
const bind = <T>(xs: T[], f: (v: T) => T[]): T[] => xs.map(f).flat(); | |
const fail = <T>(_: T): T[] => []; | |
/* Knight problem */ | |
type KnightPos = [number, number]; |
// user module | |
const receive = (_user, sender, message) => { | |
console.log(`${new Date().toLocaleString()} [${sender}]: ${message}`); | |
}; | |
// chat room module | |
const createChatRoom = (users = []) => ({ | |
users | |
}); |
class ChatRoom { | |
constructor(users = []) { | |
this.users = users; | |
} | |
addUser(user) { | |
this.users.push(user); | |
} | |
sendMessage(user, message) { |
const execute = (command, ...args) => command(...args); | |
function PlaceOrderCommand(order, id) { | |
return orders => { | |
const result = [...orders, { id }]; | |
console.log(`You have successfully ordered ${order} (${id})`); | |
return { success: true, result }; | |
}; | |
} |
(ns number-puzzles.imbaru | |
(:refer-clojure :exclude [==]) ;; Prevent ns conflict | |
(:require [clojure.core.logic :refer :all])) | |
(def answers (run* [q] | |
(fresh [r1 r2 r3 r4 | |
r5 r6 r7 r8 | |
r9 r10 r11 r12 | |
r13 r14 r15 r16] |
UI should be an afterthought
jest.mock
is the only "unobtrusive" way to replace dependencies.Visual documentation
Faster design delivery (than having component embedded into the page)