duangsuse::Echo
https://gist.github.com/duangsuse/fc33ea2690d77a0cc1fe0f0a4ce8b4f2
当然我是不会做 TCO 的 CFA 流程控制分析 的,所以得在 tco 调用后面加
yield ...如何解释 Lisp 中 call/cc 的概念? - 知乎用户的回答 - 知乎
https://www.zhihu.com/question/21954238/answer/23905991
我选择了一个最容易理解的「表层(使用)上」的描述
如果我们在
那么刚才
https://www.zhihu.com/question/21954238/answer/23905991
我选择了一个最容易理解的「表层(使用)上」的描述
(call/cccontinuation 是“然后要做的事情”,“要做的事情”我们用什么表示?当然是函数,所以说
(lambda (next) BODY))
k 是个函数。如果我们在
BODY 里呼叫了 (next ...),那么会立即跳出 (call/cc (lambda (next) BODY)),去做下一个括号/外层括号的事。那么刚才
(let/cc next BODY) 没执行完,它的返回值是什么呢?就是你传给 next 的参数。Zhihu
如何解释 Lisp 中 call/cc 的概念? - 知乎
有问题,上知乎。知乎是中文互联网知名知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。
duangsuse::Echo
如何解释 Lisp 中 call/cc 的概念? - 知乎用户的回答 - 知乎 https://www.zhihu.com/question/21954238/answer/23905991 我选择了一个最容易理解的「表层(使用)上」的描述 (call/cc (lambda (next) BODY)) continuation 是“然后要做的事情”,“要做的事情”我们用什么表示?当然是函数,所以说 k 是个函数。 如果我们在 BODY 里呼叫了 (next ...),那么会立即跳出 (call/cc…
举个最简单的例子(简化版 R5RS 例子),
这里,
continuation 给了 Scheme 系真·functional 语言流程控制的能力,比如需要
好想加此特性的说...
https://www.biwascheme.org/test/tracer.html
这里,
(let/cc next ...) 可以理解为 (call/cc (lambda (next) ...))((let/cc next (for-each
(lambda (x) (if (= x 1) (next) (display x)))
'(2 3 4 1 0))))
continuation 给了 Scheme 系真·functional 语言流程控制的能力,比如需要
"break" for-each 的时候好想加此特性的说...
https://www.biwascheme.org/test/tracer.html
((call/cc (lambda (next) (for-each
(lambda (x) (if (= x 1) (next) (display x)))
'(2 3 4 1 0)))))
https://www.bilibili.com/blackboard/topic/index_10years_web.html#8432
我是上条当麻,我现在钱包丢了,没钱给茵蒂克丝做饭,我现在急需 98 元去买菜。我不知道什么 B站大会员也不知道什么魔禁三,求好心人帮助
👍
我是上条当麻,我现在钱包丢了,没钱给茵蒂克丝做饭,我现在急需 98 元去买菜。我不知道什么 B站大会员也不知道什么魔禁三,求好心人帮助
👍
Bilibili
“十年之际,魔禁归来”——《魔法禁书目录》十年经典动画巡礼 vol.6 - 哔哩哔哩弹幕视频网 - ( ゜- ゜)つロ 乾杯~ - bilibili
《魔法禁书目录》改编自镰池和马著同名轻小说,TV动画第一季于10年前的2008年10月4日首播,第二季从2010年10月开始播出。本作以“科学”和“魔法”两个设定极端相反的阵营组成的矛盾世界观为背景,创造了一场融合先进科学与宗教魔法的,具有不同认知、能力和信念的人们碰撞在一起的大混战。该作品以新奇、热闹、有趣的故事吸引了大票观众,跨越众多媒体,大放光彩。
2018年10月,无数粉丝苦苦等候的《魔法禁书目录》第三季动画终于来临……
2018年10月,无数粉丝苦苦等候的《魔法禁书目录》第三季动画终于来临……
duangsuse::Echo
举个最简单的例子(简化版 R5RS 例子), 这里,(let/cc next ...) 可以理解为 (call/cc (lambda (next) ...)) ((let/cc next (for-each (lambda (x) (if (= x 1) (next) (display x))) '(2 3 4 1 0)))) continuation 给了 Scheme 系真·functional 语言流程控制的能力,比如需要 "break" for-each 的时候 好想加此特性的说...…
Call-by-name 传名调用(lazy 求值) Call-by-need(即时求值)这样简单的就先支持着,
call/cc ... 反正 Sexp 外部扩展的能力肯定也不差,插件应该可以修改内部状态的 :: (所以以后再说吧scala中的flatMap详解? - 知乎用户的回答 - 知乎
https://www.zhihu.com/question/34548588/answer/62603889
非常简单明了的解释
下面 Belleve 的回答也很简洁
先映射(map),再拍扁(join)
不过貌似不是简单的这样
就是字面上的意思
https://www.zhihu.com/question/34548588/answer/62603889
非常简单明了的解释
flatMap 用法下面 Belleve 的回答也很简洁
先映射(map),再拍扁(join)
不过貌似不是简单的这样
[:a, :b, :c, [:ac, :bc]].map(&:to_s).flatten => ["a", "b", "c", "[:ac, :bc]"]就是字面上的意思
[:a, :b, :c, [:ac, :bc]].flatten.map(&:to_s) => ["a", "b", "c", "ac", "bc"]Zhihu
scala中的flatMap详解? - 知乎
有问题,上知乎。知乎是中文互联网知名知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。
duangsuse::Echo
http://www.yinwang.org/blog-cn/2012/07/04/dan-friedman #CS #recommended
后面贴了他那 40 行代码,唉(真心的),我也是现在才知道他说这些代码真是“最优雅”的四十行的原因了
为了描述它,很多人(当然明显也水平不低,要不然连 CPS 是啥都可能不知道)“连平行宇宙、世界”都拿来做比喻了,效果很不好,他们或许自己的确懂,但他们不会教给别人自己所知道的知识
如果连《The Little Schemer》都没看过的话,大概也是不可能真正理解 CPS 的含义吧,就是后端老油条、精通 C++ template... coroutine... imperative 过程式语言实现、处理各种锁各种数据竞争问题...,看几遍“这个世界 那个世界”这种描述大概也没人真正明白
— 其实就是一个简单的问题,那 40 行代码到底是拿来做什么的,连怎么用都不需要知道,我想这都是苛求了
现在看来,我知道当初那些知乎上的程序员,大部分真的都不知道它是做什么的,只是不明觉历,而知乎上 PL 爱好者也不会特别纠结这些问题
为了描述它,很多人(当然明显也水平不低,要不然连 CPS 是啥都可能不知道)“连平行宇宙、世界”都拿来做比喻了,效果很不好,他们或许自己的确懂,但他们不会教给别人自己所知道的知识
如果连《The Little Schemer》都没看过的话,大概也是不可能真正理解 CPS 的含义吧,就是后端老油条、精通 C++ template... coroutine... imperative 过程式语言实现、处理各种锁各种数据竞争问题...,看几遍“这个世界 那个世界”这种描述大概也没人真正明白
— 其实就是一个简单的问题,那 40 行代码到底是拿来做什么的,连怎么用都不需要知道,我想这都是苛求了
现在看来,我知道当初那些知乎上的程序员,大部分真的都不知道它是做什么的,只是不明觉历,而知乎上 PL 爱好者也不会特别纠结这些问题
Friedman 弗里德曼教授,总是能用尽可能简明易懂的方式梳理知识,尝试简化一切,这真的是有好处的。过度复杂化只会让你要记的更多,思考的更累,人非圣贤。Scheme 复制的定义都是从更小的定义组装起来的。模块化、彻底解藕不也正是现在工程的风向标吗?
而且我觉得他和王垠大概是真的天才(要不然怎么能在一周里做出别人十年才能完成的算法呢),即使这样,也不应该有神的存在。天才的存在促人进步,神的存在阻碍人进步。计算机科学不需要一个人成为只能被人膜拜的神,那对科学发展没有帮助
最后回复我下面提到某个知乎问题的某个造压缩算法和计算机网络的回答(正好我看得到一本《Internet 原理于技术》,如果他说的是真的那水平应该在不同方向和王垠差不多),神是人造的,不是神自己造的,如果不是那么多完全不懂和不懂装懂、完全不是一个世界的人凑热闹,他怎么会被当成神一样看待?
而且我觉得他和王垠大概是真的天才(要不然怎么能在一周里做出别人十年才能完成的算法呢),即使这样,也不应该有神的存在。天才的存在促人进步,神的存在阻碍人进步。计算机科学不需要一个人成为只能被人膜拜的神,那对科学发展没有帮助
最后回复我下面提到某个知乎问题的某个造压缩算法和计算机网络的回答(正好我看得到一本《Internet 原理于技术》,如果他说的是真的那水平应该在不同方向和王垠差不多),神是人造的,不是神自己造的,如果不是那么多完全不懂和不懂装懂、完全不是一个世界的人凑热闹,他怎么会被当成神一样看待?
duangsuse::Echo
Friedman 弗里德曼教授,总是能用尽可能简明易懂的方式梳理知识,尝试简化一切,这真的是有好处的。过度复杂化只会让你要记的更多,思考的更累,人非圣贤。Scheme 复制的定义都是从更小的定义组装起来的。模块化、彻底解藕不也正是现在工程的风向标吗? 而且我觉得他和王垠大概是真的天才(要不然怎么能在一周里做出别人十年才能完成的算法呢),即使这样,也不应该有神的存在。天才的存在促人进步,神的存在阻碍人进步。计算机科学不需要一个人成为只能被人膜拜的神,那对科学发展没有帮助 最后回复我下面提到某个知乎问题的…
如果你们看不懂的话,上面我那个知乎问题有人回答的好的可以看看,现在我也没全看懂,他们描述的层面方向太多了
https://zh.wikipedia.org/wiki/%E9%82%B1%E5%A5%87%E6%95%B0
这篇写得不错可以了解一下(啊久违的中文)
(看不懂是不要紧的,同样的东西,即使没有啥“Primer”,不同例子看几十遍一般都能总结出其语法语义了
(lambda 演算的话,会看 Scheme/Haskell 之类的人一般看几遍都能看懂的
看不懂这里有 ANTLR 规则(真心推荐),规则是比较容易理解的吧(这或许是最短的 ANTLR 规则了,59 行)(虽然不一定能解析 wiki 上比较不规范的自然表示方法)
(我目前也暂时没看懂,我只记得儿童书(The Little Schemer)上教的用
这篇写得不错可以了解一下(啊久违的中文)
(看不懂是不要紧的,同样的东西,即使没有啥“Primer”,不同例子看几十遍一般都能总结出其语法语义了
(lambda 演算的话,会看 Scheme/Haskell 之类的人一般看几遍都能看懂的
看不懂这里有 ANTLR 规则(真心推荐),规则是比较容易理解的吧(这或许是最短的 ANTLR 规则了,59 行)(虽然不一定能解析 wiki 上比较不规范的自然表示方法)
(我目前也暂时没看懂,我只记得儿童书(The Little Schemer)上教的用
'() 表示 0 '(()) 表示 1 了Wikipedia
邱奇数
邱奇编码是把数据和运算符嵌入到lambda演算内的一种方式,最常见的形式即邱奇数,它使用lambda符号表示自然数。方法得名于阿隆佐·邱奇,他首先以这种方法把数据编码到lambda演算中。
duangsuse::Echo
https://www.zhihu.com/question/20822815 我指的是这个
for example 举个例子吧
(我们假设 R6RS Scheme 里能用的函数现在都有)
λn w z. ((n λl h. h (l w)) (λd.z)) (λx.x)
lamdba.g4 是无法解析的,它的规则如下(ANTLR 是个 Java Parser Combinator,你可以理解为高端正则表达式,比正则的 Group 引用还高级)Expression: variable | Function | Application;举个例子,+1 (因为 lambdac 偏向数学系所以一般是举数学定义的例子,但我数学菜就只能举例 1 + 1)
Scope: Expression;
Function: 'λ' variable '.' Scope;
Application: '(' expression expression ')';
variable: [a-z] [a-zA-Z0-9]*;
WS: [ \t\r\n] -> skip;
(我们假设 R6RS Scheme 里能用的函数现在都有)
(make-base-namespace)
(define add1 (λx.(+ x 1)))刚才查了好久 foldr,现在给出它的定义
(display (foldr add1 0 '(1 2 3 4)))
foldr f z [] = z(Haskell... 好像暂时有点难理解,算了(上面那个是错的
foldr f z (x:xs) = f x (foldr f z xs)
(define foldr (lambda (f z l)
(foldr ((f (car l)) (foldr f z (cdr l))))))