Forwarded from dnaugsuz
算了呗,凭他们对 Python 元编程动态性的那一点理解,俺继续做俺的项目,不是第一次了
就是很好奇不是立刻封的,那是为什么封的呢……
就是很好奇不是立刻封的,那是为什么封的呢……
Forwarded from dnaugsuz
一群不干好事只晓得语言鄙视链的人,以为自己多聪明,聪明反被聪明误
以为自己能弄出那些别人早已组织好公开的 pattern 就多了不起,其实不过是一群 copycat ,真正搞懂了什么呢
以为自己能弄出那些别人早已组织好公开的 pattern 就多了不起,其实不过是一群 copycat ,真正搞懂了什么呢
Forwarded from dnaugsuz
当然啊,他们的管理员特别不好相处,肯定是有些激进的管理员把我封了,之前就有过争议,懒得再说了
Forwarded from wjm
捕蛇者说
聊聊编程、程序员和 Python
duangsuse::Echo
哇原来我之前在 #Haskell 里看到的就是这种…… 这个大佬很厉害 https://teek.readthedocs.io/en/latest/_modules/teek/_tcl_calls.html#init_threads def _pairs(sequence): assert len(sequence) % 2 == 0, "cannot divide %r into pairs" % (sequence,) return zip(sequence[0::2], sequence[1::2])…
from itertools import islice
def zipWithNext(xs): return zip(xs, islice(xs, 1, None))
list(zipWithNext([1,2,3]))
==[(1, 2), (2, 3)]
#Python
关于 fibonacci 数列, #Haskell 里容易定义:
fibs = 1:1:(zipWith (+) fibs (drop 1 fibs))
这是基于 Haskell 的可复现(无副作用/纯)序列+惰性求值实现的,而 Python 里若用等价的 fibs = chain([1,1], map(operator.add, zip(fibs, islice(1,None)))) 不能成功——表达式组织出generator对象的关键在于 map(add, zip(xs, xs[1:])) 里 zip 的流视口,它肯定要引用靠 zip() 本身生成的数字。
再看 Haskell 的定义等式,其生成式缓存是全局的(当然实现法有很多种但),可以理解为 fibs, (drop 1 fibs) 持 length -2、-1 的索引(此时就没有“预支”流导致循环引用的问题)
fibs = [1,1]
def _fibs_gen(i,n):
fibz = islice(fibs,i,None)
fibz1 = islice(fibz,1,None)
fibs[i:i+n] = map(operator.add, zip(fibz,fibz1))
def gen(buf, op, n_chunk=5):
i0 = 0
while True:
op(i0, n_chunk)
i0 += n_chunk
yield* buf[i:i+n] 如果想写在一行内也可以,但需要
iself() 提供一个隐式上下文的流位置(才能引用自身 不然只能从流头开始),既然这样也就不得不使用 gen() 生成带视口的流了。举个用例,当然索引的可变 boxed ref 弄 it=[i] 就行,关键在于让惰性流(其参数 lambda 的参数1)知道自己在对应 iself() 的什么位置就行。
fibs = iself(lambda fibs: chain([1,1], map(add, zip(fibs, drop(1,fibs)) )) )Haskell GHC 可能没有这样简单,或许它是对 (drop 1 fibs) 进行了仅 1层 的惰性求值?这样性能很差,但写起来更有意思
(不对…… 理解错了, (drop1 fibs) 实际上不需要对「未求值的项」进行计算,它从一开始的 (1:1:) 就已经落后于序列尾2项了)
(所以说有些看起来了不得的东西原来只是太晦涩、不直接了吗……到底还是要缓存)
一般来说
fib 1 = 1
fib 2 = 1 -- (f 3) = (f 2)+(f 1)
fib n = (fib n-1)+(fib n-2) #Haskell #code这是递推法,理论上无缓存性能很渣(当然真的函数式里 memo,cps 属于基础),而上面实现的 py 版则是动态规划(迫真)
Vegard’s blog
General Parser Combinators in Racket
How to implement a general parser combinator framework which handles left-recursive and ambiguous grammars.
Forwarded from dnaugsuz
duangsuse-valid-projects/TkGUI: Declarative tkinter wrapper for Python, features quick prototype & codegen
https://github.com/duangsuse-valid-projects/TkGUI
我写的这个 GUI 封装,你们怎么看🤔
我觉得如果能支持 GTK 和 Qt 后端就更好了
https://github.com/duangsuse-valid-projects/TkGUI
我写的这个 GUI 封装,你们怎么看🤔
我觉得如果能支持 GTK 和 Qt 后端就更好了
GitHub
GitHub - duangsuse-valid-projects/TkGUI: Declarative tkinter wrapper for Python, features quick prototype & codegen
Declarative tkinter wrapper for Python, features quick prototype & codegen - duangsuse-valid-projects/TkGUI
Forwarded from dnaugsuz
这个玩意支持用稍作修改的语法进行调用/取值,然后就可以生成等价的代码,能够用于实现0开销抽象,可以缓存代码的🤔
有没有人感兴趣如何在不影响性能的前提下进行元编程,编写能生成冗余代码的代码。
有没有人感兴趣如何在不影响性能的前提下进行元编程,编写能生成冗余代码的代码。
Forwarded from dnaugsuz
Forwarded from dnaugsuz
感觉这个想法没错,想到流处理总觉得和 SQL, C# LINQ 怎么有点关系……
Java 里可以自己查 doc 吧(反正我不喜欢它一大堆class 的 OOP 风格),应该会有毕竟 select 的需求常见
Kotlin 里你若不想 .map { it.a to it.b } 那好像也有能 collect (partion, groupBy 类) 的做法,不过一般还是用 mapTo 和 forEach 这种带 destination collection 的操作吧
Java 里可以自己查 doc 吧(反正我不喜欢它一大堆class 的 OOP 风格),应该会有毕竟 select 的需求常见
Kotlin 里你若不想 .map { it.a to it.b } 那好像也有能 collect (partion, groupBy 类) 的做法,不过一般还是用 mapTo 和 forEach 这种带 destination collection 的操作吧
Forwarded from dnaugsuz
遇到这种情况是变过程式还是保持函数式这个都各有做法啦,但这个实际上是至列表的归纳操作,分成两个流算反向组合,目的不完全一样
Forwarded from dnaugsuz
不合常理啊,collection 的 size 本身就是组成其结构的部分嘛,比如 C/C++ 字符串都是 buffer ,C 选择 NUL terminate (因为是序列)所以 strlen(s) 是线性复杂度, C++ string vector queue array 都是带长度和 end() 指针的呢
就我个人的写法 for (int i=0; i<n; i++) 其 n 未必是单变量,而这种循环结构也可以(从 i<n 变 i!=n ,甚至转过来 i!=0 什么,后来我还是选择最短的)
像循环肉眼可见不变量是否提升,如果不常规我会做,一般也就是那样写。
我也觉得优化什么的可以别太放在心上(而且现阶段优化也的确不好且不可测)
就我个人的写法 for (int i=0; i<n; i++) 其 n 未必是单变量,而这种循环结构也可以(从 i<n 变 i!=n ,甚至转过来 i!=0 什么,后来我还是选择最短的)
像循环肉眼可见不变量是否提升,如果不常规我会做,一般也就是那样写。
我也觉得优化什么的可以别太放在心上(而且现阶段优化也的确不好且不可测)
Forwarded from dnaugsuz
挺好的,分词开处理下格式问题,然后合算字符串相似度?
再细点大概就是 nlp 看谐音吧……
再细点大概就是 nlp 看谐音吧……
Forwarded from &'a ::rynco::UntitledChannel (Rynco Maekawa)
https://twitter.com/johnregehr/status/1347231926780715008?s=20
“我在考虑要不要给我这个避免结尾逗号的宏申请个专利。”
“我在考虑要不要给我这个避免结尾逗号的宏申请个专利。”
Twitter
John Regehr
thinking about applying for a software patent for my macro for avoiding trailing commas
Forwarded from dnaugsuz
CSS连接数据库的方法什么时候可以公开?
22:54 LV88码帝绯末
我在优化,事务回滚还有点问题
我测过,性能秒杀php-pdo
不过对浏览器要求比较高,IE兼 容也是个问题
语法是这样的
属性支持数据库返回的值进行渲染
height语法有点问题,我忘记加limit了
现在就是事务回滚有点问题,因为是页面直接渲染,我还在想办法
把访问压力都交给客户端,服务器性能负载大幅降低,为运维降本增效
这样的好处还有就是,数据库连接是纯开放代码的,毕竟是浏览器渲染,互相爬内容更加方便,创造一个互利互惠的共享互联网生态
以后可能spider都因为我这个技术灭绝了
22:54 LV88码帝绯末
我在优化,事务回滚还有点问题
我测过,性能秒杀php-pdo
不过对浏览器要求比较高,IE兼 容也是个问题
.body db-mysql['localhost',3306,{
content: db-[select id from height: db-[select height from
}语法是这样的
属性支持数据库返回的值进行渲染
height语法有点问题,我忘记加limit了
现在就是事务回滚有点问题,因为是页面直接渲染,我还在想办法
把访问压力都交给客户端,服务器性能负载大幅降低,为运维降本增效
这样的好处还有就是,数据库连接是纯开放代码的,毕竟是浏览器渲染,互相爬内容更加方便,创造一个互利互惠的共享互联网生态
以后可能spider都因为我这个技术灭绝了