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

推荐订阅源

S
Securelist
V
V2EX
MongoDB | Blog
MongoDB | Blog
量子位
J
Java Code Geeks
GbyAI
GbyAI
Attack and Defense Labs
Attack and Defense Labs
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 叶小钗
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Cloudbric
Cloudbric
Recorded Future
Recorded Future
月光博客
月光博客
Help Net Security
Help Net Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
N
Netflix TechBlog - Medium
M
MIT News - Artificial intelligence
N
News and Events Feed by Topic
阮一峰的网络日志
阮一峰的网络日志
The Register - Security
The Register - Security
Scott Helme
Scott Helme
Google DeepMind News
Google DeepMind News
W
WeLiveSecurity
G
Google Developers Blog
T
Troy Hunt's Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
I
InfoQ
S
SegmentFault 最新的问题
G
GRAHAM CLULEY
C
Check Point Blog
Project Zero
Project Zero
有赞技术团队
有赞技术团队
B
Blog RSS Feed
大猫的无限游戏
大猫的无限游戏
P
Privacy International News Feed
AI
AI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
F
Full Disclosure
C
CXSECURITY Database RSS Feed - CXSecurity.com
H
Hackread – Cybersecurity News, Data Breaches, AI and More
H
Hacker News: Front Page
S
Secure Thoughts
罗磊的独立博客
T
Threat Research - Cisco Blogs
aimingoo的专栏
aimingoo的专栏
博客园_首页
宝玉的分享
宝玉的分享
C
Cybersecurity and Infrastructure Security Agency CISA

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
lisp学习笔记1
2014-02-23 · via 夜行人

对lisp关注久矣。
想不关注也难啊,阅读大神们的博客,Lisp,vi,emacs几乎都是高频词汇,360无死角地冲击你。
真正开始学习它是近期的事。算是慕名而来吧。尤其是在看了《黑客与画家》之后,更是迫不及待地在ubuntu里装上了clisp. 敲了第一行Lisp代码:

(+ 1 2)

Lisp的学习资料确实比较匮乏(国内而言),后来在图书馆看到《Clojure编程》(Lisp的方言之一),才算是找到了较为系统的入门教材。于是饶有兴致地翻了起来,虽然之前也看过大神们对Lisp的赞叹,比如《黑客与画家》的作者paul graham,可当亲自阅读Clojure写出的代码时还是会为这种清晰而强大表达能力惊叹。怎么可以如此优美地书写!
列表和函数是如此精巧而强大的东西。虽说在写python时也见识过列表的威力,却不知道它原来还能这样用!
虽说也写过不少函数,却丝毫不是函数式编程的风格。颇有‘我以前写的都是什么啊’的感受。
之前就曾读过“学习Lisp对你的其他语言有有莫大帮助”,如今信矣。
虽说至今也未在项目中使用Lisp,可函数式的风格已经帮助到我解决实际问题了–写出更利于维护的函数。 学习Lisp时日尚浅,不敢谈心得,恐见笑于大方之家,只分享下学习时的感受,也欢迎大牛们的指教。

下面列出我所了解的Lisp,以及我所喜欢的一些特性,参考的文章(博客)在文后列出

  • Lisp 是一门关于列表的语言。Lisp 中的一切内容(从数据到组成应用程序的代码)都是列表.每个列表都由一些原子和列表组成。数字就是原子。键入一个数字仅仅会返回该数字作为结果.
  • 操纵列表的有两类函数:构造函数选择函数。构造函数构建列表,选择函数分解列表。first 和 rest 是核心选择函数。first 选择函数返回列表的第一个原子,rest 选择函数返回除第一个原子外的整个列表
1
2
> (first '(lions tigers bears))
LIONS
  • 如果希望构建列表而不是将其分开,就需要构造函数。构造函数构建新元素:即列表
1
2
> (cons 'lions '(tigers bears))
(LIONS TIGERS BEARS)
  • 要获取列表的第二或第三个元素,应该获取 rest 中的 first,或 rest 中的 rest 中的 first
1
2
3
4
5
>(first (rest '(1 2 3)))
2

>(first (rest (rest '(1 2 3))))
3

在如此简单的原语之上构建一门简洁优美的语言,其中的原理让一些程序员激动不已。这些由列表构建的简单指令构成了递归、高阶函数,甚至是闭包和 continuation 之类高级抽象的基础

  • 下面回顾一下到目前为止看到的内容: Lisp 使用列表和原子来表示数据和程序。
    对列表求值时将第一个元素看作列表函数,将其他元素看作函数参数。
    Lisp 条件语句将 true/false 表达式和代码一起使用。

waiting

参考资料:

文章作者 种瓜

上次更新 2014-02-23