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

推荐订阅源

D
DataBreaches.Net
SecWiki News
SecWiki News
博客园_首页
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
P
Palo Alto Networks Blog
V
Vulnerabilities – Threatpost
Project Zero
Project Zero
WordPress大学
WordPress大学
NISL@THU
NISL@THU
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Privacy & Cybersecurity Law Blog
Jina AI
Jina AI
AWS News Blog
AWS News Blog
Scott Helme
Scott Helme
Martin Fowler
Martin Fowler
C
Cybersecurity and Infrastructure Security Agency CISA
Forbes - Security
Forbes - Security
H
Heimdal Security Blog
小众软件
小众软件
I
Intezer
A
Arctic Wolf
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
O
OpenAI News
S
Security Affairs
阮一峰的网络日志
阮一峰的网络日志
Latest news
Latest news
G
GRAHAM CLULEY
Blog — PlanetScale
Blog — PlanetScale
J
Java Code Geeks
N
News and Events Feed by Topic
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
V2EX - 技术
V2EX - 技术
Stack Overflow Blog
Stack Overflow Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
L
LINUX DO - 最新话题
博客园 - Franky
P
Proofpoint News Feed
aimingoo的专栏
aimingoo的专栏
博客园 - 司徒正美
P
Proofpoint News Feed
S
Secure Thoughts
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
T
The Exploit Database - CXSecurity.com
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
F
Full Disclosure
Security Latest
Security Latest

博客园 - linkcd

linkcd胡扯职业生涯规划(二): 关于 人 linkcd胡扯职业生涯规划(一): 关于定位 如何才能用好Email? 让Switch-Case/If-Else-If-Else从你系统中走开 [翻译]每个作者都应该懂的统计学 Part I Castle.MircoKernel Class Diagram - Part I 一个不错的scheme入门PPT 人格类型 测试结果 .Net 2.0 下Data Container性能比较: Binary Serialize Dataset vs Custom Classes 智能替换DataTable.Select中会导致错误的单引号 - linkcd - 博客园 Nullable Type is an immutable type Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0) Undocumented Keywords in C# System.Int32&是个啥? 《4个程序员的一天》(续) 由idior的问题想到的 4个程序员的一天 n久以前写的火星文 Solution for SICP 在Vs.net中集成 NDoc生成的 Html Help 2帮助文档
回FantasySoft
linkcd · 2005-07-20 · via 博客园 - linkcd

FantasySoft兄的贴在这里

hehe,其实我是偷懒没用那些复杂的函数来当op,直接把+传进去吧了。Scheme里面,数据和函数都是一回事,没有区别的。

如果op是个复杂的函数,还是需要先吧这个函数定义出来,再传进去。
比如现在我们op操作符不再是加法这么简单,而是要算x和y的平方和是多少,即:
x^2 + y^2 = ?

如何用scheme来做呢?

首先我们的Foo的定义不用变,还是
(define (Foo op x y)
  (op x y))

然后,我们来定义新的op,叫sum-sq
(define (sum-sq x y)
  (+ (* x x) (* y y)))

最后来看看结果是不是正确:
(Foo sum-sq 3 4)
得25

运算过程嘛,就是
(Foo sum-sq 3 4)

->

((lambda (op x y)
   (op x y))
 sum-sq
 3
 4)

->

((lambda (op x y)
   (op x y))
 (lambda (x y)
   (+ (* x x) (* y y)))
 3
 4)

->

((lambda (x y)
   (+ (* x x) (* y y)))
 3
 4)

->

(+ (* 3 3) (* 4 4))

->25

别看我写那么复杂,其实是从DrScheme的Stepper上面copy过来的,呵呵

再说说scheme的语法吧,scheme的表达式都是用括号括起来的。括号左边第一个就是该表达式的运算符,后面的都是参数。在scheme里面调函数,就是(函数体 参数1 参数2 ...)。如果你要在函数里面调函数,就要用无数的括号来括你的表达式....这括号一多,看起来就头晕了...也算是Lisp/scheme一个不太方便的地方吧.