duangsuse::Echo
412 subscribers
3.85K photos
105 videos
574 files
5.14K links
duangsuse技术相干订阅
这是 @duangsuse 与技术有关的发布频道
duangsuse 的另外有 throws 闲杂频道
@dsuset
转载频道 @dsusep
duangsuse 有coding,github,gitlab帐号和bilibili帐号

极小可能会有批评zf的消息 如有不适可以退出

suse的小站:https://piped.stream
ps 另有别名 popf.rip
ʕ•̀ω•́ʔ✧ 🐶🍎🏠生死🐜
(>ω<)岂因祸福避趋之 一鿕
Download Telegram
duangsuse::Echo
作为在“计算机还未发明”时代的编程者 #history Dijkstra 的名言: 编程无关计算机,就像天文无关望远镜 简单是可靠的先决条件,不是可靠的牺牲品 编程的艺术就是藏绌的技术。 程序员很清楚自己的能力是有限的,所以他对待编程任务的态度是谦卑的,重点是要象逃避瘟疫那样逃避 “聪明的技巧”。——1972年图灵奖演讲 我们所使用的工具深刻地影响我们的思考习惯,从而也影响了我们的思考能力。 根本不可能用一把钝斧子削好铅笔,而换成十把钝斧子,会让事情变成大灾难。 -- 「使用了 GOTO 语句的程序员乞求…
#py #math 《优雅不是奢侈品》
“如何才能让编程者们相信,简单性和清晰性——简而言之:数学家所说的“优雅”——不是可有可无的奢侈品,而是决定成功与失败的关键因素?”

― Edsger W. Dijkstra,“计算机著作精选:个人观点”,第 347 页。

简单明了的代码就是优雅的代码。这些都是代码中非常理想的属性。Dijkstra 又补充道:

“……在软件不可靠性的情况下,最大的成本因素是复杂。
一个可靠的(因此简单的)程序的开发和使用成本,比一个(复杂的因此)不可靠的程序要廉价。”

人们将初级代码误认为是简单清晰的代码,在我看来,这是非常危险的。

我不懂中文。你认为我看着中文书页,并断言“这是不可读的!”有道理吗?我需要做的是承认我看不懂中文,而不是中文不可读。

有人抱怨“阅读他人代码会增加额外的复杂性”,Tim Peters 对此做出了回应

“当有人使用你不理解的功能时,不关心。比学习新东西更容易,毕竟不久之后,唯一活着的程序员将使用 Python 0.9.6 <wink> 的一个易于理解的小子集进行编写。”

当你学习更多的语法、更多的函数、更多的模块、更多的数据类型等时,你就会了解更多的工具来解决你的问题。

