首先声明,绝不否认 Immutable.js 的作用,以及如果语言自身支持 immutable 的好处。
本文想说的是,大部分时间我们需要的不是对数据的封装,而是一个快速修改嵌套结构数据并返回新对象的方法。
和 Immutable.js 借鉴自 FP 一样,这里要说的方案 (SEC,Semantic Editor Combinators) 也是借鉴在之前的大牛在 FP 中的思考。
function recurSolve(sum, coins) { | |
var coins = coins.slice().sort(function (a, b) { return b - a; }); | |
console.log(coins); | |
var go = function (sum, coins) { | |
if (sum === 0) return 1; | |
if (coins.length === 0 || sum < 0) return 0; | |
return go(sum - coins[0], coins) + go(sum, coins.slice(1)); | |
}; | |
return go(sum, coins); |
2016-12-06 03:29:15.940822 UTC | |
2016-12-06 03:29:15.963588 UTC | |
2016-12-06 03:29:15.969227 UTC | |
2016-12-06 03:29:15.969314 UTC | |
2016-12-06 11:29:15.971724 CST | |
2016-12-06 11:29:15.973697 CST | |
"Tue, 6 Dec 2016 03:29:15 UTC" | |
"Tue, 6 Dec 2016 11:29:15 CST" | |
"Tue, 6 Dec 2016 11:29:15 " | |
"Tue, 6 Dec 2016 03:29:15 UTC" |
2016-12-06 01:19:40.00319 UTC | |
2016-12-06 01:19:40.030091 UTC | |
2016-12-06 01:19:40.032538 UTC | |
2016-12-06 01:19:40.032581 UTC | |
2016-12-06 09:19:40.034801 CST | |
2016-12-06 09:19:40.035805 CST | |
"Tue, 6 Dec 2016 01:19:40 UTC" | |
"Tue, 6 Dec 2016 09:19:40 CST" | |
"Tue, 6 Dec 2016 09:19:40 " | |
"Tue, 6 Dec 2016 01:19:40 UTC" |
from PIL import Image | |
import sys, os | |
QR_DIR = '.' | |
try: | |
b = u'\u2588' | |
sys.stdout.write(b + '\r') | |
sys.stdout.flush() | |
except UnicodeEncodeError: | |
BLOCK = 'MM' |
Promise_Yaku = require 'yaku' | |
Promise_Bird = require 'bluebird' | |
Promise_Yaku.enableLongStackTrace() | |
Promise_Bird.longStackTraces() | |
test = (Promise) -> | |
bar = -> JSON.parse('edf{23}') | |
Promise.resolve() |
Promise_Yaku = require 'yaku' | |
Promise_Bird = require 'bluebird' | |
Promise_Yaku.enableLongStackTrace() | |
Promise_Bird.longStackTraces() | |
test = (Promise) -> | |
foo = -> Promise.reject "not catched" | |
Promise.resolve() |