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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
duangsuse::Echo
#china #dev #opensource 大清最新战果, 能抄也能赚,避暑山庄同行们赢麻了! 🥰 根据《网络安全法》,开源软件作者或需要对其产品「持续提供「安全」维护」,即使协议中存在免责条款。 方脸: 「层层加码」像除四害一样,从不尊重动物权利,延伸到对个人权利的迫害 在举报贪官的人民运动下,你试试举报纪委违宪,或者去纠不能纠的错,就会发现这种反腐,只是文革再现 工会和NGO往往被视为政府职能的补充,但它们涉及法律人权相关的议题时,就完蛋了 #life #security 罗翔:通过伪基站(中间人攻击)…
#history 方脸:🤔 为什么近40年的世界不止「枪杆子里能出政权」了!

答曰:总书记亲自加速,不被制裁回解放前,太难了

#china 互联网户口簿,实际却是大水冲了笼王庙 😂
以后,道德准绳站在哪一边呢
👍2
Forwarded from 每日消费电子观察 (horo)
clash gihub 仓库已 404
https://github.com/Dreamacro/clash
#life 🤔💭 真实生活与工作
虽然我是典型的弱者,这种社会也太压抑了。对老一辈而言,能吃饱是他们心底的奢求

1. 我们家并没有真正学会省钱
2. 全日制工作(对我)没有出路
3. 照你们的活法,不会像前几十年一样成功了

- 每天下馆子也只花30块,自己煮饭呢? 掏空钱包买房,就是为了空着,也不租出去?这浪费的几万的钱,省几十年才能省回来?
- 劳动是为了报酬,为了吃饭
- 人生当然会工作的,只是,永远有比你勤劳的人,瞎勤劳只会更廉价


- 如果是为了凑合一辈子, 那我在高中时就被淘汰了
- 如果所有人,都像你说的那样挤着要工作,不会有人闲得(听别人)评头论足, 否则,那是你忙中偷闲,还有时间想别的

攒一辈子钱,就是医保和买房不够用,租房又怕被侵权; 上补习班,就是怕未来工作被开,交不上房贷
这一代有几人,能承担你们这样的生活压力? 子子孙孙辈地受这样的苦?

>我才毕业几年啊,一辈子有多长, 怎么可能一下子就能怎么样?

找工作是这样,吃饭也是这样, 所谓坐吃山空,那每天996 就能财富自由了吗?

所以那么急干什么?
👍2
#ai #algorithm 看来GPT3在你知道一些基础时,还是可信的 😱

>这是高斯消元.py 的实现:
def elim(A, y):
n, m = A.shape; assert n==m, "需方阵"
M = np.hstack([A, y.reshape(-1, 1)]) # M=(A|常数项b)

for j in range(m):
# 向下[j:] 找元最强的行,换为本行(i,j=j,i)。会在回代里获取
i= np.argmax(abs(M[j:,j]))+j; assert M[i,j]!=0, "无解,不可逆矩阵"
if i!=j: M[[i,j]] = M[[j,i]]
# 归一,因此后面行消它
M[j] /= M[j, j]
for i in range(j+1, m):
M[i] -= M[i,j]* M[j]

x=np.zeros(n) #逐行 y-约旦回代
for i in reversed(range(n)):
x[i] = M[i,m] - M[i, i:m] @x[i:m]
return x

请你将其改为矩阵求逆

<这个实现中,我们将矩阵 $A$ 和单位矩阵拼接在一起,得到一个增广矩阵 $M$,然后对 $M$ 进行高斯消元,最终得到的矩阵就是 $A$ 的逆矩阵。具体来说,我们将 $M$ 的左半部分(即 $A$)化为单位矩阵,然后 $M$ 的右半部分就是 $A$ 的逆矩阵。

>不愧是AI,轻松就做到网络博文做不到的事!
谢谢夸奖!我会继续努力的 💪🤖💻

总之就是只改了两处,然后成功了

