- 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)