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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
𝔽𝕣𝕠𝕤𝕥
会,则正确的路是右,否则是左边
这个答案感觉应该也是对的,所以这个问题实际上很简单

关于生路在左边“是真的”,
B撒谎、A诚实,生路在右边
B诚实、A撒谎,生路在右边

所以“串联”在表述上是对的,只不过后面的文字看起来不太严谨
……不对啊

关于生路在右边“是真的”,
B撒谎、A诚实,生路在左边
B诚实、A撒谎,生路在左边

依然没法区分啊!不对…… 可以区分 🙈

def honest(p: bool): return p
def cheat(p: bool): return not p

def wayProblem(is_right: bool, a=honest, b=cheat):
return (a(is_right), b(is_right))

bools = [True, False]
[wayProblem(p) for p in bools] == [(True, False), (False, True)]
def compose(f, g): return lambda x: f(g(x))
[wayProblem(p, a=compose(honest, cheat), b=compose(cheat, honest)) for p in bools] == [(False, False), (True, True)]

🤔 这算是区分开了……! 要不然你想怎么区分
This media is not supported in your browser
VIEW IN TELEGRAM
秒打脸 气死我了 #Learn #Python #logics #Algorithm
太丢人了
Forwarded from duangsuse Throws
#life 建议从电脑桌上下来休息的人 采取下蹲 / 把小腿压在不太高的桌子上 的方式 舒展身体
个人感觉效果还可以,从别人分享的 PDF 上看到的。
https://www.barretlee.com/blog/2019/12/17/the-value-of-expression/ #dev #tech

作者: Barret李靖 2019-12-17 13:25:00 本文发布时间为2019年12月17日13时25分00秒 分类: 随笔 标签: 领英行家 下面是正文内容 评论数: 0 热度: 280

领英中国近期推出了一个年度行家的榜单,关注我的朋友可能知道,我有幸入了榜。
领英对行家的定义是,在自己的领域中,根据自身经验和知识,为他人答疑解惑,分享行业洞察,提供经验干货。简单来说,所谓的行家,就是善于思考,乐于发声的人。
最后评论区提到 Vol. 75 把『hash function』说成是『加密函数』,而不是一般的准确度底线:散列,有点牛逼了
duangsuse::Echo
#ParserKt 关于这个可选的 LayoutPattern,也的确是一个保留问题 🤔 不过现在可以设计一个关系式求解器了?
我已经决定了,给 ParserKt v3 的解决方案模型上做一些变通

我会引入 Either<A, B> 数据,LayoutPattern 里现在就是 item, tail, layout 了
其中 tail 如果 parse 为 left,则视为 optional layout 的 no-layout 形式保存
否则以 optional layout 的 layout 形式保存,notParsed 语义不变
layout 还是一样。

这样就可以实现 if : 按空格后是否换行来判断 tail 了
Deep<T, L> 上保持原有的 Root, Nest, Term,Nest 的 children 为空列表则表示无 layout 的形式
Deep<T, L> 添加一个 ShortNest 只包含 item 和 tail 不包含 children
Parser Combinator 在语法解析的当中处于怎样的位置? - 知乎 #zhihu #parsing
https://www.zhihu.com/question/35778359/answer/64834591

后来有人发现用Memoization方法可以完美解决左递归的问题,怎么个解决方法呢?它的方法大概就是:变相Bottom Up!我之前比喻成「不断重试」引起了一些误解,然后我发现把它说成「变相的Bottom Up」似乎更易于理解,……

🤔 想想我第一次试图解决 leftrec 也是利用这种方法
“它检查到第一个分支有左递归,就直接尝试下一个分支Int并且记住这次匹配,然后再把这次匹配的结果当作Expr匹配到的东西,代进包含左递归的分支中再次重试匹配,直到失败为止”

我当初引入的是 LeftOrleftrec {} (那时候 ParserKt 还不叫 ParserKt,也没有 Decide 这么精确的名称)

遇到有 leftrec 的情况,LeftOr 会直接跳过、匹配余下项目并保存到 LeftOr 的状态里,然后再回来匹配 leftrec 里的情况。
不过现在 ParserKt 强制性要求不允许 left recursive 文法,而且将 operator chain 的 parsing approach 改成了 InfixPattern 的递归栈模式。

我觉得对 parserc 来说,没有“变相”这么一说,反而是那些字符串匹配算法该被视为是 parserc 的变相,因为它是最贴近程序设计语言本身的结构的解析方法

“ParserCombinator本质上就是一个递归下降算法,只不过那些状态迁移在它这里变成了函数调用而已。
Memoization本质就是查表法,通过记忆避免左递归和部分回溯。左递归可以完美解决,但只能支持局部回溯,解决之后的也许就不该叫Parsec了。参见Packrat算法还有OMeta,另外Packrat算法中有一部分跟计算First/Follow set有点类似。
ParserCombinator最大的优点是:优雅。”

这几点基本是刚接触到的人也都明白并认同的。
https://github.com/thautwarm/EBNFParser #GitHub #zhihu #cs #PLT #TT 啊,原来红姐是这个人啊!
有什么代码会让你产生“这种代码我一辈子都写不出来”的想法? - AnxQ的回答 - 知乎
https://www.zhihu.com/question/357618826/answer/913362196

才发现最后一条
#+quick-lambda
#+pipeline
from functools import reduce
reduce(_0 + _1, [1,2,3]) | print([_0_]*3)

看来我之前觉得红姐以往的命名方式有点语义不准确,是真的了
Forwarded from 任桑 今天开始做魔王
所以抄个别的语言的代码套在py上,我是否可以理解为你既不熟悉scheme也不熟悉py呢,不然你干嘛要抄