#TypeScript #lib #doc https://util.liuli.moe/@liuli-util/async/ 有一大堆
https://util.liuli.moe/@liuli-util/array/ 包含 swap, groupBy, segment(即 chunked), diffBy, uniqueBy 等处理函数 ,还有 arrayToMap(即 associate)
https://util.liuli.moe/@liuli-util/string/#StringValidator.isEmail 非常实际的一个值验证
https://util.liuli.moe/@liuli-util/dom/ 包含一些下载 ArrayBuffer 之类的处理,不过没有复制到剪贴板的
https://util.liuli.moe/@liuli-util/other/#EventEmitter EventTarget 一类对象实现
https://util.liuli.moe/@liuli-util/test/#countTime 这个就是
此外还有 tree 库,支持 treeEach 后序遍历树结构,treeToList (即 flatten , 还有 treeFilter 的变体)
concatMap, debounce, wait 等操作的 async 组合库https://util.liuli.moe/@liuli-util/array/ 包含 swap, groupBy, segment(即 chunked), diffBy, uniqueBy 等处理函数 ,还有 arrayToMap(即 associate)
https://util.liuli.moe/@liuli-util/string/#StringValidator.isEmail 非常实际的一个值验证
https://util.liuli.moe/@liuli-util/dom/ 包含一些下载 ArrayBuffer 之类的处理,不过没有复制到剪贴板的
https://util.liuli.moe/@liuli-util/other/#EventEmitter EventTarget 一类对象实现
https://util.liuli.moe/@liuli-util/test/#countTime 这个就是
measureTime { } ,要是能写成 Python timeit 的形式就好了此外还有 tree 库,支持 treeEach 后序遍历树结构,treeToList (即 flatten , 还有 treeFilter 的变体)
#web #js #typescript #Microsoft 最知名 Web 代码编辑控件 Ace(ajax.org Cloud9),Monaco(which powers VSCode) 二者之一, https://microsoft.github.io/monaco-editor/
js,ts,clojure (一个 #functional JVM 语言) 的示例都是 Conway's game of life (当然已经82岁的他已死于去年的新冠) 😋 #listing #ce #tools
https://t.me/mokeyjay_channel/1941 的 github1s.com 用 GH API 下载仓库,即可在用虚拟文件系统的 VSCode (fork ver.) 中打开
对喜爱自定编辑器和编程展示的人 必须了解一下
相关代码:
workbench/contrib/welcome/page/browser/welcomePage.ts#L75 下载
code/browser/workbench/workbench.ts#L403 打开文件夹
extensions/github1s/src/github1sfs.ts#L175 下载插件支持 Unicode
js,ts,clojure (一个 #functional JVM 语言) 的示例都是 Conway's game of life (当然已经82岁的他已死于去年的新冠) 😋 #listing #ce #tools
https://t.me/mokeyjay_channel/1941 的 github1s.com 用 GH API 下载仓库,即可在用虚拟文件系统的 VSCode (fork ver.) 中打开
对喜爱自定编辑器和编程展示的人 必须了解一下
相关代码:
workbench/contrib/welcome/page/browser/welcomePage.ts#L75 下载
code/browser/workbench/workbench.ts#L403 打开文件夹
extensions/github1s/src/github1sfs.ts#L175 下载插件支持 Unicode
Telegram
moke 的 日常分享、吐槽和动态
《给大佬们推荐个玩具,一秒钟打开在线 VS Code 阅读 GitHub 代码》
https://www.v2ex.com/t/752197
这小玩具用法很简单,比如你现在正在看 facebook/react 这个代码库的代码,觉得页面切来切去很麻烦,直接在浏览器地址栏 github.com 中的 github 后面,加上个 1s,然后回车就行了,所有的公开代码库都可以。
URL 从 https://github.com/facebook/react 变成了 https://github1s.com/facebook/react…
https://www.v2ex.com/t/752197
这小玩具用法很简单,比如你现在正在看 facebook/react 这个代码库的代码,觉得页面切来切去很麻烦,直接在浏览器地址栏 github.com 中的 github 后面,加上个 1s,然后回车就行了,所有的公开代码库都可以。
URL 从 https://github.com/facebook/react 变成了 https://github1s.com/facebook/react…
#gui #web #design #tools #TypeScript https://github.com/meetalva/alva
大概是 Electorn 的 form/ui 可视化设计工具,支持引入外部库(可能类似 HBuilderX 什么的 但界面好看许多)
大概是 Electorn 的 form/ui 可视化设计工具,支持引入外部库(可能类似 HBuilderX 什么的 但界面好看许多)
GitHub
GitHub - meetalva/alva: Create living prototypes with code components.
Create living prototypes with code components. Contribute to meetalva/alva development by creating an account on GitHub.
#rust #nodejs #TypeScript https://github.com/denoland/deno#deno 有两年的东西了, 看起来还挺好的,自带
deps 和 fmt 工具,便于安装GitHub
GitHub - denoland/deno: A modern runtime for JavaScript and TypeScript.
A modern runtime for JavaScript and TypeScript. Contribute to denoland/deno development by creating an account on GitHub.
#web #js #dalao #friend https://www.yunyoujun.cn/posts/make-an-avg-engine/
我觉得这个大佬比较亲切,或许以后会有机会接触? 🤔
动苏一贯喜欢风格清新、为人友善开放乐于表达的大佬
虽然看起来这个大佬还在发展阶段,相信我也有可以从中学习的地方
https://github.com/YunYouJun/advjs/blob/main/packages/parser/src/index.ts #TypeScript #parsing 这个大佬也有设计“基于 Markdown 的语言”的想法 😂
我觉得这个大佬比较亲切,或许以后会有机会接触? 🤔
动苏一贯喜欢风格清新、为人友善开放乐于表达的大佬
虽然看起来这个大佬还在发展阶段,相信我也有可以从中学习的地方
https://github.com/YunYouJun/advjs/blob/main/packages/parser/src/index.ts #TypeScript #parsing 这个大佬也有设计“基于 Markdown 的语言”的想法 😂
云游君的小站
ADV 游戏引擎计划
希望能成为一个有趣的人
🌝 好了, pointermove (准确是 touchmove) 的方法找到了……
https://seoi.net/penint/ #nsfw #js canvas 绘画 然后分段渐渐变化 女性勿入。
和之前的傅立叶 https://t.me/dsuse/15530 有异曲同工
https://seoi.net/penint/ #nsfw #js canvas 绘画 然后分段渐渐变化 女性勿入。
和之前的傅立叶 https://t.me/dsuse/15530 有异曲同工
Telegram
duangsuse::Echo
https://lab.xecades.xyz/Fourier/?img=5
感觉自己的智商严重需要重构了…… 看了下基本绘制结构我明白了,当时找 img= 参数引用的时候想当然查 (n + 1) 这个表达式,三次没找到后才在已发现 loadPageVar() 后明白编号到零基数组引数是 -1,明显没过脑子(或者记性不好/数性太差),就凭这?心理各种崩溃。
是用 setInterval (timer) 累积dt 更新的(缺点 dt 是常量)
generate(t) 基于 getSvgInfo() (load…
感觉自己的智商严重需要重构了…… 看了下基本绘制结构我明白了,当时找 img= 参数引用的时候想当然查 (n + 1) 这个表达式,三次没找到后才在已发现 loadPageVar() 后明白编号到零基数组引数是 -1,明显没过脑子(或者记性不好/数性太差),就凭这?心理各种崩溃。
是用 setInterval (timer) 累积dt 更新的(缺点 dt 是常量)
generate(t) 基于 getSvgInfo() (load…
duangsuse: #kotlin #typescript #plt
应该是kt的计划
我倒希望安卓写完web也能用(
go好像是tcp层的应用比较多,jvm都在http乃至data-json层
kotlinnative的gc模块体积应该降低了吧
总感觉不够取代C,尽管能充当FFI
反正 语言就是工具 好用就用 不好用就不用
kt敌手:groovy+jb家ide (不是
Go的协程讲真不如Kotlin设计的好
duangsuse:
和lua比呢
嗯对lua是多虚拟机协程,kt是编译期suspend fun
冰封说kt协程是基于cps(调用尾步骤编程)的,陈光剑的书也说ktcoro有 Continuation 的概念,可是我只懂typescript function* 的状态机化
说不定这俩就是一回事 俩名字,我只认 函数协程=闭包+指令位置保留
iseki
go天天吹协程,结果就拉成这个样子
坐等Kotlin解决下调用栈的问题(但估计解决不了)
duangsuse:
是啊有啥了不起的,lua openresty 不厉害吗
Science Yuan:
Cps是延续体传递,不是调用suspend时自动产生一个回调函数
然后调用栈就没了(渐渐远离调试
duangsuse:
当然不是,可也没更好的方式理解
毕竟不能说 1+2+yield 是函数
可es6里func*是不包含调用栈,只有闭包变量状态的;通过__awaiter 执行每个Generator对象
所以我觉得func*都可写成Iterator对象形式
iseki |
kotlin是通过ContinuationImpl执行的吧我记得
里面也是把层拆了,一层一层迭代来着,所以调用栈完全裂开
应该是kt的计划
我倒希望安卓写完web也能用(
go好像是tcp层的应用比较多,jvm都在http乃至data-json层
kotlinnative的gc模块体积应该降低了吧
总感觉不够取代C,尽管能充当FFI
反正 语言就是工具 好用就用 不好用就不用
kt敌手:groovy+jb家ide (不是
Go的协程讲真不如Kotlin设计的好
duangsuse:
和lua比呢
嗯对lua是多虚拟机协程,kt是编译期suspend fun
冰封说kt协程是基于cps(调用尾步骤编程)的,陈光剑的书也说ktcoro有 Continuation 的概念,可是我只懂typescript function* 的状态机化
说不定这俩就是一回事 俩名字,我只认 函数协程=闭包+指令位置保留
iseki
go天天吹协程,结果就拉成这个样子
坐等Kotlin解决下调用栈的问题(但估计解决不了)
duangsuse:
是啊有啥了不起的,lua openresty 不厉害吗
Science Yuan:
Cps是延续体传递,不是调用suspend时自动产生一个回调函数
然后调用栈就没了(渐渐远离调试
duangsuse:
当然不是,可也没更好的方式理解
毕竟不能说 1+2+yield 是函数
可es6里func*是不包含调用栈,只有闭包变量状态的;通过__awaiter 执行每个Generator对象
所以我觉得func*都可写成Iterator对象形式
iseki |
kotlin是通过ContinuationImpl执行的吧我记得
里面也是把层拆了,一层一层迭代来着,所以调用栈完全裂开
#typescript #typing Pick,Omit..
https://github.com/codehz/tjs/blob/%F0%9F%92%A5/tjs.d.ts#L60
噢原来是 unification .. T extends'x{infer rest} ' ... 不愧ts 强类型(其实术语是渐进类型 gradual
https://t.me/im_RORIRI/1647 tsc补齐游戏
https://github.com/sinclairzx81/typebox
https://github.com/codehz/tjs/blob/%F0%9F%92%A5/tjs.d.ts#L60
噢原来是 unification .. T extends'x{infer rest} ' ... 不愧ts 强类型(其实术语是渐进类型 gradual
https://t.me/im_RORIRI/1647 tsc补齐游戏
https://github.com/sinclairzx81/typebox
GitHub
tjs/tjs.d.ts at 💥 · codehz/tjs
TJS = tinyc compiler + quickjs. Contribute to codehz/tjs development by creating an account on GitHub.
duangsuse::Echo
#math #plt 公开课. 是仿造数学语言 https://github.com/DSLsofMath/DSLsofMath Introduction: Haskell, complex numbers, syntax, semantics, evaluation, approximation Basic concepts of analysis: sequences, limits, convergence, ... Types and mathematics: logic, quantifiers…
#typescript #TT 科普 TypeScript Type-Level Programming - lsdsjy的文章 - 知乎
https://zhuanlan.zhihu.com/p/54182787
TS是支持静态类型的JS。有 number,string 等值,也有常量作 literal type: number, .. "div" "body"..
这个表里[num,str] 是 num|str 的意思,因此若有 P={a:num,b:str} 则 P[keyof P] ,就是并集类型。类同{}类型,
let v:{[K in keyof T]:
子类型中 Int is Num, Num is Num 。is是 <= (never不大与任何类型)的意思,如何实现(=)呢?
这里也以infer语法来引入新的 typevar <U> ,算是某种意义上的“模式匹配”。在Haskl 对 ADT 的值作模式匹配;在这儿,我们对有着“代数类型 类型”的TS类型作模式匹配。
ADT 有普通的函数状 data constructor;Type 也有 type constructor,比如 Promise就是 T->Promise<T>的“类型函数”。它是 lit,list,dict 外第三种组合方法
然后是:
一开始的时候,我把 Coq induction 和数学归纳法搞混了。要用数学归纳法证明一个命题 P,你需要先证明一个基础步骤 P(0),然后在 P(n) 成立的情况下证明一个递推步骤 P(n+1)。但是在 induction 里面没有“基础步骤”和“递推步骤”之分,甚至 induction 产生的小目标的数量都不一定等于2。之后,我发现你可以把 induction 理解成数学归纳法的一种扩展。数学归纳法是作用在自然数上面的,而自然数是一种递归定义的归纳类型:
证明 len_app_plus,就对 s1 进行归纳,因为 String.length 在每次迭代中会消耗字符串的第一个字符。当你对 s1 进行归纳的时候,第二个情况会是 s1 = String char s,这就对应了 String.length 的定义
作者:陈乐群
链接:https://zhuanlan.zhihu.com/p/54164515 能够看出来写得很好,还带FAQ..可对外道入门逻辑式还不够唉
#rust #PLT 自由程续-阴阳谜题 手动脱call/cc解
Rust 阴阳谜题,及纯基于代码的分析与化简 - 知乎用户FGAvTw的文章 - 知乎
https://zhuanlan.zhihu.com/p/52249705
#Python 5行yield解 https://zhuanlan.zhihu.com/p/43207643
如何制造SCP018 - 圆角骑士魔理沙的文章 - 知乎 — 函数式尾调用优化
https://zhuanlan.zhihu.com/p/43163820
形式验证、依赖类型与动态类型 - 老废物千里冰封的文章 - 知乎 讲了 Nullable,静态长Vec,运行时报错的type兼容
https://zhuanlan.zhihu.com/p/50792280
https://zhuanlan.zhihu.com/p/54182787
TS是支持静态类型的JS。有 number,string 等值,也有常量作 literal type: number, .. "div" "body"..
<K extends keyof ElementMap> :R=Map[K] 是入门级子集定义吧!TS里{a:1,b:""} 的类型都是这种表。此外 {[K in keyof T]: } 可作转化这个表里[num,str] 是 num|str 的意思,因此若有 P={a:num,b:str} 则 P[keyof P] ,就是并集类型。类同{}类型,
{[K in KS]: }[KS] 给并集list 作转化let v: (() => void) extends Function的类型是true(lit type). 以下 is=extends
type T={a:num,b:str} //v:{a:Num|never} ,never=kotlin.Nothing |的不动(0值)点let v:{[K in keyof T]:
T[K] is number? T[K] : never }[keyof T] //收集并转换子类型中 Int is Num, Num is Num 。is是 <= (never不大与任何类型)的意思,如何实现(=)呢?
type Equal<T, U> = T is U ? (U is T ? true : false) : false //TS类型上无&& || !TS只支持 recursive mapped types,“递归函数”只能返回 dict。设想 T={xx: T|Promise<U>} ;把T内所有Promise.resolve 的函数类型是啥?
let v: Equal<Func, Function> // v: true //最后一遍:这是编译期可知
type Unwrapped<T> = { [K in keyof T]: T is Promise<infer U> ? U : Unwrapped<T> }
type Unwrap<T> = (wrapped: T) => Unwrapped<T> 这里也以infer语法来引入新的 typevar <U> ,算是某种意义上的“模式匹配”。在Haskl 对 ADT 的值作模式匹配;在这儿,我们对有着“代数类型 类型”的TS类型作模式匹配。
ADT 有普通的函数状 data constructor;Type 也有 type constructor,比如 Promise就是 T->Promise<T>的“类型函数”。它是 lit,list,dict 外第三种组合方法
type:
Nat<N> = Zero | Succ<N>
Zero = void; type Succ<N> = { pred: N } //0, +1
_1 = Succ<Zero>
_2 = Succ<_1>
IsNat<T> = T is Nat<infer N> ? true : false
q1 = IsNat<_2> // true
q2 = IsNat<number> // false
IsNatIsNat = IsNat<IsNat> //err: IsNat require param 然后是:
一开始的时候,我把 Coq induction 和数学归纳法搞混了。要用数学归纳法证明一个命题 P,你需要先证明一个基础步骤 P(0),然后在 P(n) 成立的情况下证明一个递推步骤 P(n+1)。但是在 induction 里面没有“基础步骤”和“递推步骤”之分,甚至 induction 产生的小目标的数量都不一定等于2。之后,我发现你可以把 induction 理解成数学归纳法的一种扩展。数学归纳法是作用在自然数上面的,而自然数是一种递归定义的归纳类型:
Inductive nat : Set :=要证明 len_repeat,我们就要对 n 进行归纳,因为 repeat 是定义在 n 上的一个递归
| O : nat
| S : nat -> nat.
Lemma len_repeat: --n(s rep k)=k*n(s)
forall s n,
String.length (repeat s n) = n * String.length s.
intros s n. induction n
(s rep 0)=0*n(s)—无归纳假设, 下递归定义,有.
(s rep N+1)=(N+1)*n(s)
Lemma len_app_plus: --n(s+s1)=n(s)+n(s1)
forall s1 s2,
String.length (s1 ++ s2) = String.length s1 + String.length s2.
证明 len_app_plus,就对 s1 进行归纳,因为 String.length 在每次迭代中会消耗字符串的第一个字符。当你对 s1 进行归纳的时候,第二个情况会是 s1 = String char s,这就对应了 String.length 的定义
作者:陈乐群
链接:https://zhuanlan.zhihu.com/p/54164515 能够看出来写得很好,还带FAQ..可对外道入门逻辑式还不够唉
#rust #PLT 自由程续-阴阳谜题 手动脱call/cc解
Rust 阴阳谜题,及纯基于代码的分析与化简 - 知乎用户FGAvTw的文章 - 知乎
https://zhuanlan.zhihu.com/p/52249705
#Python 5行yield解 https://zhuanlan.zhihu.com/p/43207643
如何制造SCP018 - 圆角骑士魔理沙的文章 - 知乎 — 函数式尾调用优化
https://zhuanlan.zhihu.com/p/43163820
形式验证、依赖类型与动态类型 - 老废物千里冰封的文章 - 知乎 讲了 Nullable,静态长Vec,运行时报错的type兼容
https://zhuanlan.zhihu.com/p/50792280
知乎专栏
TypeScript Type-Level Programming
TypeScript 有着足够强大(?)的类型系统,我们可以用它做类型层面的编程。首先来看如何在类型层面表达编程的几个要素:数据(广义地指可供编写者操作的所有实体)、操作变换数据的原语和控制流(广义,包括命令…