爆杀那些把矩阵求逆,独立于gauss消元来讲的中文博客…… 真的太牛了
#PLT #design https://t.me/rynif/31969
https://docs.racket-lang.org/ming/preface.html#:~:text=成双成对

这个作者比我当年,多做了个二简字(词转自造字) 😨

我最后没把Pair译为"对, 到"。尽管 for(x in xs) 已是 xs:[x] 。确实翻译时这些混淆要小心的

程序员记忆和理解的不是代码,而是类型,好比设计师学的首先是咋拖拽UI组件,而非题海战术
所以说Lisp和OOP比起来才那么烂,只有元编程优秀,因为Lisp的语法树太单一,也没有jspy那样的加糖字典

作者的英汉对比,形式层面上vs语义层面上简洁, 其实是搞反了。他翻译的才是字面简化,偏旁部首小得看不清,反而不如拼音语言+定义式的编程范式

作者把语意嵌入到偏旁里,根本是瞎胡闹, Lisp已经比Scala这些工具落后太多了,还把它往低抽象高细节靠。虽然现在圆括号的数据转化能力已经不如jspy了
举例评价下此「中文编程」设计思想,格式为
名:文档
^绝句的写法
批语

双(阳阴) : 把两个数据配成对,即成一个双
^ [数 文 俩项] 1|"2" [数 仨]
^ "12"==p:A+B
考虑过三元组?

字?/象形 : 【MORE】 = char-graphic?
^ Str.AZ.graphic/'c', 'c'(Upper), (Symbol:'#:1')
泛用数据类型,不要硬编码

丫,并,戈(或),、:流控if
^ (1==1)(2、3)==2, arg/IS_GOOD: say:'wtf'
泛用数据类型,而非泛化符号字面


btw. https://github.com/yanyingwang/24-solar-terms/blob/master/scribblings/24-solar-terms.scrbl#L45

