duangsuse::Echo
583 subscribers
4.12K photos
118 videos
579 files
6.13K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
#Java #Learn #typing 还是写了……
#cplusplus #PLT #typing 支持用 concept 实现 Sum Type 了...

template<typename T>
concept Sum same_as<A,T> || same_as<B,T>;
template<Sum T>
void check(T status) {
if constexpr (is_convertible_v<T, A>) {}
}

欸这不是 overload 吗,所以... 是用了 constexpr 优化啊
#golang #typing #PLT #info 同时 #Python 的 pattern matching 也通过了
#Java #typing 泛型
duangsuse::Echo
这类实用性较低的知识,是否希望解释名词
结束洗稿。感觉可能需要一堆正则重构工具,我不想看到「一个一个一个」这样的量词🌶

😅开个玩笑啦,本频道以「编程」原创内容为主,这些只挑重点

呃既然你们觉得这技术也想了解,我之类弄mkey了解了些 讲。没博客也是我的失败,过几个月大概。

关系式 1=1 成立 1=2 不成立
a=1 和 1=a 成立
成立得解,于是程序=目标Goal=等式的所有解

注意,等号是没有方向的。在 #js 有 [x,y]=p 和 p=[x,y] ;看起来是关系式,其实等号左是模式pat、右值expr,关系式里,变量是值、含变量数组[a,1]=[1,a] 也是值-js里 [x,y]就是死模式

(append-out "a" x "abc") Yes. x="bc"
因为『未知量』也是值。
def (appendo a b c)
b=''&c=a |{x r. [x,r]=b&this([a,x],r,c) }
其中this是递归 ab皆链表
如a=c='?' 则成立
如a='1' b='2' 则 f(12,'',c)=a ,知道abc里任何两项都能推完-除非 f('a','','?a')={c!=a} No.

为啥变量也是值?因为语义不是「重写化简:(1+2)=3」而是归一 #fp unification ,即我开头说的 a=1&1=a ,成立, a=1|a=2 ,在不同上下文-各自成立。KV上下文{x r. goal}就是结果,它没有求值 只有a=b=c 相等性传播。这显然涉及数组解构(unify-[a]=[1])、再构(reify/grab v from ctx),别忘了c=12的例子 有1个x变量,c=123 就有两个x 在回溯时=b[0]

实现细节都讲了,式Goal如=, &| {a b.}是组合其它式,得惰性K=Symbol/唯一str -V流的,一般 &会用eachNext([1],[2])=12 做,|就是并联,然后unify "abc"=[x,r]/grab "${x}bc" 都是deep的。un和deepEq类似但能给变量赋值,un失败得null。有变量 a:b,b:c 则 get(a)=c; get(2)=2

可以去 https://github.com/tca/veneer 试试关系式编程。因为相等关系能构成 [],{},"" 数据- 它们都是“算式得出”的,关系式可以实现列表处理和判定-但不能 while(1)print 这种“动作语义”
纯函数式(不含Scheme,rkt 等)也没有,但二者不同。

它可以用于类型推导 #kotlin #ce #typing
fun<T> T.let(op:(T)->R): R 里,类型参数没有上下界,只有「确定性」-每处T不能同时是Int,Date
因此在检查时,第一遍 receiver T 提供T:Int,ParamType 实例 (T)->R 试把自己的 T 与之归一,比如 Int|Number=Number ;第二遍检查 Int. 仍符合 Number.let 的签名,可以调用。
如果是 fun<T> Any.asType():T ,第一遍T没有信息(参数的-类型表达式 里没有使用) 也非T:Any ,推导就失败了;或者推导出 T=Int|Date=Any ,查不到重载,第二遍检查报错

T在编译期是和语法树1:1的data(var actual:Type?),所以 fun rec(x:T)=rec(x-1).plus(1) 也推不出来/不该想那么多
而 val n=1 写明就是 <T>val n:T=1 ,T=typeof 1 ,如写 (n+2)且(+):TT->T 则也有 {T R. n=1 :T & (n+ 2:T):R } 关系式

qunie就是鸡兔同笼这类问题,TDD 是面向🐒跳键盘编程(确信..其实是先写检查),可以穷举也可上关系式,总之mk是挺直白的,确实是pdf界一股清流

https://tttttt.me/ice_learn_arend/199 那么我们来看实际应用
\func wow {U : \Type} {T : U -> \Type} (A B : U) (a : T A) (b : T B) : Nat => zero

wow(U:T F:U->T) AB:U a(FA) b(FB) :Nat=zero
t1(AB:T) x:A y:B =wow ABxy --fail
t2(AB:T) x:A y:B =wow {_} {\. _} A B x x

是啊,是为什么呢🧐 又是怎么用呢

一说SQL和mk同类,只不过是查询既有关系(而且必需SELECT a,b或*),此外有 swi-prolog.org

这也是我发投票 https://tttttt.me/dsuse/17241 的原因
比如 #zhihu 某专栏的作者
浅尝 miniKanren,传说中的逻辑式编程(二) - 吴烜xuan三声的文章 - 知乎
https://zhuanlan.zhihu.com/p/372280127

如果不是因为科普的萎靡,他本来可以做更有价值的事,这难道不值得所谓的PLT人三思吗? #statement

