duangsuse::Echo
int 类型的全部实例构成了一个集合(范畴),如果我们为其定义了一些函数,而且它们之间的复合运算满足结合律的话,我们就可以把这种函数叫做 int 类型范畴上的“态射”,态射讲的是范畴内部元素间的映射关系 // 将函数 g 与 f 复合,(g ∘ f)(x) = g(f(x)) Func<X, Z> Compose<X, Y, Z>(Func<Y, Z> g, Func<X, Y> f) => (X x) => g(f(x)); Func<int, int> f = (int x) => x * 2; …
提示一下,Haskell 那里有一些入门教程,简单地诠释了函数合成理念(是比喻 + 图解)
duangsuse::Echo
http://sassy.sourceforge.net/ 可以作为 Kasm 的参考... 不过看到说是占 Larceny 代码大部分我知道大概... 很难
曾经也写过 compose 函数,duangsuse 自豪的表示(大嘘)
当然啦,由于技术太菜,这是黑历史... 不仅概念错误还白白使得灵活无比的 JavaScript 变得如此死板
https://popf.rip/ (因为域名暂时没有地方用,据说很多搜索引擎根本不爬 rip/* ... 气死
当然啦,由于技术太菜,这是黑历史... 不仅概念错误还白白使得灵活无比的 JavaScript 变得如此死板
https://popf.rip/ (因为域名暂时没有地方用,据说很多搜索引擎根本不爬 rip/* ... 气死
// 用来创建混合函数的高阶函数
// @arg func: 被内联的函数
// @arg chain_fun: 目标函数
// @return 生成的混合函数闭包
function mixture(func, chain_fun) {
return function (arg1) {
return func(chain_fun(arg1))
}
}
// Curry for mixture
function mk_mixture(chain_fun) {
return function (func) {
return mixture(func, chain_fun)
}
}
// 用来添加 JSON 解码功能的高阶函数
json_decode_chain = mk_mixture(JSON.parse)
// 这玩意是这么玩的
function ruser(id, fun) {
$$.ajax({
method: 'POST',
url: uq_api.replace('xxxx', id || ''),
success: json_decode_chain(fun)
});
}
duangsuse::Echo
先试用 lex / re2c 和 Yacc
就是 re2c 版本的 HanPP 和 Yacc 版本的 +-*/ 计算器
HanPP 是一个 C-like 语言预处理器可以将 C 标识符们预处理为标准 C 允许的
但是,要无视掉这些而不能随意合法化处理
(随手抄的,但其实有差别,少了一个
^[A-Za-z_][A-Za-z0-9_]* 模式但是,要无视掉这些而不能随意合法化处理
BlockComment: '/*' .*? '*/'
LineComment: '//' ~[\r\n]*
StringLiteral: EncodingPrefix? '"' SCharSequence? '"'
SimpleEscapeSequence: '\\' ['"?abfnrtv\\]
EncodingPrefix
: 'u8'
| 'u'
| 'U'
| 'L'
;
(随手抄的,但其实有差别,少了一个
''整理一下,需要忽略的有:
注释,直接 skip 掉,包含行注释和块注释
字符串文本,需要侦测的只有
字符文本,需要侦测的只有
就是说什么别的词法规则都不需要考虑,现在正在编写 Lex 代码...
注释,直接 skip 掉,包含行注释和块注释
字符串文本,需要侦测的只有
\"字符文本,需要侦测的只有
\'就是说什么别的词法规则都不需要考虑,现在正在编写 Lex 代码...
duangsuse::Echo
https://t.me/dsuses/2484 Flex 找不到例子,而且少例子居然是错误的,无法编译通过,只得换 re2c,可能只有 JFlex 现在可以用
re2c 各种水土不服,体积还过得去但是使用起来非常不方便,会出一些问题... 还是 Lex 好啊
duangsuse::Echo
https://github.com/ice1000/Ruiko.kt 这里也有个组合子,F# 的看不懂于是看这个.. 大概能看 #PL #CS
改天我打算拿 Kotlin 重写一遍这个(没错,当自己的了)(跑)
毕竟 RegularPP 有时候可能用得到(类似
虽然之前说可以使用 LALR,但现在也是搞不清楚他们都有何关系...
毕竟 RegularPP 有时候可能用得到(类似
[s:string] (<$> | <+>)? )虽然之前说可以使用 LALR,但现在也是搞不清楚他们都有何关系...