这个作者在用Racket写前端诶(?
要命的是,他用rkt做了SQL表格的功能
#dev #android 面试题 🤔
- 技术上提升最大的一个项目,展开介绍
对比业界同种算法流行和不流行实现、重写自己的任何项目,都比从事GPT都能完成的原型要好
- 为什么选择 Flutter,在业务方面学到了什么
Compose界原神的名气真的太大了,居然能用Navbar,Tab等自带组件,居然能调style!

- Java 里重载和重写的区别
在编译期vs运行期确定函数,改方法签名vs改子类值
- 什么是线程安全
避免共享变量(不相交),或使用Atomic/独占锁 避免读写异步
- Service 是什么
是Android版的主要线程,与daemon线程相反,适合后台Worker
- Fragment 和 Activity 有哪些区别
不刷新重载vs带参单页(Intent)

- Retrofit 用到了哪些设计模式
都是nodejs事件队列,ES6默认参数,函数名Proxy,组合函数(适配 装饰 策略) 之类的东西
- UDP 和 TCP 有什么区别
TCP和stdio文件没区别,UDP允许丢包和无连接发送
- 算法题,输入两个包含数字的 String,求它们的和,要求可进行任意长操作(不能直接变成基本类型算)
BigInt,即从右遍历相加,记录>10到carry=1 进位。遍历int[]也一样

- 为什么选择 Flutter,引导你选型的逻辑或者核心原因是什么
流行是唯一的原因
- Looper 为什么不会卡死?我们往深层次一点说,天马行空一点,你能想到什么办法让一个死循环不会卡死?
for绘制进度条,两层for+SIGINT,for调度函数队列-这样死递归还不会栈爆呢
- 如果网络碰到延迟会如何解决
做一个加速条,利用安慰剂效应;也可以Cache-Control或Protobuf压缩
Forwarded from 厘米碎碎念
duangsuse::Echo
#py 周刊 - 周刊1 无语了, #telegram 上写文怎么破事那么多呢? Ctrl+K 弹框又限bot干🐴呢,哇会做C++ UX真是太厉害了,Markdown编辑都搞不全 //替换/^\d*、//g; $0.innerHTML.replace(/<.?p.*?>/g,"") $$('p').forEach(e=> e.replaceWith(...e.childNodes)) $('[tabindex]:read-write').innerHTML=prompt() 只能在vs和web两个浏览器间,直接CtrlCV文档…
#py 周刊
周刊1
#新品
Black 格式化工具+lint的替代者Ruff:快 30 倍以上 25w/.1s
你应该什么时候升级到 Python 3.12?建议你等到 12 月,修复不兼容的软件包、缺少二进制包

Python 3.12:一个被人忽略的史诗级版本 👍
改进 Numpy 的 Python API,为 2.0 版本准备

3.12 对于 Python 的意义,大于 3.5 的“async/await” 和 3.6 的 “Type Hint” 对于 Python 的意义!PEP-669 带来的可调试性(Cyberbrain call #visualize)、PEP-684 为 non-GIL 带来的性能提升、PEP-697 松耦合 C API


不要再用 requirements.txt 了, setup.py 的糟糕体验
推荐使用 Poetry。pip 的主要问题是没有 lockfile 和手工管理虚拟环境麻烦
在 Mac 上安装 Python 的正确方法作者给出的建议是 Pyenv + pyenv-virtualenv

uDjango:单文件的 Django 微型项目 这个项目是 DjangoCon US 2023 的演示项目,使用单文件不到 10 行代码,演示一个最小的 Django 应用。
Django vs Flask:哪个是最好的 Python Web 框架?一篇细致的长文,详细对比了它们在模板系统、URL 调度器、数据库支持、身份验证及授权、测试、软件架构、学习曲线等方面的差异。没有更好的,只有是否适合你的。

从零开始编写一个 Python 异步 ASGI Web 框架 这篇循序渐进的教程是很好的学习材料,让你了解 Web 框架设计、异步编程
kivy+pandas 开发简单的 Android 数据分析应用其作用是记录和显示你全天在屏幕上花费的时间

#框架
为什么 Django 后台管理系统那么“丑陋”?Django Admin UI 很多年没有变化,显得设计过时了。因为它不应该暴露给终端用户。

数据库生成的列 :Django & SQLiteGeneratedField 是正在开发的 Django 5.0 的新功能,实现C=A+B等自动SQL算式。这篇文章还介绍了一些 Django 5.0 中的新东西
Kenneth Reitz:迟来的道歉,以及 requests 3 的进展2019 年时 requests 3 的筹款闹出了不小的风波!文中列举了目前已经完成的一些事情(typehint,imports,async)

esmerald:高度可扩展、高性能的 Web 框架基于 Starlette 和 Pydantic ,支持同步和异步,提供 DAO、ORM、ODM、依赖注入、权限管理等功能。
grequests:异步的 HTTP 请求grequests 构建在 gevent 库之上,一个提升性能的建议。

#技巧 😨
100%的测试覆盖率是不够的:Python 中基于命题的测试 如何设置 @pytest.mark.parametrize
Hypothesis

Python 如何在日志中隐藏明文密码? 基于 logging 模块的两种实现方案:自定义 filter 和自定义 formatter
使用 AI 进行网页抓取实验(使用 GPT-4 解析 HTML)GPT4的能力到底如何呢?如抓取结构良好的网站、抓取 Google 自然搜索结果、抓取 Google SERP、以及抓取 Google MAPS 结果。

从混沌到凝聚:构建你自己的 Monorepo 文章介绍如何使用 GitHub Actions。monorepo 是将所有项目都放到一个代码仓管理,可能包含不同语言和框架。这意味着对它的依赖管理和 CI/CD 等都与普通代码仓不同。
RSS-GPT:使用 ChatGPT 为你的 RSS 订阅源生成摘要使用 GitHub workflow 新生成 RSS 订阅源且推送到 GitHub Pages。一键配置无需服务器。


#精通
Python 是一种编译型语言

我们通常习惯将 Python 称为一种解释型语言,因为它在运行时逐行。很多人还知道 .pyc 其实也有编译的过程。作者通过苏格拉底式对话和几轮实验,引导读者重新思考“解释”与“编译”:它们是错误的二分法、限制了编程的可能性
Python-Type-Challenges:通过在线挑战来学习 Python 类型提示

开发一个 Python 编译器和解释器这是一系列博文,目前已更新 6 篇,目标是探索和研究实现 Python 等编程语言所需的概念和算法,将会涉及:Lex-YaCC、树解释器。

你能用 Python 的 bisect 模块做到这些事两个函数,可以做很多事:二分搜索、前缀搜索、在列表中查找连续的相等值、查找字典中最接近的键、自定义对象的排序、按照字典 key 搜索。
使用 Ptpython 提高你的编码效率Ptpython 是一个功能丰富且对用户友好的 Python REPL,在脚本中嵌入。
de4py:Python 逆向工程工具包 (neta de4dot) 一款高级的 Python 反混淆器,面向恶意软件分析师和逆向工程师,它拥有精美的 UI 和一些高级功能。

#资源 🤗
public-apis:面向开发者的公共 API 列表 非常非常丰富的公共 API 清单,内容应有尽有。(star 2K)

XHS_Downloader: 小红书图文/视频 spider
FunASR:端到端语音识别工具包阿里。有语音端点检测(VAD)、标点恢复、语言模型、说话人验证、说话人分离和多人对话语音识别等。(star 1.2K)
使用 Python+ChatGPT 开发一个书籍摘要 AI Langchain 和 OpenAI embedding 开发一个书籍摘要工具。另外,作者使用 Streamlit 发布了一个在线体验网站
duangsuse::Echo
#dev #android 面试题 🤔 - 技术上提升最大的一个项目,展开介绍 对比业界同种算法流行和不流行实现、重写自己的任何项目,都比从事GPT都能完成的原型要好 - 为什么选择 Flutter,在业务方面学到了什么 Compose界原神的名气真的太大了,居然能用Navbar,Tab等自带组件,居然能调style! - Java 里重载和重写的区别 在编译期vs运行期确定函数,改方法签名vs改子类值 - 什么是线程安全 避免共享变量(不相交),或使用Atomic/独占锁 避免读写异步 - Service…
#life #statement 对频道、对最近设计稿的一些吐槽

这里本来是用于分享知识的👆,但我又没有多余时间维护它,最终看起来,就像一个草稿箱
我不能像回形针或何同学那样科普,甚至不能学习3b1b和Code Aesthetics 去做我还不愿意涉足的特效,我要传达的太多了…… 我要面对的历史包袱,也太具有迷惑性了

这些知识蛮细节,不一定能立刻写成代码用上。更多是一种解构和自嘲吧。
对编程而言,我是认真的。我不随波逐流,不会因为时代改变就觉得自己被抛弃,去转行


可是,这种执念给我的工程带来了很大的麻烦,比如之前说的EqvJS框架,就因为“新手教程的顺序连贯性,当前理论无法支撑”,而不能去实现简单的signal变量-队列 等模型

比如,因为理论不统一,已经搁了半个月的CLI parser

fun main(a:Argv)=a.Dict<App>()
enum class Format{html,csv,pdf}

class App(
var input:File,
var output:File,
var fmt:Ln<Format>=Format.CSV,
):CLI("""
i Input file
o Output file name
f Format for output file
""", "") {
fun main() {}
}


一个能完全用语文描述的设计模式,尽管归纳整理的过程让人抓狂,相信结果也会是好的 😨

比如,绝句的OOP术语发展历史:

class|interface|object
thing物|class类|insta例
data物|type遇|^name名


这种反复横跳,最终把 sealed class, data object, enum class 全都整理为type,并让其与 class name 有了不易记混的适用范围

EqvJS的各种功能咋写,不应该是首先考虑的点。 我必须找到它们不可或缺的理由,即便这会让既定设计变来变去…… 或许这才是它们的「护城河」吧!
Forwarded from Solidot
李开复的开源模型被发现是对 LLaMA 的重构

2023-11-14 14:57 by 通灵师

李开复创办的 AI 公司零一万物(01.AI)前几天发布了它的开源大模型 Yi-34B,公布的基准测试结果显示虽然模型参数少于其它大模型,但性能更出色。在 Hugging Face 的讨论区,开发者很快指出 Yi-34B 其实是对 Meta 开源大模型 LlaMa 的重构,最明显的变化是改了几个名字。它的开源许可证也没有提及 LlaMa。它也没有公布调试数据,让其他人能复现其基准测试结果。零一万物的估值高达 10 亿美元,已跻身独角兽行列。

https://huggingface.co/01-ai/Yi-34B/discussions/11

#开源
Forwarded from Solidot
Blender 4.0 释出

2023-11-15 00:01 by 镜中世界

开源 3D 建模软件 Blender 释出了 4.0 版本。主要新特性包括:Cycles 支持光和影的耦合,支持光滑表面的路径引导,支持苹果 Metal API 的 MetalRT 硬件光线追踪,HIP 后端支持 AMD RDNA2 和 RDNA3 APU,默认 UI 字体 Inter,Linux 和 macOS 版最低要求 OpenGL 4.3,等等。更多可浏览发布公告。

https://wiki.blender.org/wiki/Reference/Release_Notes/4.0

#开源
👍2
duangsuse::Echo
cg($dyn) 生成了 ()=>(a=3,f=(a)=>(a+1),r0=[f(1),a]) ,运行正常 - just(a) - f()=a f just(0)() 那再来一个 with(DSL)$lex=[[], [just, [[a], [f,[[],[a] ]], [f] ]], [f,[0, 0,[just]]], [0, f] //“类型推导”差到不能直接调用 ] ()=>(just=(a)=>(f=()=>(a),f),f=just(0),f()) 是0而不是3 实际上,()=>…
这位 Pixel #PLT #dalao 真是太清醒了,十分 #recommend
http://rigaux.org/language-study/language-study-slides/img13.htm

https://note.sbwcwso.com/

大佬对编程范式的了解很广。我是在 https://blog.vero.site/post/noulith 的codegolf语言看到的 🤔这语言的 a append= x 统一了列表和"str"的不可变,但我不喜欢
ppt显示
class Eq a where
(==): a a -> bool
(!=): a a -> bool

不过绝句早就是关系式编程了,纯函数算什么(这几天新增的更改,SQL JOIN)
- Str find(:Str) Idx
[me.iEach]*2 .:
i0\<i, me[i0+i]==s[i], i==n: return i0

- Any`+`(u:Int) me.[Int too]+u
- Int desc me.{0 "zero" 1~10"small" or "{me}"}

这不比as,when is in 强多了,还有新的Fn表达式 🤔
val add: Int.(Int)->Int = {x,y->x+y}
at add Fn.[Int Int A2]:A+B

type 'u'Num
- `==`(:u) YN
type Any
- == (:Any?) YN
- `\=`(:[Any? me], :Any?) YN
Forwarded from Solidot
16 岁少年用 Blender 创建的动画赢得了英国 YAY UK 动画奖

2023-11-16 22:19 by 破译滑铁卢

面向英国年轻人的 YAY UK(Young Animator of the Year)公布了 2023 年的获奖者:16 岁的 Euan Garbut 赢得了 15-18 年龄组的最佳动画奖:他在一分钟内描述了未来世界机器人给人类制作食物的过程。主办方称,该奖项由英国动画和 VFX 工作室的专业人士评选,开源 3D 建模软件 Blender 让年轻一代制作出令人称奇的动画成为可能。Euan Garbut 称他用 Blender 制作动画,Davinci Resolve 用于颜色分级 (colour grading)。

https://younganimator.uk/winners
https://younganimator.uk/winner/1699875910225x437970782709919500
https://news.ycombinator.com/item?id=38282166

#科幻
duangsuse::Echo
#blog #meme 看到易语言还在VB++ 的范式旁徘徊 😅,并且觉得编程语言 是种必须特色和备案的「核心技术」… 我想复刻下这2007年文章的口吻: “绝句.ju”十分钟入门教程 作者:转载必须注明出处 亲爱的朋友,您愿意花十分钟的时间,来了解一门全新的编程语言“绝句.未公开”吗?(搞笑向 btw. 很难想象标准库与ES7接轨,拥有函续、不/可变数据集、流/叠加、双主语的绝句,还能用“合规”的记法支持VB7时代的“正统中文编程”👀 - 起点 将123写到屏幕 100.123:[x] …
绝句的py化已经走向了YAML和Go的形状,已经不像那个满是def和class的语言了

最开始绝句不满Kotlin的两点,就是 List<T> fun<T> ,. 不对仗,以及一大堆 (private)val 前缀不够简洁

但那时反思主要是在中文语意上,而且当时执意给let mut穿小鞋: 量i=0;变数,j初0;常数 PI=3.14

后来const被规范为常量折叠API,变数和量也就区分为 在,i 0。 在这时,j 0 。这时主要的麻烦是 at: a 1; b 2: +1 的最佳实践有:块 时很难看

随着:块渗透进print、流控、异步…… 开始流行一种 - Dog bark (say: 'what {sound}'); - f'x' as:(x+1) 的全表达式风格
这种有趣的断言,把整个语言分为「式算折词典」5级, as: 就是“一折”能新建变量和ret的算式, 因此尾递归 也能以极其廉价的方式编写
- id'ab'(b=0) as:
now(a+1,b-1) : b==0
a

于是,现在的变量声明,变得符合人类习惯了。而且走向彻底的隐类型--伴随着对OOP的彻底分析,从而知道只有在type接口里,必须能写明类型

- 比赛 std.[Int as]:
红队 2
篮队 10
场 Inc.[Str Ln](1):"List<String>"
max(红队,篮队)

- 赋值 做,
a [{0~9} ]!
a加10

这时 0,i;求和
这时i<a.n,
求和 =,+ a[i]
i去右移
说,'{求和} {a}'


然后,我把易语言用户的猜数字又写了一遍
将123写到屏幕
100.123,[x]
(将x)写到屏幕


名 'T' `将`(:T) “名记平权”
- [文 将]`写到屏幕` 说,'{它}'

(0~10)(x), “如果(0 < x < 10)”。
(0~~10)(x), “如果(0 < x \< 10)”
(0的右~10的左)(x), “如果(0 \< x \< 10) ,因为数学(>18) 不自然,我换了”

这时,a 1;b 2
变数去换(a、b)
""{a==2, b==1}!
👎1
#statement ☺️绝句是帮我「改良编程」的望远镜,我现在设计的JS变量绑定框架、CLI结构体解析器, 都需要它的理论完善,才能在简洁+完备上打败既有框架

我不会因为太慢,或者貌似很「不切实际」,就暂停完善绝句模型。 在产生任何设计问题前,就该把错误扼杀掉--而不是日复一日上StackOverflow 去堆砌GPT都能写的脚本。
这是我编程的骄傲,是我口中「编程」的定义

也是因为它有太多值得我学习的地方。比如 (FS .txt/[a]):[str] str("Jack"~~"Rose") 就可以完成编解码+IO 。缺少了 Eq(两换),停留在 fromStr/toStr 的认知,是做不到这个程度的

就比如4天前的Svelte5 大会吧,

ww.eg=({width=10,height=20, it},

w1=width.as(x=>x*1),
area=Saw((w1,height)=>w1*height )(w1,height),
)=>
div(
(s,e)=>{Saw(console.log, area); 1..s.then(it({width:20})) },
area
)

都能写得这么规范,要React那些函数式框架有什么用呢?

说白了,就是js数据模型的缺失,导致jsx和vue那些模板一套一套的。 稍微允许[a,b,1.] 变量入驻数据,给let[]= 匹配加点料,DOM本身就是MVVM框架

#recommend 重构浣熊
https://refactoring.guru/refactoring/when
#PLT #OOP #design

☺️ 绝句的OOP部分完结了。 包含type,name,named 「典-构造器 interface」「名-class」「曾名-加构器」3种概念

type 类似Rust的 enum Either{A(A),B(B)} ,但可以外部扩展

type Zoo impl??
Zebra(:Name,:Age) //<>列方向是cols
Elephant(:Height) //^v行方向是Conds

type Zoo
power Int
Tiger(); Lion() //和enum WithData()一样,生成构造器

type Inc Int{>0} //类型只是N个字典+几个新词的组合
type 'T'Pairs [T T Col2] //所以,没有啥typealias

named 类似inner class,但可以外部扩展 Point(0,0).Arc(10)

type Any
Point'xy'(_:Int)

named Point.Arc(r:Int) //加构器
- draw 画圆

好吧,写错了,Any的Point构造器,理论上无法继承:type数据间不可以组合

但name呢? 传统的 abstract class有啥用?? 我很想扔掉它们,我在SO上搜了很多,但没人说服我为何「组合优于继承」(甚至这句话居然是OOP专家说的

type Geo
- draw

name Point'xy'(_:Int) Geo
^type
- flip Point
^type impl
- draw 画1px圆

这个语法是为OOP兼容保留(override fun 啥的太扯了),好像比接口多提供个构造器、protected复用(被Utils取代了)、final等「更准的函定性」

但它对语意真的没有啥贡献? 只是像Scala那样,简单把同名的 struct+trait 连起来,而且逼你单继承??

我是更看好Rust的impl式多态,包括py的Protcol,虽然很复杂 {}构造器也很乱,但类型的限界都很清楚,不像今日JVM C# 这些接口子类分不清的

---

其实我清楚,class比接口允许「更准的构造顺序..函定性」,它根本就是--js的传函数字典 ,或者说类=可改传的多项函数 接口=dyn字典

如果你写过愚蠢的 android.view.Listener ,会发现它们乐此不疲地把本该叫lambda()-> 的变量搞成override,所谓的设计模式。。。

^type 就是默认参数的另一种写法而已,而 ^type impl? 可以选择不封闭既有值

绝句主张函数与Fn值的统一,但考虑 - f'xy' 和 F.[Int Int a2] 本不一致,无法在语法上实现静态-动态类型的交融

期望未来能找到更彻底的「解决语法」(想到一个,除了构造器、加构器, 还有 type mv(src, dstFile) 这种「默认参器」
只要我换成 name mv(src, dstFile) ,是否就把函数和class联系起来了? 😋


btw. 绝句的结构写起来真是太爽了,可惜表现力比不上纯数据的JS。 希望在词级 算式级 也有更新的发现

btw. 我打算把语言改叫《海经》了,因为这个时代,已经不适合在单句和算式级别,纠结代码怎么写了。 手写的代码都在词乃至类型级别, 而且绝句一开始是为逗句缩进起名, 但如今它的对象和集合模型比缩进有趣一些
duangsuse::Echo
#PLT #OOP #design ☺️ 绝句的OOP部分完结了。 包含type,name,named 「典-构造器 interface」「名-class」「曾名-加构器」3种概念 type 类似Rust的 enum Either{A(A),B(B)} ,但可以外部扩展 type Zoo impl?? Zebra(:Name,:Age) //<>列方向是cols Elephant(:Height) //^v行方向是Conds type Zoo power Int Tiger();…
啊,真好。问题解决了 🥰

name Point'xy'(_:Int)  Geo
^type
- flip Point
^type impl
- draw 画1px圆

type draw默认参(x=0,y=0) Geo
- flip 不翻转
- draw 同上

draw :.
-y 10
-flip 翻转函数


这样让默认参器基于函数值,OOP和FP,二者就对仗了