/tmp/duangsuse.sock
23 subscribers
303 photos
3 videos
92 files
337 links
从 duangsuse::Echo (@dsuse) 跟进出来的分支,将在作者恢复原帐号访问的时候合并删除。
Download Telegram
#CS #PLT 入门级别的回答们 #CoolShell

+ 也不要太较真成『语法糖主义』…

也不要太较真成『语法糖主义』… Java 5 之前没 Generics 的时候代码不还是照样写、Assembler 那时没有 C 不还是可以编程,C 从 89 到 17 加了多少特性,vararg、complex、block、pack,多少也是『可有可无』的,甚至因为有内联汇编和底层访问性、低层次的规范,你都可以内联汇编给它“加特性”,你甚至可以说,C 就是汇编的语法糖,哪怕它让代码机器平台无关、提供了类型检查

C++ 的 block 的确是没啥革命性的变更,但是一切皆语法糖这个观点太表面了…

+ 另外你所说的 environment 模型是指 Scheme 系基于 Lambda 演算程序设计语言的 Lexical scoping 变量解析吗?



另外你所说的 environment 模型是指 Scheme 系基于 Lambda 演算程序设计语言的 Lexical scoping 变量解析吗?

Lisp 里这样的… 我还是用 Racket 吧(我不会 R*RS,但多范式融合的也就是那个样子),怎么说,Lisp 首先这个语言本身已经很老了并且也对很多人不那么可获取、其次它的名称被滥用的很严重,有一大堆 『Lisp 方言』 和 『C-like 语言』了…. 我…..

(define counter
(lambda [n] (+ n 1))) ; your definition above
(define effect-couter
(lambda [n] [lambda [] (set! n (+ n 1)) n])) ; using side-effects upvalue assignment like what we does in JavaScipt
(define time-a (effect-counter 0))
(display (a)) ; 1
(display (a)) ; 2

可是要用到副作用啊… 什么是消息传递模型,大概就是类似面向对象 Builder pattern 那个数据依赖构建吧,一般都是高阶函数引用 UpValue… 并且传递的消息,一般都是 immutable 的数据模型对象啊?

+ First-class 在 PLT(Programing Language Theory)里是指『能够被作为“子程序”的参数、返回值』使 用的一种『值』。



First-class 在 PLT(Programing Language Theory)里是指『能够被作为“子程序”的参数、返回值』使用的一种『值』。
C 里面有函数指针、但一些语言(很难举出例子… 因为又要有子程序又不能有函数指针,我举 Bash 吧)就不存在『函数指针』
同样的,一些语言里没有『变量』而只有『等式』『定义』『侧面』『式子(Term)』这些与之类似的概念,可能在使用上也有相通并且经常被弄混,但把他们混为一谈偏偏就是不准确的

何况〖变量化函数〗这个名称本身也有点不准确 — 是不是说函数就不能被作为参数和返回值呢?虽然很多语言都在低层使用了本地变量来管理参数的状态分配,是不是就意味着子程序的『参数』和『返回值』都是『变量』呢?

而且函数式里说的这个『first-class functions』远远不止一个 functions,还有它依赖的 data,这是一个容易被忽视的侧面。

function konst(x) {
return function immediate() { return x; }; }
let a = konst(1);
console.log(a()) // 1

如果真的只有一个『函数指针』,那这个 x 变量应该从哪里来?所以对于好的程序员,闭包和匿名函数不应混淆,哪怕是概念都应该尽可能做到准确无歧义。

有的时候我们就是需要一个可以进行『操作』的『值』而已,不需要关心它们是来自『变量』还是『参数』、他们是不是一个『函数变量』。

这个特性就是 1932 年 Lambda calculus 的 lexical scoping,这里 讲的很清楚

任何新知识对任何人来说都是突兀的,所以我们在第一次见到某种概念的时候应该学会闭嘴。我第一次听王垠骂 Type Theory Hindley-Milner 类型推导和 Haskell 的惰性计算引用透明的时候也无脑跟着骂了(那时候是一行 Haskell 都没有看过….)…. 现在是极其后悔 为什么要无脑跟风(给一点建议…)

和变量这个东西有『相通』(都能用)之处,但还是很不一样的。
就像上面那个拿『引用透明』换『确定性』(这个还有和线程安全的某种特例混淆的风险)的人一样,能够准确的就尽可能做到准确,这不正是酷壳大部分技术文和科普/人文写作的风格吗?有多少技术博客还会专门列个引用表给人去找上面的一手资料…