我到底是一个一个一个什么啊(全恼)🥱
duangsuse::Echo
#ce #plt 带步骤的四则计算器。递归逆波兰。22行代码 浅先=`;=;+ -;* / %` 流=(a, _s=[...a].values())=>()=>_s.next().value 切2D=(s,sp0,sp1)=>s.split(sp0).map(s=>s.split(sp1) ) {let t={},k; 切2D(浅先,';',' ').forEach((x,i)=>{for(k of x)t[k]=i}); 符深大=t} 符链=(s,l)=>{let a=[],add=x=>a.push(x)…
#plt #typing #kotlin #java 常见类型系统
从变量/参数的赋值兼容力(即子类成员量)升序:Any<任何类型<Nothing ,类型 T 比T?兼容力强,因其不含null,error():Nothing 可容任何类型,因后续计算中断。
对函数(Any)->R 连Any都能收,当然是 (Int)->R ,也即 Fun<in T, out R>,型参值 T=Int 反接受小的 T=Any。是消费-生产 in=?super,out=?extends "通配符",但可直接在写<T> 时指定仅在 in/out 位置,及 Array<out Int>
变量R在两个函数类型里唯一,都来自<T,R>型参列表,对R的每位置归一可推导出R再检查。可以发现,(T)->RFun<T,R> 都是从类型组合出类型的语法,
而检查期 1,"str" 和 Int,String 型变量都是类型(Type.can haveSubtype),a[0]=1 时问 Array<Any>.set(Int,Int) 是否 params.all{it,i-> it.can(arg[i].type) } ,像在执行一般检查每条算式,能提早报错并加速内存分配。

类型的强弱看隐式转换,动静即语法有无分出“编译期已知项”如class结构,类型推导能让静态类型更智能。

现在你已经知道「类型标记
」只是仅编译可知,用来 chk(AST.FCall): i=0~nArg; scope["print"].arg[i].can(call.arg[i].type )Type.can(Type):Bool 实例,正如 Python 的 from typing import TypeVarMap<K,V> 也是编译期调用,只是class 里创建型参<A,B,..>写法和函数前不同,不是”特殊语法“。
类型的交集&(有 where T:A,T:B "交集上限" )并集|(兼容操作支持俩类型,如 Any? vs Any,AST vs Call If For):子类&父类=子类, A&B=Nothing 、A|B=最近共同超类

+*类型即分支组合类型,与其配对的是不兼容子类型的系统,那些系统里元组/具名数据类型也算”类型“,但有些奇技(如typeclass函数重载)来解决OOP里有或没有的问题。
A&B 成员集小,兼容力比A或B大,但在严谨的OOP子类派生里,只有 A|B 被用于多态(函数覆盖:多义, Any null?),而交集参数仅混合接口。

感觉有点好笑,我一个看编程语言的,话却越来越少了。 以前很喜欢技术,但感觉越学知识越少了。
#py 周刊
Python,YAML 的缩进为何比C系优秀

4、strictyaml:类型安全的 YAML 解析和校验库
用于解析 YAML 的受限子集,拒绝解析丑陋的、难以阅读和不安全的 YAML 简写,有严格的标记验证和直接的类型转换
TOML 文件格式有什么问题?
“改进的” INI 文件,是 pip 推荐的配置文件格式。但连 TOML 的作者也认为它是一种糟糕的格式!

12、Python Fire:自动生成命令行接口
谷歌开源的一个用于生成 CLI 的库,Github 25K star。这篇文章介绍了它的一般命令、组合命令、链式命令、复杂命令等用法。

5、facefusion:更先进的换脸工具
最新开源的一个人像换脸库,star 涨得飞快!(star 6.9K)

#tool 把网页转换成 Markdown 格式存储
一站式 LLM 底层技术原理入门指南
基于数学点乘的 Transformer原理引言
7、instagraph:将文本内容或 URL 转换为可视化的知识图谱
可以提取复杂信息中的名词实体,生成它们的关系图谱。使用了 GPT-3.5,以及 Flask

该以一种怎么样的心态对待开源
🐎 网易云音乐 Tango 低代码引擎正式开源!

文章集 Writing an #OS in Rust , 从linker-BIOS ABI到算法
Thorium.rocks : Chromium 改版

10、使用 Django 和 HTMX 开发一个数据库搜索项目
一篇详细的 Django 项目教程,实现一个全栈的项目。文中有作者的教程视频。

11、异步 SqlAlchemy 和多数据库管理
利用 asyncio 和 SqlAlchemy 库,文章探讨了如何有效地连接和管理多个数据库,获得可扩展且具有弹性的架构。文章介绍了两种实现方法。

前端新轮子 Nue JS,作者称要打造全新的 Web 生态 [docs]
tornado Web 框架 的协程调度原理

14、为什么 Python 代码在函数中运行得更快?
代码执行的工作原理是什么?如何测试与优化 Python 函数的性能?

13、我最爱的解 LeetCode 问题的 Python 技巧

#algorithm 玩转遗传算法
遗传算法(Genetic Algorithm)是一种受生物进化理论启发的优化算法,用于解决复杂的搜索和优化

9、调试 Python 中正则表达式的灾难性回溯
作者使用 py-spy 定位一个 CPU 100% 占用问题,找出了罪魁祸首的正则表达式

Python abc 类型提示的轻量化:接口
from typing import Protocol

@typing.runtime_checkable
class DuckLike(Protocol):
def walk(self, to: str) -> None: ...
#plt #typing infer https://zhuanlan.fxzhihu.com/p/634217295
https://zhuanlan.zhihu.com/p/712419355

今年8月发的。其实猾为内部还是有支持一些不那么抽象的知识分子的。 我觉得讲得比某些知乎大佬简单明白,
这方面靠中国的社区文化,还是不如真专家讲,该推荐还是得推荐。