工具带上的工具越多,当您需要做新的事情时,您就越有可能知道 适合工作的完美工具。简单、清晰、优雅;所有这些都会自然而然地发生。
(: 考虑到AI可以帮你了解工具,不必害怕搜不到写法而搞出「又慢又长的代码」了

复习你的一段旧代码,且知道有更好的方法来做到功能点,可以修改旧代码以包含新的改进的解决方案。只会让你的代码更加清晰和优雅,永不止步

假如你惯用的代码是语义易于理解的代码,所输出可重构代码是可以随着时间的推移,而改进的代码。


👀这个作者的观念很好,但审美真的…… 和他所说的可读至上有冲突

list(itertools.chain(*list_of_lists))
这是不能替代 [[1], [2]].flat(depth=1) 的,
chian 这个词对flat的反映很隐晦,iterators.flat 的功能会更多(文件树..),自己造词,是很蠢的做法。

(a b c) ← 1 ¯4 3
(2×a)÷⍨-b(+,-)0.5*⍨(b*2)-4×a×c

等于
import numpy as np
a,b,c = 1, -4, 3
(2*a) / np.sqrt(-b + np.array([1, -1]) * 0.5*np.sqrt(b**2 - 4*a*c))

⍨=sqrt
b(+,-)= (+x,-x) (b)
np.roots([a, b, c]) #ax^2 + bx + c = 0

奇怪的是,翻译过来居然错的,少算个sqrt又对了……
鬼才会觉得”数学语言“ 比py3好, 即便你去拿堆 \TeX 去写,也只是徒费事,对思考毫无益处。甚至不如去掉乘除符号的多项式”强类型“

无法重构的符号,就等于是白纸,谁都只能复制,只那几个用途而不能创作。 毫无价值 😅


我今天在设计 EQ 的 Reload(Suspense), Tab, list 增删动画, evalFun 的常量计算时,就一直在践行这些原则。

比如, Vue 的 TransitionGroup 看起来十分复杂,但只要记住每项xy的位移,以在css渐变的同时 做EQ所支持的元素进退场 就OK了; 这些需求也强化了 ondiff=(mov,add)=> 的合理性,做到 1+1>2
(EQ efx {fly:{} } 支持横纵四向,所以没 .list-enter-active{} 手动实现的那么直接 ,但单靠translateY 就能忽略上部的增删。
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 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

cron = BackgroundScheduler(jobstores=sqlite)
.add_job(print, 'interval', seconds=5)
.start()

并行 multiprocessing: #2
with mpire.WorkerPool(n_jobs=5) as pool:
results = pool.map(getFiles, range(10), progress_bar=True)


- 修改语法ASDL,实现 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 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')
— 仅供学习,import 语句本可以是局部。 (GPT怎么变蠢了
#ts
#1为什么静态类型的C,Go,C++ 不是弱检查 就是太复杂

代码练习: 不需要 type WTF<> = 就可以检查 htmlTag, funcPipe, nthArg, printf("\d") 等调用的类型

int[10] 的实质、 #Kt 类型推导的原理
duangsuse::Echo
#tech #recommend #js 🧐从『函数』的定义就能知道,#编程范式 的发展史 👉 地址symbol、子程序void()、对象 SAM object、算式 x=>y 或文档树、 模式查询select [a b], a=1|a=2 : x86无结构:是弱检查指针、面条流控、256项字符集,定长数组,栈分配,加载到内核mmap(rwx..不能为READ 段错误) 是dll内地址 C过程式:是向调用栈赋值后跳过去等返回,是子程序 C#OOP:捕获了局部变量(cellvar,可变)、原型虚表到t…
#py 周刊

- Excel 支持 import pandas, statsmodels, matplotlib / seaborn 了, Guido 亲自推广(可能是云计算,要订阅)
- PowerToys添加“可交互”的截图
- Google 等各种大公司的技术blog #list
- #apple #design 设计师法则
- #learn 看美军的脏话官话(F-words)学英语 。

- 单靠 #sql 如何保存数据
- APL 里有的 py 基本列表处理式
- FastAPI 最佳实践 list
- async stdlib: 对比理解各种流行实现

- fixit linter: py 版本的 IDEA 自动迁移 (无AI), cffi: 我用什么 C parser 链接到.h 文件
- 用 difflib 开发一个文件比较工具
- KeymouseGo, ahkunwrapped py : 类似按键精灵的鼠标键盘录制和自动化操作
- quivr:生成式 AI 打造你的第二大脑, trafilatura: GUI 文本/评论 爬虫
检索非结构化的信息,可以理解成支持人工智能的 Obsidian。可以处理各种形式的文件如文本、图片、代码、音频和视频等,依赖于 ChatGPT、Docker、Supabase

- FastAPI + SSE new EventSource('/http流') API 下发文本消息
- 用py编写代码高亮图片生成 (carbon.now.sh ..)
- Streamlit 地图高亮生成
- Streamlit GPT4文件摘要工具

- Mojo #ai #rust: 对Py的渐强类型&优化 的语法改进 [waitlist]
def mandelbrot_0(c: ComplexFloat64) -> Int: #CPU FMA优化, 1Mojo = 15Numpy = 89CPy
z = c, nv = 0
for i in range(1, 200): #清晰度
if abs(z) > 2: break
z = z*z + c
nv += 1
return nv

👀 Rust 确实是资本的语言,融资1亿刀乐

#code #algorithm 埃氏素数筛
def gen_primes():
"""Generate an infinite sequence of prime numbers."""
D = {}
q = 2
while True:
if q not in D: D[q * q] = [q];yield q
else:
for p in D[q]: D.setdefault(p + q, []).append(p)
del D[q]
q += 1
duangsuse::Echo
#py 周刊 - Excel 支持 import pandas, statsmodels, matplotlib / seaborn 了, Guido 亲自推广(可能是云计算,要订阅) - PowerToys添加“可交互”的截图 - Google 等各种大公司的技术blog #list - #apple #design 设计师法则 - #learn 看美军的脏话官话(F-words)学英语 。 - 单靠 #sql 如何保存数据 - APL 里有的 py 基本列表处理式 - FastAPI 最佳实践 list…
#py 周刊
#recommend #tool 带有 "Android 子系统", taskmgr,... 的网页版Win12 demo 🎨
#algorithm Hello Algo 多语言实例
#tool EasySpider +可视化编程
#android 高级包管理器
js: await using fp = openFile()

Flask 深入探索: 请求上文、会话、CORS
fastapi-users:开箱即用的 FastAPI 用户管理库
Django 发送带有验证链接的电子邮件
FastAPI 使用 Tailwind CSS + SQLAlchemy
Streamlit 初学者指南: 类似 Juypter UI
Polars:快如闪电的 #rust DataFrame 库, 优化表达式和上下文、惰性
dara:轻松创建交互式 Web 图表程序 📊
Python Asyncio 之 socket() 网络编程理论详解

可视化+深入学习数据结构与算法:C++、Swift、Python、Java、C#、JavaScript
bisect,heapq 如何保持数组有序
upiano:命令行里的钢琴 FluidSynth
探索国家/文化多样性:Pyetho — 用于列出国家及其语言
深入介绍 Python 3.12 中的永生对象(如 None 关键字和小整数)
下划线的十种用法(REPL, match, i18n)


7、h2ogpt:私人文档+图像的问答 PyMuPDF 识别与提取表格
8、refact:开源编码助手,支持自动补全、代码重构、代码分析
9、dify:创建自己的 AI 应用 +CN
duangsuse::Echo
#py 周刊 - Excel 支持 import pandas, statsmodels, matplotlib / seaborn 了, Guido 亲自推广(可能是云计算,要订阅) - PowerToys添加“可交互”的截图 - Google 等各种大公司的技术blog #list - #apple #design 设计师法则 - #learn 看美军的脏话官话(F-words)学英语 。 - 单靠 #sql 如何保存数据 - APL 里有的 py 基本列表处理式 - FastAPI 最佳实践 list…
#py 周刊
HackerNews 等新闻聚合
本该辅助思维的工具,如何异化我们
pysentation: 在终端展示你的py代码
js anti-debug: 尝试阻止全编程界最优秀的 DevTools,
https://github.com/theajack/disable-devtool/blob/master/src/detector/sub-detector/func-to-string.ts
v0.dev: 生成预览和迭代HTML设计

Mojo 🔥 Linux版本可用, 自带 Tensor(nd),DType 支持
(ps. 这人怎么 parser 都不会写啊, (1+ 换行 1) 时解析失败,等待下一行不就行了吗? 他只是写了个众所周知的hint
这个 let var 是干嘛啊(还有Java式的 class Benchmark..),Python 简洁的优势都丢了

🤖 Falcon 作为当前最大的开源大模型,有 180B 参数,在 3.5 万亿词的 TII RefinedWeb 上训练
jieba的替换: pkuseg-python , hanlp

#wasm #plt 500行迷你C编译器
🥧 半手工绘制 plt.极座标直方图

📈 #algorithm min/maxHeap 有序列实现
#bin Bloom filter 集合 位运算实现 —性质类似WeakSet, 非常快

🐳 用Podman部署py包 [维护pip包]
📝 使用 Protobuf message{} 储存和传输
protoc --python_out=. .\music.proto

from music_pb2 import Library
Library().add(music).K=V
lib.SerializeToString()
lib.ParseFromString(f.read())


compress:基于个人语料库的快捷输入工具
gpt_academic #zh gui : 为 ChatGPT/GLM 提供实用化交互界面
GPT 学术优化,特别优化论文阅读/润色/写作体验,模块化设计,支持自定义快捷按钮&函数插件,支持 Python 和 C++ 等项目剖析&自译解功能,PDF/LaTex 论文翻译&总结功能
#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: ...
#py 周刊

在单核情况下加快 Python 代码速度,提速 2339/554us=4倍
提速一个低色深保真算法,涉及的一些概念:指令级并行 (ILP)、分支预测、单指令多数据(SIMD)、内存层次结构等。

6 件可以用 Functools 模块做的很酷的事
@cache 缓存、@total_ordering 让你少写排序方法、@singledispatch 函数重载、partial() 颗粒化传参、@wraps wrapt装饰器、reduce() 函数。

7 个极佳的 Python 身份验证库
Authlib、Pyjwt、Flask-login、Django-allauth、ItsDangerous、Python Social Auth、Flask-security

Python对象模型(大部分)由语法糖组成
Brett Cannon 写了一系列关于“语法糖”的博客,并创建了MyPY,解析了 80 多个语法糖特性。locals(), 闭包赋值所致的 nonlocal 问题, type(X).__neg__(X); type(X or Y).__add__(X,Y), raise 替代break

为什么有这么多 Python Dataframe?
Pandas、Polars、Dask 和 PySpark 的区别在哪?作者认为是电子表格、关系数据库、二维数组/矩阵、对象 的便利性不同

用$ Radon 来衡量计算圈复杂度等指标
计算圈复杂度、原始指标、Halstead 指标、可维护性指数,可用于 CI 集成,可与 Jupyter Notebook 一起使用。(star 1.5K)

CPython 在处理字符串时使用了布隆过滤器,比如 splitlines()、strip() 两个函数(不到 50 行 C 代码)
Python 中 UUID 的使用
from uuid import uuid1() 利用系统 MAC 地址与时间戳生成 uuid;uuid4() 生成完全随机的 uuid;uuid3() 和 uuid5() 基于常量命名空间和变量名生成 uuid,前者使用 MD5 算法,后者使用 SHA-1 算法。

深入理解 pytest.main():Python 测试框架的核心功能解析
这个非常实用的函数,用于从命令行运行测试集或者以编程方式运行测试。文章探讨了它的用法和一些常见的应用场景。

toml-bench:在 Python 中该用哪个 toml 库?
比较了 toml、tomli/tomli_w、tomlkit、pytomlpp、rtoml 和 qtoml 这几个库,考察它们在处理数据时的行为表现以及性能。

迎接更快的 SymPy
SymPy 是一个用于符号计算(symbolic computation)的库,可以处理代数、微积分、离散数学等领域的问题。

使用 import-linter 让你的 Python 项目架构更整洁
在依赖关系治理方面,通过提供各种类型的“契约”,让我们得以将项目内隐式的复杂依赖关系,通过配置文件显式的表达出来。文章介绍了它的入门使用,以及 6 种修复依赖关系的技巧。
# 分层:resources -> clusters
# 调整前
resources -> clusters
clusters -> resources.cluster_utils # 应该是 clusters.utils

quasiqueue:管理长时间运行的多进程作业
可处理进程创建和清理、信号管理、跨进程通信

logparser:用于日志解析的机器学习工具包
自动从非结构化的日志信息中提取出关键的表格信息。(star 1.2K)

llama2.mojo:纯 Mojo 版本的 Llama 2 ,将性能提高了近 250 倍
作者将 Python 版本的 llama2.py 移植成 Mojo 版本。(star 1.1K)
duangsuse::Echo
#design 但离我理想的编程语言,还要删掉一些 - 内联取代break,tailrec 。{}块支持的跳转才自然 - Nd(矩阵) 规避循环 - 协程规避catch{throw},yield 。回调天然能“级联返回”和暂停 - Var.= 取代赋值解构。“可变量”是闭包里就存在的。六七十年前Lua,Fortran,Lisp,Prolog 都支持的协程矩阵DSL解构(即类型推导),今天拿出来加点不良不莠的术语😅居然能算高级特性 ,心智模型和发展观被Java,C++荼毒成什么样了 既然catch,while…
#py #learn 语法的背后
class C(A,B): 是元类type的单例(在这里C:B.元类) ,语义是 exec(body, globals(), locals:=T.__prepare__(k,[T0],Defs:={})); mro=types.resolve_bases; cls = {*Defs, *decorator(meta())}
而def 们在globals+__class__下执行,还要设置qname,doc(第0行""),type annotations。 (教科书式的“反射”接口)
- @staticmethod f 是利用实例/类 getattribute 时调用的 f.get(obj,T) ,因此 (str.strip)(" ") 仍然正确(没有"js".bind("") 那样自由又强制..)
- getitem(slice(A,B,step)|tuple), getattribute 混淆就是JS对dict 的做法。当然JS没有tuple可以滥用,也没Pair(AB),没可重载的 isub -=
- is 用于检测id()相等,对abc123YN? 显然是一致的,而 eq,lt 是另伙,支持交换律的。@functools.total_ordering 可以从<支持<= (btw. 怎么连缓存eval都莫得啊)

再谈声明
- @decorator(f)(litArgs), with enter exit 是我最讨厌的一种def, 是因为Python对(多行)lambda算式的轻视:以为Excel+生成式能表达一切,和Py2时的 print>>file, 一样。想发展,不够用吧?想省1字的括号 😅因IDE妥协
- lit={}[] 也是要创建 dict((k,v),) 调用的,和JSON读写器很像,所以“序列化很难”
- importlib, sys.path 是这个语句实际修改 globals()的方法。注意 a.b as b 是模块而 from a:b 是类,from PIL:Image 为啥可行呢?因为包init的 import ..sub 是公开的
- coro.await() 是一个靠next()的"Thenable",但它没有ES6那样的默认(最异步的DOM)执行器,甚至没规范 yield Promise,只能 aio.run(main())

while(p){} ok() 实现的if在汇编是 A: if(!p)goto B; goto B;if(p)goto A; B:ok ,加上init有三块BB,就像 a||b, a? a:b 一样。直接做break理论和switch一样(你该知道工程界只有when ,也没if elif)

报错的显示,当然是从调用栈 cause 链表出来的,而JS更像 sys._getframe() 。 finally: 加在return前面,或者说 try catch 都是闭包而finally调用它们
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 实际上,()=>…
#py #code #recommend 说到有趣的py接口,有个 iself()
def read_as_io(f):
class T(io.TextIOBase):
read=lambda o,size: f(o)
return T
-匿名对象
之前写贪吃蛇 snk.c 就用到链表
不想缓冲区溢出的话Vec还是好的。C里你要实现[] 需要懂链表/strcat, rust 里你写 Vec<i32> push 就好了
Rust的生命周期现在基本不需要考虑(尤其是对应用开发时), type infer 是非常自动的

# 匹配左右括号 paren
_c01 = {'(':')', '[':']', '{':'}'}
def eat(s,c1):
for c in s:
# 如果是左括号,就把它压入栈中
if (c1:=_c01[c]): ifErr='行号'; eat(s,c1)
elif c==c1:return # 如果是右括号,左括号便与之匹配
else: assert'','多余项而栈空' #仅支持纯括号文本, 否则要_c10,反向
assert c0=='eof','栈尚不为空'
-S表达式

optab={[';']:-1, "=;+ -;* /"}
exp=(s/*token o算符x单项*/, l/*evels 大则紧,深 *<+ */)=>{
let o,x=()=>add(Number(s())), ord=[],add=x=>ord.push(x),
at=O=>{let A,B; x()
for(o=s();(A=l[o])>=(B=l[O]);)if(A!=B)at(o);else{add(O);x(); O=o;o=s()} add(O)
}
at(";");return ord
}
-运算链

叠加整理了下思路 一个 T(x).f(arg): T 的链,并试图兼容还未f()的T
data Adder(list:Ln<Int>)
- add()=list(Sum).sum
- [].as( Sum(0, (A,B)=>A+B) )
["x"].as( Sum(it, (A,B)=>A+B) ) 就相当于 reduce,fold的 ,不需要class封装,用于支持分组过滤

在没有this的语言里调用链挺好玩的,但java里都有 new ArrayList(){{add(1,2); add(3)}} 这种用法
Player.MP3("")|:
time=length*.5
title=" hello ": "## ${trim()}"
start()


有趣的脚本语言:
Vlang (Go+Rust)
Esno (滤镜图)
Gravity(Kt)
class Vector{var..}
var v1 = Vector(1,2,3)
"\(v1+Vector(4,5,6))"
Wren(ES6+C#)
class Wren {
flyTo(city) {
System.print()
f=Fiber.new { //有点像Duktape
["small", "clean", "fast"].each {|word| Fiber.yield(word) }
}
while (!f.isDone) System.print(f.call())

coco Py(函数式)
def int_map(
f: int -> int,
xs: int[],
) -> int[] =
xs |> map$(f) |> list

Latte
class User(id: int, name: String)
object Singleton
interface Supplier
def supply
fun sum(a, b)
for i in 0 until a.size
println(a[i]+b)

val (x,y) = Bean(1,2)
o match
case People(name, age,Bean(x, _)) if age > 20 => ...



分词器
Lexer=kv=>{
let re=Object.keys(kv).map(x=>`(${x})`).join('|'), mf=Object.values(kv),m,i,j=0
re=RegExp(re, 'gy')
return (s,ontok)=>{
for(m of re[Symbol.matchAll](s)) ontok(
mf[(j=m.findIndex((x,i)=>null!=x &&i!=0))-1](m[j]), (i=m.index), i+m[0].length
)
}
}

f=Lexer({
'\\d+':parseInt,
'[a-zA-Z]+':s=>s,
'\\s+'(){}
})

rep=(txt,on, n=null)=>f(txt,x=> (x==null)?on(' '):
(x.substr)? (on(x.repeat(n)),n=null) :
(n=x)
)

buildAry=(f,a=[])=>(f(x=>a.push(x)), a)

rnSel=(e,A,B,o=new Range)=>(o.setStart(e,A),o.setEnd(e,B), o)
rnHL=(e)=>
e.oninput=()=>{CSS.highlights.clear(); f(e.textContent, (x,A,B)=>{
let on=tag=>CSS.highlights.set(tag, new Highlight(rnSel(e.firstChild,A,B)))
;(x==null)?0:
(x.substr)? on('str') :
on('num')
})
hout.textContent=buildAry(rep.bind(0, e.textContent)).join('')
}


document.write(`
<style>::highlight(num) {
background-color: #f06;
color: white;
}
::highlight(str) {color:red}
</style>
<div contentEditable id=hl></div>
<mark id=hout>
`)
rnHL(hl)