惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
云风的 BLOG
云风的 BLOG
G
Google Developers Blog
S
SegmentFault 最新的问题
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
DataBreaches.Net
F
Fortinet All Blogs
TaoSecurity Blog
TaoSecurity Blog
D
Docker
C
Cybersecurity and Infrastructure Security Agency CISA
K
Kaspersky official blog
宝玉的分享
宝玉的分享
腾讯CDC
Google Online Security Blog
Google Online Security Blog
Recorded Future
Recorded Future
T
The Exploit Database - CXSecurity.com
T
The Blog of Author Tim Ferriss
V
V2EX
S
Securelist
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
CERT Recently Published Vulnerability Notes
A
Arctic Wolf
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
Y
Y Combinator Blog
P
Proofpoint News Feed
T
Tor Project blog
AWS News Blog
AWS News Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
博客园 - 聂微东
T
Threat Research - Cisco Blogs
B
Blog
Attack and Defense Labs
Attack and Defense Labs
L
Lohrmann on Cybersecurity
C
CXSECURITY Database RSS Feed - CXSecurity.com
阮一峰的网络日志
阮一峰的网络日志
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
N
News and Events Feed by Topic
博客园 - 司徒正美
H
Help Net Security
C
Cisco Blogs
C
Check Point Blog
S
Secure Thoughts

Lisp

大佬们有没有推荐 lisp 的资料,最好是 ansi lisp - V2EX Lem 编辑器, Emacs 的继任者 - V2EX 试了试缩进语法写 Lisp - V2EX 是什么原因没有让 lisp 进入工业界(公司)的首选语言呢 - V2EX 一款 lisp 写的基于 GPU 渲染的编辑器 - V2EX SICP 走起 - V2EX [101]如何在迭代展开过程中输出中间数据? - V2EX The Humble Book Bundle: be a coder - V2EX scheme 一个好玩的开源库 - V2EX lambda calculus 解决了什么问题? 为什么会出现这个理论? 为什么说它很有价值? - V2EX 哪里可以找到关于 ANSI Common Lisp 中函数名字的由来? - V2EX Ask Him Anything: Lisp 社区的核心贡献者 - Kartik Agaram - V2EX 怎么看 Clozure Common Lisp 的 image 的内容? - V2EX 写了一份 Racket/Emacs 的入门配置指南 - V2EX Scheme 与 Church Number - V2EX 用过 racket 的进,其实只要你觉得有兴趣的都可以过来看看 - V2EX 又一个玩具 Scheme 解释器,使用 Python 编写 - V2EX 我使用 GNU Common Lisp 开始 Lisp 的学习 - V2EX 在读 On Lisp - V2EX 学Clojure的朋友们快去做4clojure啊! - V2EX Exercise SICP in Lua - V2EX 想给身边的人推荐lisp但是发现接受的很少 - V2EX Lisp 的 Vim 插件有什么推荐? - V2EX 有人关注ansi common lisp么?可以看一下豆瓣上的这两个贴 - V2EX SICP一書學完大約要多長時間? - V2EX 看了《黑客与画家》就觉得Lisp很强大要去学一下的人弱爆了,你们到底看没看明白作者的中心主旨是什么? - V2EX 求lisp的一些简单demo - V2EX 有对Lisp感兴趣的不? 自从看了黑客与画家就对这个很神往,除了AutoLisp有没有别的著名的应用呢? - V2EX 有人学或用Lisp的吗? - V2EX a haiku - V2EX 在Lisp节点里新建个主题 - V2EX
请问 lisp people, 哪些能力是只有宏能实现,而函数不能实现的? - V2EX
yazinnnn · 2021-08-21 · via Lisp

最简单的就是,比如语言里面没有 if,你自己实现一个,或者实现一个 if 的反义词 unless 。

大部分语言不能实现是因为 if 的规则是 lazy evalutation,但是语言其他地方是 eager 的。

比如大部分语言的 if 是:

if (<boolean experssion>) {
<if statements>
} else {
<else statements>
}

用函数实现,可以想当然实现成成这样:

if (<boolean expression>,
<if statements>,
<else statements>)

这样的问题是,if 和 else 其实总是会被执行。必须要求用户多垫一层 lambda:

if (<boolean expression>,
() => <if statements>,
() => <else statements>)

另外比较常见的,就是比如像 C# 有 Linq 写起来可以会比较贴近 SQL 本身的概念。你在 LISP 里面也想用 Linq 就可以自己撸一个,比如在 Java 里就没办法造一个 Linq 语法。或者你需要用 Prolog 就可以自己造个 Prolog 等等,也可以给业务人员造个内嵌 DSL 。

其他语言比如 Java 可以用 Antler 之类的写 DSL,但是这个语言和 Java 之间没有任何配合,实现和通信都会很复杂。最关键的是,用这个语言的时候就会丢掉 Java 的所有本身的能力。

或者再举个例子,你想写一个互动教程,想在网页上讲解一个 UI 组件,同时展示给读者源代码和画出来的组件,那最简单的方式就是一边画出来组件,一边把源码抄一份当文本。如果是 LISP 的话,那就可以把代码引用起来,一面求值成字符串作为源码展示,一面求值执行成一个组件画在屏幕上可以交互。