+ 未必啊,我们只是使用了接口,没有规定必须得怎样实现

未必啊,我们只是使用了接口,没有规定必须得怎样实现
for/while 是经典顺序逻辑编程里常用的循环,但实际上计算远远不止这一种可能,有复杂的数据库查询可以分到很多台计算机上去做、复杂的 ray tracing 渲染可以分到计算集群去做,单机对于 DIP 处理/计算机视觉/3D 计算/着色 什么的,未必就 for/while 这一种,比如 X86 的 SIMD 特性(SSE/AVX 什么的)就可以让你一下子处理一批数据,批量完成加减乘除取余什么的,这种情况 map 的语义远远比 for index 好,编译器也更敢做优化一些
Forwarded from Math notes | 数学笔记 (Harry Ying)
近期在写一篇分布式信任的post
Forwarded from Math notes | 数学笔记 (Harry Ying)
reasoning-about-knowledge-part-1.pdf
283.3 KB
PDF版本
PDF Version
#recommended #Math #tool 生成的杂乱式子,很适合大家训练自己的模式识别和展开/化简能力。
Forwarded from Math notes | 数学笔记 (Harry Ying)
#Dev #Tech #JavaScript #TypeScript 理想状态机模型实例
Forwarded from 羽毛的小白板
理想中的 TypeScript 版有限状态机
#MS 送终!等着 Flash 和 Java Applet
#Life #ACG 现在又复活了
Forwarded from エロ奇譚 (Cololi)
看求值顺序喽,如果 a++ 的值被保留赋值则不变(显然赋值语句会在自增表达式求值后执行);如果 a++ 反而是没有实现它的 side-effect 语义则值会发生改变(也就是说它在整个语句后完成自增操作) #C #Zhihu
Forwarded from METO 的涂鸦板
霸王还行,这奖品真接地气
#ACG #Life 离不开的 漫画 站!
Forwarded from Rachel 碎碎念 (Rachel Mirai | 🏳️‍🌈)
好时代,来临吧
#Math 今天上午的数学笔记(以后可能按周更新)

上午看了人教《高中数学 必修 5》,解三角形的前几面,入门了一点 naive 的数学等式分析能力。

首先,是要从一个三角形函数的定义 推出三角形里边长之间的关系,有一个式子:

Rt triangle ABC:
(a / sin A) = (b / sin B) = c
where sin 角 = 斜边 / 对边

且 C=1 的时候... 忘了,之后是推广到了锐角三角形上,作了个边 CD 垂直居中边 CB 然后利用 sin 的性质 sin A = {三角形CDB CB 边上的高}

然后我几何数学推导(是的,之前我只知计算... 套用模板的)的也是第一次看,就没有考虑到那方面的东西

我就有一个问题:为什么它说 (a / sin A) aka. (a / (c / a)) 这个是正确的(是的,对你们就是 immediate 的)
甚至我知道它是指 (a / sin A) = c 都想了半天(开始我怀疑是利用了相等的传递性,可是就不知道是把两个子式 =c 传递过去了...);然后我就想,为什么是 = c 呢?

首先当然是万能(划掉)的列举法,算法设计的时候一个强有力(迫真)的思路

泛化成等式 a / (b / a) = b (之前搞错成 b / a / a 了....),我考虑了 a=1 b=10; a=3 b=15 的情况,第二个 case 失败了
之前我还迫真变形一次,结果在上面那个三等式子里消除了第二个等号(除法消除因子变换)... 我把 c 跨等号约掉了(所以我觉得很奇怪,为什么项和一个等号直接消失了),即使不知道做了什么 😂

(补充,是看错了,其实式子是 a / (a / b) = b.... 还是很奇怪

这时候我才想到:啊! (b / a) 问的不是 『b 里面有几个 a』 么? 所以问 『a 里面有几个『b 里面有的 a』』难道不是 b 么?
还是好奇怪啊...

👆上面的补充,修改之后(你看上面那个结论还是令人困惑,因为它的确是错的)

这时候我才想到:(a / b) 问的不是 『a 里面有几个 b』 么? 所以问 『a 里面有几个『a 里面有的 b』』难道不是 b 么?