#py 类似 #ts 的可选类型,并用上类型信息作优化。说是用在了 instagram web server 上,性能提升了 3.7%.
https://tttttt.me/swiminthedream/1319
https://tttttt.me/swiminthedream/1319
Telegram
看看就好的频道
给动态类型的代码加上静态类型,一种方法是 gradual typing,在 typed code 和 untyped code 之间加上运行时检查来保证类型的可靠性 (soundness)。面对运行时检查这样一笔不小的开销,在工业界更常见的思路是 optional typing,完全不做运行时检查,例如 TypeScript。至于说在代码实际跑的时候碰到了一个和声明的类型不同的值,那就随它去爆炸吧。
https://programming-journal.org/2023/7/2/
上面这篇 paper,介绍了…
https://programming-journal.org/2023/7/2/
上面这篇 paper,介绍了…
#learn #ts #kt 子类型 vs 组合, in/out参数
https://tttttt.me/dsuses/5194
总之,trait类型的交集 还是需要in/out,这不是子类型带来的麻烦。
a=append(a,x) 与 copy(a,src) 类型上是一样的,前者也并不能“把a修正为更窄接口”。 Go必须把list+=单项 写出来, 因为缺少型变
func main() {
var src []interface{} = []any{1, 2, 3, 4, 5}
var dst []int = make([]int, len(src))
copy(src,dst) //错:没有共同接口
func copy[T any](dst []T, src []T) {
for i := range dst {
dst[i] = src[i]
}
}
更多关于 #rust #go #plt 的原理
https://tttttt.me/kotlin_cn/74484
https://rustmagazine.github.io/rust_magazine_2021/chapter_4/ant_trait.html#向上转型upcast #recommend
https://rustmagazine.github.io/rust_magazine_2021/chapter_10/lisp-in-rust.html
https://tttttt.me/dsuses/5194
总之,trait类型的交集 还是需要in/out,这不是子类型带来的麻烦。
a=append(a,x) 与 copy(a,src) 类型上是一样的,前者也并不能“把a修正为更窄接口”。 Go必须把list+=单项 写出来, 因为缺少型变
func main() {
var src []interface{} = []any{1, 2, 3, 4, 5}
var dst []int = make([]int, len(src))
copy(src,dst) //错:没有共同接口
func copy[T any](dst []T, src []T) {
for i := range dst {
dst[i] = src[i]
}
}
更多关于 #rust #go #plt 的原理
https://tttttt.me/kotlin_cn/74484
https://rustmagazine.github.io/rust_magazine_2021/chapter_4/ant_trait.html#向上转型upcast #recommend
https://rustmagazine.github.io/rust_magazine_2021/chapter_10/lisp-in-rust.html
Telegram
duangsues.is_a? SaltedFish
#kt 直接把 out=get, in=set 🌚https://t.me/kotlin_cn/74360
Go 只有[]T 和 func(T)R 的别名,不能自定义类型参数的inout性 ,AI绕来绕去没答到🌚
Go,Rust 都是struct-trait,Any是空接口 ,type Option(type T) intrf{} T应该是自动的
Go 的slice,channel 都不支持out性 ,都没有子类型,必须写明trait 接口
比如子类型 P=List
P<T>.fill(with:…
Go 只有[]T 和 func(T)R 的别名,不能自定义类型参数的inout性 ,AI绕来绕去没答到🌚
Go,Rust 都是struct-trait,Any是空接口 ,type Option(type T) intrf{} T应该是自动的
Go 的slice,channel 都不支持out性 ,都没有子类型,必须写明trait 接口
比如子类型 P=List
P<T>.fill(with:…
duangsuse::Echo
感觉虽然有些收获,也都是没啥意思的问题…… 面试呢,或许对我这种数学渣就都做不到的吧? #statement 我讨厌这种AI都能写的问题,这些”深刻思考“有什么价值呢? 总是一些算法,让编程变成一种不快乐的任务、变成帮出题人自问自答的”寻宝“ 这些出题人又有多聪明呢? 大众都在润色70年前,世上还没电脑时就有的问题, 而小众又能成什么气候,又如何让他们的沧海遗珠给时兴编程带来价值呢? 如果用《算法图解》那种小说口吻去讲,做一些有弹性的科普视频,倒是有娱乐价值;如果写代码只是为了复制粘贴「能用的东西…
举例, #ts 上有”交并集类型“ (有人认为 hs, Rust 没有子类型所以不存在集合论的,确实如此但 in-out 形变是Racket子语言里也有的,我找不到原文但TRack 是有)
(我一点也不羡慕没有重载和this模块等多态技术的圆括号 😅, 模型的缺失是拿宏手动兼容 a.b.c 所弥补不了的, 就像 F# 的 |> 比不上 xx.let{}, kt 的元组 destruct 比不上 ES6 let[x,y]=P, ES6的解构又不如 Prolog 的 unify [x,1]=[2,y]...
观摩王垠《别再欺负我们读书少》:
- id(itself) “同时”是int->int和bool->bool,而不是表示它“有时”是int->int,而另外的时候是bool->bool。
- 所以,id(1)一定是int。如果你输入id(True),它推导出的一定是bool。
- 否则,调用id(1)会报错,因为id的类型有可能是bool->bool,不能接受int的输入。调用id(True)也会报错,左右不是人。
但我习惯拿 成员交=union ,成员并=insect ,绝口不提“同时”“有时” 这种抽象说法乃至术语
- id “必须”是int->int, bool->bool ,而不是“可为” int->int | bool->bool。 when(x) { is Int, is Str } 这种情况才是“x可为二者”
- 否则,调用id(1),id(True)都会报错,因为id的类型有可能是bool->bool,不能接受int的输入,或者反之。
严谨性绝对是次于创造力的,况且,含糊的说法对同时使用和实现不利。
虽然这些都是小小的细节,但每个细节都注重可读性,随着设计的步进,最终会形成巨大的差异。即便都是用AI,我的实现也会有很多不同
(我一点也不羡慕没有重载和this模块等多态技术的圆括号 😅, 模型的缺失是拿宏手动兼容 a.b.c 所弥补不了的, 就像 F# 的 |> 比不上 xx.let{}, kt 的元组 destruct 比不上 ES6 let[x,y]=P, ES6的解构又不如 Prolog 的 unify [x,1]=[2,y]...
观摩王垠《别再欺负我们读书少》:
- int -> int | bool ->bool
表示的确实是一个intersection type(^),而不是union type(|)- id(itself) “同时”是int->int和bool->bool,而不是表示它“有时”是int->int,而另外的时候是bool->bool。
- 所以,id(1)一定是int。如果你输入id(True),它推导出的一定是bool。
- 否则,调用id(1)会报错,因为id的类型有可能是bool->bool,不能接受int的输入。调用id(True)也会报错,左右不是人。
但我习惯拿 成员交=union ,成员并=insect ,绝口不提“同时”“有时” 这种抽象说法乃至术语
- int -> int | bool ->bool
表示的确实是一个重载,而不是Either- id “必须”是int->int, bool->bool ,而不是“可为” int->int | bool->bool。 when(x) { is Int, is Str } 这种情况才是“x可为二者”
- 否则,调用id(1),id(True)都会报错,因为id的类型有可能是bool->bool,不能接受int的输入,或者反之。
严谨性绝对是次于创造力的,况且,含糊的说法对同时使用和实现不利。
虽然这些都是小小的细节,但每个细节都注重可读性,随着设计的步进,最终会形成巨大的差异。即便都是用AI,我的实现也会有很多不同
Telegram
duangsuse::Echo
#learn #ts #kt 子类型 vs 组合, in/out参数
https://t.me/dsuses/5194
总之,trait类型的交集 还是需要in/out,这不是子类型带来的麻烦。
a=append(a,x) 与 copy(a,src) 类型上是一样的,前者也并不能“把a修正为更窄接口”。 Go必须把list+=单项 写出来, 因为缺少型变
func main() {
var src []interface{} = []any{1, 2, 3, 4, 5}
var dst []int…
https://t.me/dsuses/5194
总之,trait类型的交集 还是需要in/out,这不是子类型带来的麻烦。
a=append(a,x) 与 copy(a,src) 类型上是一样的,前者也并不能“把a修正为更窄接口”。 Go必须把list+=单项 写出来, 因为缺少型变
func main() {
var src []interface{} = []any{1, 2, 3, 4, 5}
var dst []int…
duangsuse::Echo
#algorithm #FP 版的 list 累加法杨辉三角 ps. 也可以用DP和代数式推算 P2:垃圾 itertools #py #code from itertools import accumulate,islice,chain fib=iself(2,lambda x0,x1: chain([1,1], (x+y for x,y in zip(x0,x1)) )) def 杨辉(): #pascal_triangle row = [1] while True: yield…
#sql #ts Prolog 牛逼! 正确的关系式搜索+ 同时实现 parse 和 toStr 😱
#zhihu 灵感来源
5行就能实现一个str”模板“,写法相对匮乏但功能丰富,吊打 Haskell 的 TextCombinator 🥺
❤️ https://eu.swi-prolog.org/pldoc/man?section=basics
这里还有个Lisp实现
#zhihu 灵感来源
e(E) -->{E = [I,Ea,Eb]}, %重写规则, 'eX'为优先级
%利用 链|e1(E) 括住内"*/"
e1(Ea), op(I,"+-"), e(Eb); e1(E).
e1(E) -->{E = [I,Ea,Eb]},
e2(Ea), op(I," */"), e1(Eb); e2(E).
e2(X) --> number(X); ("(", e(X), ")"), !. % 单项值/字面
op(I,W) --> [C], { nth0(I0,W,C),nth0(I0,"加减乘除",I) }.
5行就能实现一个str”模板“,写法相对匮乏但功能丰富,吊打 Haskell 的 TextCombinator 🥺
❤️ https://eu.swi-prolog.org/pldoc/man?section=basics
这里还有个Lisp实现
#ts #csharp 😱C++化,来临力 https://zhuanlan.zhihu.com/p/648312212
#py langchain 支持了 pipe
另外,基于代码解释器,
#py langchain 支持了 pipe
# fib.only{%2==0}.firsts{<40_00000}.Sum比如(我的天啊, Javaer 怎么入侵 Python 了!我以为AIGC潮能打醒它们的,没想到恰恰相反? 😱
sum(fib() | where(lambda x: x % 2 == 0) | take_while(lambda x: x < 4000000))
os.environ['OPENAI_API_KEY'] = ''
from langchain.prompts import (
ChatPromptTemplate,
HumanMessagePromptTemplate,
)
from langchain.schema import (
HumanMessage, output_parser as OutP
)
from langchain.chains import LLMChain
prompt = ChatPromptTemplate.from_messages([
HumanMessagePromptTemplate.from_template("Show me the HEX code of color {color_name}")
])
(prompt|ChatOpenAI()|StrOutputParser() ).invoke({"color_name": "RED"})
另外,基于代码解释器,
model.bind(fns )|JsonOutputFunctionsParser
可以让AI调用一段描述文档,并获取返回值知乎专栏
给 .NET 带来常量泛型
众所周知,.NET 平台上的各个语言都会编译到公共中间语言 CIL (Common Intermediate Language,简称 CIL,或者大家熟知的 IL),然后再经由 JIT 或者 AOT 编译器,从 CIL 编译到机器码之后,执行编译后的机器码。 …
科技圈🎗在花频道📮
华为Harmony OS 4.0版本将于8月正式发布 来源:新浪微博 投稿人:Arkansas State Police 投稿:@ZaiHuaBot 频道:@TestFlightCN
#huawei #js #ts 最近很火的 ArkUI 跨平台版 (UI语言doc )
商店示例:
https://gitee.com/arkui-x/samples/blob/master/Shopping/entry/src/main/ets/model/homeModel.ets
ArkTS和Java没有相互调用的能力,需要ArkTS与C++交互,C++再与Java交互(剪贴板、文件,.),反之亦然。
看起来和方舟无关,也不需要Dart那样的虚拟机或 jvm ,基于 Node-API 但自己做绘制? 还是自己又弄了DOM?
但是 puerts (js,lua) 可以.. 虽然都不如
好像也没有很火,在文件名都需要审核的 Gitee 上以 Apache2 开源,想必也没什么正经人看.. 😓
btw. 人家还讲了 状态注入, MVVM
反正我只认同
商店示例:
https://gitee.com/arkui-x/samples/blob/master/Shopping/entry/src/main/ets/model/homeModel.ets
ArkTS和Java没有相互调用的能力,需要ArkTS与C++交互,C++再与Java交互(剪贴板、文件,.),反之亦然。
看起来和方舟无关,也不需要Dart那样的虚拟机或 jvm ,基于 Node-API 但自己做绘制? 还是自己又弄了DOM?
但是 puerts (js,lua) 可以.. 虽然都不如
import cffi
直接解析.h头文件 强 😅好像也没有很火,在文件名都需要审核的 Gitee 上以 Apache2 开源,想必也没什么正经人看.. 😓
btw. 人家还讲了 状态注入, MVVM
反正我只认同
type UI=({dataVars})=>HTMLvar
Gitee
ArkUI-X/docs
ArkUI-X documentation | ArkUI-X开发者文档
#py 周刊
#ts Mypy: 1.5
Mypy 是 Python 的静态类型检查工具,1.5 版本主要功能有: @overrride 、更灵活的 TypedDict(字面创建的 dataclass) 创建和更新、可显示错误代码的文档、改进了泛型函数的类型推断、
#ai 整理和预处理pdf文件,让GPT访问
- 杀死 ProcessPoolExecutor
Python 自身不适合处理 CPU 密集型任务,文章中项目原本使用进程池来规避 GIL 问题,后使用线程、C++ 扩展,内存使用量减少 50%,CPU 使用量减少约 20%
- 观点: Py 不适合编写100行以上的软件,因为弱类型、重构难和性能
- 上下文管理器
骗你的。Java式接口让人难以评价:
btw. 你可以用 %%showast 和 astor 查看算式的树状图和代码形式
- viztracer 提供了 DevTools profile 页
#datas 绘制多个直方图、折线图表
- #tex 对比"星星旗帜"的海龟画图 Python 来学习 PostScript
PostScript 广泛用于打印机、出版和图形设备。文章将可被
#java 如何编写简单的C模块,篡改 CPython 解释器的数字
导入一个模块后,如何让 print(8) 会打印出 9?只需要拿到整数对象池,交换两个大整数引用的值
在 py 文件中写上一句,执行这个文件,幕后都发生了什么呢?文章使用了 readelf 、strace 、ldd 、debugfs 、/proc 、ltrace 、dd 和 stat 等工具,详细解释了脚本被执行的过程。
主要涉及操作系统,GNU libc 相关的内容
推荐阅读
—
#js htmx: 强化的 form table dialog,交互式界面扩展
#php 🤯 Slack: 我们认真觉得PHP好用
#ts Mypy: 1.5
Mypy 是 Python 的静态类型检查工具,1.5 版本主要功能有: @overrride 、更灵活的 TypedDict(字面创建的 dataclass) 创建和更新、可显示错误代码的文档、改进了泛型函数的类型推断、
__slots__
的优化、步进 Python 3.12#ai 整理和预处理pdf文件,让GPT访问
from bot import Retriever, llm_reply#backend 用 numpy, 线程池 优化数学区间求和函数
- 杀死 ProcessPoolExecutor
Python 自身不适合处理 CPU 密集型任务,文章中项目原本使用进程池来规避 GIL 问题,后使用线程、C++ 扩展,内存使用量减少 50%,CPU 使用量减少约 20%
- 观点: Py 不适合编写100行以上的软件,因为弱类型、重构难和性能
from contextlib import suppress的妙用
with suppress(FileNotFoundError):
- 上下文管理器
from tenacity import Retrying, stop_after_attempt #AbortSignal:
for attempt in Retrying(3):
with attempt
骗你的。Java式接口让人难以评价:
for i in Retrying(stop=stop_after_attempt(3)):#visualize #plt LibCST: 遍历Python3代码树
with i:
print(f"🧨炸弹{'真的'*i.retry_state.attempt_number} 要炸了!")
try: time.sleep(2) # 按Ctrl+C !
except:pass
else: raise Exception("💥!")
btw. 你可以用 %%showast 和 astor 查看算式的树状图和代码形式
- viztracer 提供了 DevTools profile 页
#datas 绘制多个直方图、折线图表
- #tex 对比"星星旗帜"的海龟画图 Python 来学习 PostScript
PostScript 广泛用于打印机、出版和图形设备。文章将可被
convert -page 720x480 flag.ps flag.png
的程序,直译成对接到 matplotlib 的 Python 代码#java 如何编写简单的C模块,篡改 CPython 解释器的数字
导入一个模块后,如何让 print(8) 会打印出 9?只需要拿到整数对象池,交换两个大整数引用的值
swap( (PyLongObject*)PyLong_FromLong(8)->ob_digit[0] , (9) )#os #linux 在 execvp(["python3", “Hello World.py”]) 时,会发生什么?
在 py 文件中写上一句,执行这个文件,幕后都发生了什么呢?文章使用了 readelf 、strace 、ldd 、debugfs 、/proc 、ltrace 、dd 和 stat 等工具,详细解释了脚本被执行的过程。
主要涉及操作系统,GNU libc 相关的内容
推荐阅读
—
#js htmx: 强化的 form table dialog,交互式界面扩展
<form hx-put="/contact/1" hx-target="this" hx-swap="outerHTML">
#php 🤯 Slack: 我们认真觉得PHP好用
Telegram
Newlearnerの自留地
#Python潮流周刊 #Newsletter
Python 潮流周刊#15:如何分析 FastAPI 异步请求的性能?
🦄文章&教程
- 如何分析 FastAPI 异步请求的性能?
- 利用 FastAPI 的后台任务:增强性能和响应能力
- 使用 Python 创建直方图
- Mypy 1.5 发布了
- 在 Linux 上运行 Python 的“Hello World”脚本时,会发生什么?
- 通过对比 Python 来学习 PostScript
- Python 中不那么随意的性能优化
-…
Python 潮流周刊#15:如何分析 FastAPI 异步请求的性能?
🦄文章&教程
- 如何分析 FastAPI 异步请求的性能?
- 利用 FastAPI 的后台任务:增强性能和响应能力
- 使用 Python 创建直方图
- Mypy 1.5 发布了
- 在 Linux 上运行 Python 的“Hello World”脚本时,会发生什么?
- 通过对比 Python 来学习 PostScript
- Python 中不那么随意的性能优化
-…
duangsuse::Echo
(框架层的) 技术讨论,是否足够“对事不对人”
#js #design 那我也不算讨厌 Vue (虽没有React那样奇怪, 但毕竟XML是不可触碰之物), 我来黑一下 Vue yyx 对一个“不知天高地厚”的年轻朋友的反黑
如何评价前端框架Yox? - 尤雨溪的回答 - 知乎
<template v-if="name">
你好,{{ name }}
..v-else
请登录
</template>
另外EQ还支持 div$css 的 _mix,即类的继承;如果说id是动态的,用wKV(ES6)就更方便了
- 怼黑子有什么用,不如多写几个单页玩玩, 招牌是干嘛的?不如把代码放首页,提升一下Web圈的创作欲
- 我就要怼天怼地,尤其是对我设计有明显启发性的老东西, 任何的僵化都不能放过,你留着它过年,重构甚至跟风都是一定会炸的,功能越加越难用,还妨碍别人按时睡觉
- 别人的成熟设计,里面的取舍一定是受领域的刻板印象窄化过的,也是被 CRUD20年的市场 Boys 虚荣地夸过的, 所以我只从最终用户的角度看框架 ,编程领域 我不关心,我圈外,靠内心的语言思考问题就够了。
(e.g. 我可以把Vue3 的ref 等 anti-feature 都解读成和 #ts 等额外特性有关,但为了类型损害程序表达的可读性,仍然是蠢做法;因为正确的框架,该靠明确性,而非机械正确,实现治未病
- JQ和Svelte都觉得自己“代码少少功能多多”,但不请XML这一尊滚出Web,不善用CSS那睥睨native的先天丽质,思路如诗-ref(),是会被牛得逼成渣的
如何评价前端框架Yox? - 尤雨溪的回答 - 知乎
<template v-if="name">
你好,{{ name }}
..v-else
请登录
</template>
{{ name ? `你好, ${name}` : `请登录` }}单举这个例子,有点鸡贼,但对EQ刚刚好,因为它的数据模型继承自我打草稿的半OOP语言,可谓高射炮打蚊子
p(<div :id="id" :class="class || 'default'">
when(name, {$Y: html`你好 ${name}`, $N: `请登录` })
)
p(
wKV({ if: name }), html`你好 ${name}`
)
另外EQ还支持 div$css 的 _mix,即类的继承;如果说id是动态的,用wKV(ES6)就更方便了
div__id(wSty`${class||'default'}`)省下的行数可以拿来设计几个颜色主题啊 😄
$navbar(wKV({id,class}))
ee.main=({todos=[], tag='good'})=>lets(
todos(a=> a.only({tag}) ),
//EQ不需要靠编译和'signal'得出 todos,tag 变更时要做什么,我们不和DOM抢地盘
x=>$todo()
)
- 怼黑子有什么用,不如多写几个单页玩玩, 招牌是干嘛的?不如把代码放首页,提升一下Web圈的创作欲
- 我就要怼天怼地,尤其是对我设计有明显启发性的老东西, 任何的僵化都不能放过,你留着它过年,重构甚至跟风都是一定会炸的,功能越加越难用,还妨碍别人按时睡觉
- 别人的成熟设计,里面的取舍一定是受领域的刻板印象窄化过的,也是被 CRUD20年的市场 Boys 虚荣地夸过的, 所以我只从最终用户的角度看框架 ,编程领域 我不关心,我圈外,靠内心的语言思考问题就够了。
(e.g. 我可以把Vue3 的ref 等 anti-feature 都解读成和 #ts 等额外特性有关,但为了类型损害程序表达的可读性,仍然是蠢做法;因为正确的框架,该靠明确性,而非机械正确,实现治未病
- JQ和Svelte都觉得自己“代码少少功能多多”,但不请XML这一尊滚出Web,不善用CSS那睥睨native的先天丽质,思路如诗-ref(),是会被牛得逼成渣的
Zhihu
如何评价前端框架Yox? - 知乎
我个人对于这类造轮子的年轻朋友还是想以鼓励为主,毕竟 Vue 当年也是不知天高地厚的状态下慢慢弄出来的…
duangsuse::Echo
#py #math 《优雅不是奢侈品》 “如何才能让编程者们相信,简单性和清晰性——简而言之:数学家所说的“优雅”——不是可有可无的奢侈品,而是决定成功与失败的关键因素?” ― Edsger W. Dijkstra,“计算机著作精选:个人观点”,第 347 页。 简单明了的代码就是优雅的代码。这些都是代码中非常理想的属性。Dijkstra 又补充道: “……在软件不可靠性的情况下,最大的成本因素是复杂。 一个可靠的(因此简单的)程序的开发和使用成本,比一个(复杂的因此)不可靠的程序要廉价。” 人们…
#py 周刊
- 《优雅不是奢侈品》
- nogil 最新情报
- #web Django ORM 最佳实践
- Django 自带的JWT 路径验证和登录页
- #ts 阮一峰 入门, 纯JS入门
- #linux #rust Nush: 不是 Powershell
- #js npm依赖图
- #ai #tool realsizer4x 超分辨
- #rust
- #ui Toga: 跨平台的 TkGUI
- #ml Viberary: 开源书籍检索引擎
- Khan 为何从Py2移植到 kt,go
- #parallel 用asyncio分享查询,防止缓存失效时并发卡爆
- #plt Rust vs Idris,Zig: 渐强类型的解药 #1
单进程 cron:
- 奇怪的for赋值, 魔术方法
实现 lazy load:
⭐️
#code 修改语法
#ts
#1为什么静态类型的C,Go,C++ 不是弱检查 就是太复杂
代码练习: 不需要
int[10] 的实质、 #Kt 类型推导的原理
- 《优雅不是奢侈品》
- nogil 最新情报
- #web Django ORM 最佳实践
- Django 自带的JWT 路径验证和登录页
- #ts 阮一峰 入门, 纯JS入门
- #linux #rust Nush: 不是 Powershell
- #js npm依赖图
- #ai #tool realsizer4x 超分辨
- #rust
pixi add cowpy
强化pip- #ui Toga: 跨平台的 TkGUI
- #ml Viberary: 开源书籍检索引擎
- Khan 为何从Py2移植到 kt,go
- #parallel 用asyncio分享查询,防止缓存失效时并发卡爆
- #plt Rust vs Idris,Zig: 渐强类型的解药 #1
单进程 cron:
from apscheduler.schedulers.background import BackgroundScheduler并行 multiprocessing: #2
cron = BackgroundScheduler(jobstores=sqlite)
.add_job(print, 'interval', seconds=5)
.start()
with mpire.WorkerPool(n_jobs=5) as pool:- 修改语法ASDL,实现
results = pool.map(getFiles, range(10), progress_bar=True)
map( (x)=>x*x, [1])
[Parser/Python.asdl] [30行实现]- 奇怪的for赋值, 魔术方法
from xx import*
的明确化:设置好 xx.__all__ = [exports
]实现 lazy load:
importlib.import_module
⭐️
import pyforest
自动导入np,pd 等变量#code 修改语法
__import__('cv2')
- from lazy import cv2— 仅供学习,import 语句本可以是局部。 (GPT怎么变蠢了
import types,sys
class lazy(types.ModuleType):
def __getattr__(self, mod):
import importlib.util as _
if None==(r:=sys.modules.get(mod)):
id = _.find_spec(mod)
# get it inserted into sys.modules.
_.LazyLoader(id.loader).exec_module(r:=_.module_from_spec(id))
return r
sys.modules['lazy']=lazy('-L imports')
#ts
#1为什么静态类型的C,Go,C++ 不是弱检查 就是太复杂
代码练习: 不需要
type WTF<> =
就可以检查 htmlTag, funcPipe, nthArg, printf("\d") 等调用的类型 int[10] 的实质、 #Kt 类型推导的原理
Telegram
Newlearnerの自留地
#Python潮流周刊 #Newsletter
Python 潮流周刊#16:优雅重要么?如何写出 Pythonic 的代码?
🦄文章&教程
1、写代码时,优雅有意义吗?
2、Python Asyncio实践--高并发下如何防止缓存击穿
3、高效定时任务处理:深入学习 Python 中 APScheduler 库的奥秘
4、CPython 开发实战:魔改 lambda 函数
5、CPython 是如何实现引用计数的?
6、使用 Importlib 实现 Python 延迟加载
7、使用 Python…
Python 潮流周刊#16:优雅重要么?如何写出 Pythonic 的代码?
🦄文章&教程
1、写代码时,优雅有意义吗?
2、Python Asyncio实践--高并发下如何防止缓存击穿
3、高效定时任务处理:深入学习 Python 中 APScheduler 库的奥秘
4、CPython 开发实战:魔改 lambda 函数
5、CPython 是如何实现引用计数的?
6、使用 Importlib 实现 Python 延迟加载
7、使用 Python…
duangsuse::Echo
#sql #ts Prolog 牛逼! 正确的关系式搜索+ 同时实现 parse 和 toStr 😱 #zhihu 灵感来源 e(E) -->{E = [I,Ea,Eb]}, %重写规则, 'eX'为优先级 %利用 链|e1(E) 括住内"*/" e1(Ea), op(I,"+-"), e(Eb); e1(E). e1(E) -->{E = [I,Ea,Eb]}, e2(Ea), op(I," */"), e1(Eb); e2(E). e2(X) --> number(X); ("(",…
#book #ts The Little Typer
1. 类型签名是命题,程序的语意是用+,[],. 构造int,void.
2. 命题的条件和自身,都是值;依赖类型可以把值放到类型(int[2],. )中去,从而构造关于值的命题。
3.Prolog 缺少抽象
4. 类型也可以有类型, #haskell HigherKind
从结果上看,反而像 类型签名是证明,类型构造器是调用命题……
这样,类型依然是命题,程序依然用Refl证明并构造了Equal,而且删掉了查重率60%的冗余语法
Refl : 右是一段程序。用这种隐晦的方法传变量是错误的。这个语法的问题远不止「类型含糊」, 对语序的修改,只算一种局部的优化。
为什么用 (
https://ksqsf.moe/posts/2019-02-18-dt-fun.html
https://mxm.ink/dependent-type/#依赖于类型的类型:list
https://agda-zh.github.io/PLFA-zh/Induction/#第一个证明结合律
https://www.idris-lang.org/pages/example.html
1. 类型签名是命题,程序的语意是用+,[],. 构造int,void.
2. 命题的条件和自身,都是值;依赖类型可以把值放到类型(int[2],. )中去,从而构造关于值的命题。
3.Prolog 缺少抽象
refl_ID(X,X).
的模式,它的条件表都是全局给定,不能构造类型4. 类型也可以有类型, #haskell HigherKind
*->*
, TypeFamilies 就是指这个(虽然和 #ts 一样过度设计从结果上看,反而像 类型签名是证明,类型构造器是调用命题……
data Equal : a -> b -> Type where如果我换个语序,会更合理。
Refl : Equal x x
fiveIsFive : 5 = 5
fiveIsFive = Refl = Equal 5 5
data'ab' _=_
- x=x Refl() 成立
- five() 5=5 Refl
这样,类型依然是命题,程序依然用Refl证明并构造了Equal,而且删掉了查重率60%的冗余语法
Refl : 右是一段程序。用这种隐晦的方法传变量是错误的。这个语法的问题远不止「类型含糊」, 对语序的修改,只算一种局部的优化。
为什么用 (
Refl : Equal) 呢:它的亲戚,逻辑式语言都连「调用树」都不会组织,反而觉得 add-out(1,2,3) 更好看,加个类型学了“调用”,语序却远输OOP,真可谓一盘散沙
https://ksqsf.moe/posts/2019-02-18-dt-fun.html
https://mxm.ink/dependent-type/#依赖于类型的类型:list
https://agda-zh.github.io/PLFA-zh/Induction/#第一个证明结合律
https://www.idris-lang.org/pages/example.html
-- showOrRev(isInt, x) when isInt:因为是宏,当然就不需要类型作为值了。内联后直接推导就知道
$Y: x.Str ; $N: x.flipLR
-- printf(:Str, :[Arg Str])
直接在编译期生成loop,也不需要什么ts体操+js强转了when--'T' Link
Nil; Add(:T, :Link)
-'T' Link`+`(y:Link) when this:
Nil: y ; Add(x0,x): Add(x0, x+y)
-- useInline
可以直接计算Link拼接或解构后的值,避免手动分期求值ksqsf.moe
有趣的依赖类型
这篇文章的话题是「依赖类型」。很多人,甚至是写过多年程序的人,可能都没有接触过这个概念。简单说,如果一个类型依赖于一个不是类型的东西,那它就是依赖类型。其实我本人是这个话题的门外汉,那我怎么想起来写这样的一篇文章了呢?因为我刚刚读完《The Little Typer》,感觉非常新奇有趣,所以想写一写。如果我能把这份乐趣分享给你,那我会很高兴的~ (^_^)
duangsuse::Echo
#huawei 虽然API上各方面都没啥突破(亦如ark.ts),但这个demo tutorial举例比rust,go的更有趣 可以说团队的脑子没有被八股文的驴踢 #锐评 https://tttttt.me/dsuses/5319
#java #ts https://www.zhihu.com/question/659506359/answer/3538805082?utm_id=0
看到“高级编程语言”的数据结构我就捉急呀。
类型就是表格。纵行是其变种,横列是其数据, obj :. A(x):; B(x) 手动模拟if isinstance多态性
表格可以相互混入,传参时只要有覆盖该表就能调用
若无构造器,默认定义为纯模板 fn?? ,亦可含fn?项
否则表格默认全员锁定!fn,相当于struct。 写明的fn用于扩充既有类型或seal接口
- f(x.[Int Str may2]) Col2(1 2).A
?? 'AB'Row fn
Col2(A.A B.B)
?? 'AB'may2
A(x.A); B(x.B)
这不轻松把OOP interface abstract open final enum ADT match 给讲明白了,顺便消除了“代数”数据与子类型的鸿沟,易读和扩展性全都要。本身就是小学生都能搞懂的把戏嘛,真是啰啰嗦嗦一大堆啊
什么积类型和类型,你是Prolog? 给你俩Byte你能穷举出256**2个值,那才叫 prod type! 然而自称支持这些的,你的 patten match 等号两边能反过来写吗?
moonbit和仓颉,主流语言的那些小九九一个也没落下。 您是为计算机系开心写代码,还是为使用者开心而写?
再比如Go的 struct mixin。OOP的inner class本意也是一样,可惜被执行坏了,结果反而不如FP的tuple拼接
其实哪有什么构造器呢?拿函数签名生成的新类型吧。不过就是你们在模仿gpt该做的烂活,或者请IDE“代码生成”。。明明语言从语法API就必须解决掉的东西
如果从更大的复用性来看“class”,90% 的情况都是把重复的args打包起来,避免传一大堆参、允许部分修改,比如那寥寥无几的 open fun,“函数值参数”
因此py即便不爱用class也不瓶颈到工程的规模、Go早期干脆不做泛型。捆绑几个参数嘛,dict更好做
至于协程(N:M线程),await和yield(then vs next)其实是一个东西,但前者更合理,因为它只是把回调交出去,然后自己return
yield看似符合直觉,但缺少了重要的东西,例如buffer N项一页yield 大家都不支持。我们真的缺语言级iter吗?
spawn{}隐藏了调度级的“异步”,线程随便开,这很好
cj的过程宏,目前 import std.ast.* 后可以parse FuncDecl 啥的,也有quote()内插,还算比rust易用
我们程序员的奇技淫巧很超前,我们的软件工艺落后太远。
btw. 官方文档注 https://zhuanlan.zhihu.com/p/704858976?utm_id=0
https://www.zhihu.com/question/523049017/answer/3537896490?utm_id=0
看到“高级编程语言”的数据结构我就捉急呀。
类型就是表格。纵行是其变种,横列是其数据, obj :. A(x):; B(x) 手动模拟if isinstance多态性
表格可以相互混入,传参时只要有覆盖该表就能调用
若无构造器,默认定义为纯模板 fn?? ,亦可含fn?项
否则表格默认全员锁定!fn,相当于struct。 写明的fn用于扩充既有类型或seal接口
- f(x.[Int Str may2]) Col2(1 2).A
?? 'AB'Row fn
Col2(A.A B.B)
?? 'AB'may2
A(x.A); B(x.B)
这不轻松把OOP interface abstract open final enum ADT match 给讲明白了,顺便消除了“代数”数据与子类型的鸿沟,易读和扩展性全都要。本身就是小学生都能搞懂的把戏嘛,真是啰啰嗦嗦一大堆啊
什么积类型和类型,你是Prolog? 给你俩Byte你能穷举出256**2个值,那才叫 prod type! 然而自称支持这些的,你的 patten match 等号两边能反过来写吗?
moonbit和仓颉,主流语言的那些小九九一个也没落下。 您是为计算机系开心写代码,还是为使用者开心而写?
再比如Go的 struct mixin。OOP的inner class本意也是一样,可惜被执行坏了,结果反而不如FP的tuple拼接
其实哪有什么构造器呢?拿函数签名生成的新类型吧。不过就是你们在模仿gpt该做的烂活,或者请IDE“代码生成”。。明明语言从语法API就必须解决掉的东西
如果从更大的复用性来看“class”,90% 的情况都是把重复的args打包起来,避免传一大堆参、允许部分修改,比如那寥寥无几的 open fun,“函数值参数”
因此py即便不爱用class也不瓶颈到工程的规模、Go早期干脆不做泛型。捆绑几个参数嘛,dict更好做
至于协程(N:M线程),await和yield(then vs next)其实是一个东西,但前者更合理,因为它只是把回调交出去,然后自己return
yield看似符合直觉,但缺少了重要的东西,例如buffer N项一页yield 大家都不支持。我们真的缺语言级iter吗?
spawn{}隐藏了调度级的“异步”,线程随便开,这很好
cj的过程宏,目前 import std.ast.* 后可以parse FuncDecl 啥的,也有quote()内插,还算比rust易用
我们程序员的奇技淫巧很超前,我们的软件工艺落后太远。
btw. 官方文档注 https://zhuanlan.zhihu.com/p/704858976?utm_id=0
https://www.zhihu.com/question/523049017/answer/3537896490?utm_id=0
duangsuse::Echo
另外,我刚又又设计了一种新的元编程方式: QuineQuoted (馈硬是一种 eval(s)==s 的测试,它和FP系的ast宏还有点区别: qq需要编译器支持, QQ自己就是编译器) #plt #kt https://github.com/mame/quine-relay 我几年前用这类技术弄了Tk的DSL,forin展开 https://github.com/duangsuse-valid-projects/TkGUI ,但没有意识到值:名替换 是把运算符重载变成编译器的要点 : 首先 kstSel=Fn(2…
https://www.fxzhihu.com/question/528403706/answer/73201328199 #ts
再见了,丑陋的类型体操
通过在JS上使用eval留字面的二段求值,任何这样支持反射的语言,都可以有编译期的预处理器,和# define一样简单
再也不需要理解类型了,解释即编译
再见了,丑陋的类型体操
通过在JS上使用eval留字面的二段求值,任何这样支持反射的语言,都可以有编译期的预处理器,和# define一样简单
再也不需要理解类型了,解释即编译
Inc=F.QUINE((quote,x)=>(quote`${{x}}+=${1};`, x))
acc=2; dd=Inc[acc]
//dd=Inc.scop(s=>eval(s)).MEMO1(acc)
//dd=((x)=>{x+=1; return 3 })(acc)
//展开结果
acc=2; dd=3
FxZhihu / Fixup Zhihu
为什么 TypeScript 会有「类型体操」? - @酱紫君 | FxZhihu
TypeScript 聪明反被聪明误, 处于一种微妙的位置. 类型系统比 TS 烂的, type 比 term 少太多原语, type level 压根无法表示复杂逻辑, 也就没这种烦恼 类型系统超越了 TS, 达到 DT 级别的, 此时 term 就是 type, type 就是 term, 也不用写两遍. 只有 TS 不上不下, 夹在中间, type 和 term 有同样能力的原语, 但是 type 和 term 却不等同 于是一模一样的逻辑 term level 写了一遍, type level 又要写一遍…
https://tttttt.me/hyi0618/7238?comment=12049 #ts #rust 类型检查
许多学问,只是跨端、跨期之时,对同一种语言结构或「语意」的扭曲。 我甚至觉得比Python晦涩的编程语言不应该存在,因为人人皆可编程,这才是编程语言和IT的本意。
Guido用 @pipe(x) def y: +1 和lambda:的若智语法compose块,但他的哲学刚好弥补了这一部分。
如果你是个高级的元编程研究者, 你的眼中不会有「高级特性」,因为那正是语言设计要消灭的问题。 许多“特性”,只是与App接触不良的“关联性”。
许多学问,只是跨端、跨期之时,对同一种语言结构或「语意」的扭曲。 我甚至觉得比Python晦涩的编程语言不应该存在,因为人人皆可编程,这才是编程语言和IT的本意。
Guido用 @pipe(x) def y: +1 和lambda:的若智语法compose块,但他的哲学刚好弥补了这一部分。
如果你是个高级的元编程研究者, 你的眼中不会有「高级特性」,因为那正是语言设计要消灭的问题。 许多“特性”,只是与App接触不良的“关联性”。
Telegram
duangsuse in Channel comments
Macro(码可揉) 和eval('1+1')一样, 是最基础的元编程形式
因此,它也是最被误解的。
现在编程语言里,宏函数的模型, 就像为 JS “反射”提供了 lang.reflect 那样,模糊了语意。甚至不如C的对"\n个lits"特殊处理后的code.replace()规则
你可能觉得,Java class {int x=233;} 的反射数据
足足有三列,比JS多,但 Python typehint 也没Java那么搞笑。编译时vs运行时共有两张dict罢了。
hApi.__annotations__['x']…
因此,它也是最被误解的。
现在编程语言里,宏函数的模型, 就像为 JS “反射”提供了 lang.reflect 那样,模糊了语意。甚至不如C的对"\n个lits"特殊处理后的code.replace()规则
你可能觉得,Java class {int x=233;} 的反射数据
足足有三列,比JS多,但 Python typehint 也没Java那么搞笑。编译时vs运行时共有两张dict罢了。
hApi.__annotations__['x']…
duangsuse::Echo
让我觉得匪夷所思的是, FRP 脚本有很多,但基本都是拿到地址就(可以公网)测试了,就像你只是调用了一下curl而已 Linux hostnamectl 这个特性,似乎是可有可无的,存在感比蓝牙设备名还低 这就像一些 http/ftp-server 测试服务,启动后不会 print URL 句柄,要你根据port去猜 当我封装CF的公网tunnel时,理所当然就把此服务封装成 $HOSTNAME 了,回头一看我居然是异类。 😅 twistd -n ftp -r . python -m pyftpdlib…
#web #dev 这个真是懒得喷。 我理解的REST(可表达状态转移, 😅 😅
就是 db.GET PUT json, 加上过滤排序分页, 或许有些 /user/:id/follow 的页面可以手写下,也可能直接套模板生成(哪个平台没有一堆“收藏夹”啊..)
这种RPC当然毫无价值,类似于把本地存储换到线上,只是加个鉴权和双向搜索罢了,查重率100% 我是懒得手写的, GraphQL.org 也封装的明明白白。
我觉得奇怪的是,哪怕是在PyJS的全栈框架里, 我说的这种REST,对 BlogComment, Todos, PetShop 等基础CMS样板也没法做成和Excel一样简单; 那些淘宝上卖的(开源投自制) 也都没有重用重构的价值
这篇文章在替发明REST这个「高端概念」的大佬,抱怨工程师们什么呢? 是 HateoAS (讨厌OpenAPIs?? ) 没人玩。😅
也不是讨厌,是用res.body XML上的nullable函数超链接,表示“用户有没有登录” “用户能不能删贴”,来「方便App跨版本」 等等,比SOAP好一点
这不是废话么?? 这都2025了还有人把活爹.XML(schema)当个宝呢。 你说说Java里怎么生成 OPTIONS / 啊? 有了 HATEOAS 接口,在JS里免client lib 直接调用的DX体验怎么样??
没有TG自己造传输层协议的能力,还抱怨工程上restful的理解了RESTful, 那比你强的就是懒得为REST这种高度自限性的RPC写框架,早自己玩更好的去了; 比你菜的又只会CRUD,最多拿 http/module/:pathArg 优化下可读性,对接下SQL或jsonKV, 你让他区分个 GET/POST 都懒
可不是被滥用和误解嘛, 纯属活该,自己不开发在那边画饼…… 你有没有意识到, api.x.com/OpenAPI.json 就是所谓的REST、免文档、自动发现函数、解耦合?
Java codegen 都没写过是怎么敢设计这种协议范式的? 不对,看他们 content-type 都要改成 vnd.XX.User+json 我就觉得这是 #ts 写上瘾了。 知不知道 fetch() 不能自动判定body类型,还要手动.json()一下……
如果你真能生成并用 OPTIONS /:type/:id 调用动态方法,那要http就没意义了(本质上是js rpc),所谓超文本又体现在哪。
我都可以给REST/HATEOAS重构成工程界可以接受的样子, 但我不会用单请求单响应。🙉
http方法本身也是烂梗, POST就是有body的GET,DELETE就是空body的POST, jQuery 里一直是这样重载的,十年了不见跨语言一点。 POST的“同名时冲突” 也是很脑残的约定,很多人只是为了在body里放文件上传一下, 根本就不该禁止,填写表格时多次检查。
🤡 https://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
ps. 我是真的写过API生成的 https://github.com/duangsuse-valid-projects/GeekSpec-GeekApkv1.0b
SOAP砖家: https://coolshell.cn/articles/3585.html
curl https://wtf = count: x=>x+1
) 是什么? 就是 db.GET PUT json, 加上过滤排序分页, 或许有些 /user/:id/follow 的页面可以手写下,也可能直接套模板生成(哪个平台没有一堆“收藏夹”啊..)
这种RPC当然毫无价值,类似于把本地存储换到线上,只是加个鉴权和双向搜索罢了,查重率100% 我是懒得手写的, GraphQL.org 也封装的明明白白。
我觉得奇怪的是,哪怕是在PyJS的全栈框架里, 我说的这种REST,对 BlogComment, Todos, PetShop 等基础CMS样板也没法做成和Excel一样简单; 那些淘宝上卖的(开源投自制) 也都没有重用重构的价值
这篇文章在替发明REST这个「高端概念」的大佬,抱怨工程师们什么呢? 是 HateoAS (讨厌OpenAPIs?? ) 没人玩。
也不是讨厌,是用res.body XML上的nullable函数超链接,表示“用户有没有登录” “用户能不能删贴”,来「方便App跨版本」 等等,比SOAP好一点
这不是废话么?? 这都2025了还有人把活爹.XML(schema)当个宝呢。 你说说Java里怎么生成 OPTIONS / 啊? 有了 HATEOAS 接口,在JS里免client lib 直接调用的DX体验怎么样??
没有TG自己造传输层协议的能力,还抱怨工程上restful的理解了RESTful, 那比你强的就是懒得为REST这种高度自限性的RPC写框架,早自己玩更好的去了; 比你菜的又只会CRUD,最多拿 http/module/:pathArg 优化下可读性,对接下SQL或jsonKV, 你让他区分个 GET/POST 都懒
可不是被滥用和误解嘛, 纯属活该,自己不开发在那边画饼…… 你有没有意识到, api.x.com/OpenAPI.json 就是所谓的REST、免文档、自动发现函数、解耦合?
Java codegen 都没写过是怎么敢设计这种协议范式的? 不对,看他们 content-type 都要改成 vnd.XX.User+json 我就觉得这是 #ts 写上瘾了。 知不知道 fetch() 不能自动判定body类型,还要手动.json()一下……
如果你真能生成并用 OPTIONS /:type/:id 调用动态方法,那要http就没意义了(本质上是js rpc),所谓超文本又体现在哪。
我都可以给REST/HATEOAS重构成工程界可以接受的样子, 但我不会用单请求单响应。🙉
http方法本身也是烂梗, POST就是有body的GET,DELETE就是空body的POST, jQuery 里一直是这样重载的,十年了不见跨语言一点。 POST的“同名时冲突” 也是很脑残的约定,很多人只是为了在body里放文件上传一下, 根本就不该禁止,填写表格时多次检查。
🤡 https://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
ps. 我是真的写过API生成的 https://github.com/duangsuse-valid-projects/GeekSpec-GeekApkv1.0b
SOAP砖家: https://coolshell.cn/articles/3585.html
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2