/tmp/duangsuse.sock
23 subscribers
303 photos
3 videos
92 files
337 links
从 duangsuse::Echo (@dsuse) 跟进出来的分支,将在作者恢复原帐号访问的时候合并删除。
Download Telegram
#FP #JavaScript 代码的截图们(
fp.js 22K 的体积(673 行)、测试们写了 16K(536 行)
Done. 171 APIs tested, 290 passed / 0 failed in 0.093 secs.
手工的测试套件
Forwarded from Deleted Account
使用 FP.js 的话,也可以这么写:

const fp = require('./fp');

let makeCats = fp.stm.foldn.curry2(v => fp.fn.bound(v, 'concat').also(console.log)(
fp.stmaux.collect(fp.stm.joinMap(x => ['a' +x, 'b' +x, 'c' + x], v))
), ['a', 'b', 'c']);
Forwarded from Deleted Account
这里我们使用了 foldnjoinMap
foldn 是重复 N 次对某个数据执行指定操作,比如

foldn(x => x+10, 0, 10); // 100
foldn(s => s+'x', '', 100); // 'x'.repeat(100)

joinMap 是 map & join

joinMap(x => [x.toString(), x+1], [1,2,3]);
Forwarded from Deleted Account
毕竟 "aa" "ab" 这样的是通过不断重复 map 本身来做到的(不好意思... 怎么说呢,不好讲得太简洁,对不起...)
就利用 joinMap,来 join 所有这些项目,都叠加成本来 map(x => c + x, xs) (c = 'a', x='a'='z')... 'aa', ab'... 的样子
利用 joinMap 流可以做到计算
当然这里应该是惰性计算最好,因为 FP.js 本身的 原因 就 没有...
FP.js 还差一点用于惰性计算流的操作吧...
/tmp/duangsuse.sock
FP.js 还差一点用于惰性计算流的操作吧...
噢... 其实 join (concatN) 就可以用于 concat2... 所以说是完全可以全部惰性计算的
Deleted Account
使用 FP.js 的话,也可以这么写: const fp = require('./fp'); let makeCats = fp.stm.foldn.curry2(v => fp.fn.bound(v, 'concat').also(console.log)( fp.stmaux.collect(fp.stm.joinMap(x => ['a' +x, 'b' +x, 'c' + x], v)) ), ['a', 'b', 'c']);
const fp = require('./fp');
let { foldn, join, map: smap, joinMap } = fp.stm;
let stmb = fp.stmbase;
function makeCharCats(chars) {
return foldn.curry2(
xs => join([joinMap(x => smap(c => c+x,chars), xs)
, xs]), chars);
}
module.exports = makeCharCats;

FP.js 不对流函数在一次 _done() 之后再次调用依然返回 _done() 作保证,相关问题在查
别告诉他们这是我写的.... QAQ
我不甘心写重复的代码和 低性能重复判定,结果就成了这个 B 样子;也真的是无奈啊
为了写短也是拼了
Forwarded from Deleted Account
写哭了,我都没有想到 xs 还能变成这种情况,导致流函数不正确,害得我改了半天还加各种带 effect 的表达式....
Forwarded from Deleted Account
因为本来很多逻辑就是用带赋值副作用的表达式写的,现在才不得不改成这个样子,不用副作用的话要写一大堆重复的 if else 感觉很辣鸡
还好这是 joinN,如果要单独写 join2 join3 什么的复制一堆 if 根本不能看的好么
fp.js
21.3 KB
290 passed, 0 failed #JavaScript
fp.js
21.4 KB
#JavaScript 好像是 最终版本 不带 LL(1) parserc 的 FP.js 了(包含多种函数组合操作、惰性+break continue 流、一些 Monad、一些辅助函数 (