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

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 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一个不太方便的地方吧.