由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 大牛解释一下这个scheme的pattern match吧
相关主题
王垠:解密“设计模式”ML语言求教!谢谢
有大牛用最浅显易懂的方式解释一下vert.x到底是什么东西么?问一个排序的问题
谁帮我解释一下这个代码你认为ubuntu下面写script,用perl还是python更好? (转载)
为什么java要用setter和getterGCJ问题
How many people use design patterns when coding?版上有人用Lisp么?
design patterns到底有用吗?怎么从adsense的iframe里面知道网站的url? (转载)
Python:How to replace 2 different patterns in 1 line in file[合集] 问个关于分两种颜色球的问题
快速系统学习 c++ design pattern有什么好书或者网站吗说起内存管理,记得bjarne讲的一个八卦
相关话题的讨论汇总
话题: calc2话题: match话题: exp话题: scheme话题: pattern
进入Programming版参与讨论
1 (共1页)
A******g
发帖数: 612
1
(define (calc2 exp)
(match exp
[ (? number? x) x ]
)
)
作用是如果exp是一个数字,就返回这个数字
不明白这个 (? number? x) 是什么用法,猜意思就是把exp赋值给x, 然后判断x是不是
数字
但是这个到底是什么用法,还请FP高手解释一下
p*****2
发帖数: 21240
2
应该是先判断是不是数字再付给x
A******g
发帖数: 612
3
有道理,但是
(? ... ) 是什么用法? 是只能和match搭配的特定用法吗?
p*****2
发帖数: 21240
4

我不懂scheme的语言。是它的syntax吗?

【在 A******g 的大作中提到】
: 有道理,但是
: (? ... ) 是什么用法? 是只能和match搭配的特定用法吗?

A******g
发帖数: 612
5
应该是,这个标点符号作语句,都很难google...
t****a
发帖数: 1212
6
刚在racket(一种scheme解释器)里尝试了一下
> (define (calc2 exp)
(match exp
[ (? number? x) x ]
)
)
> (calc2 10)
10
> (calc2 "abc")
match: no matching clause for "abc"
> (calc2 true)
match: no matching clause for #t
楼主说的大概是对的
稍微改了一下函数,加了判断string的
> (define (calc2 exp)
(match exp
[ (? number? x) x ]
[ (? string? x) x ]
)
)
> (calc2 "abc")
"abc"
更多的pattern match这里有
http://docs.racket-lang.org/reference/match.html
里面有些很有趣的用法
不过不知道它怎么实现的,因为[ (? number? x) x ]这个玩意既不是函数又不是值,
大概match本身是个宏也说不定。有懂行的朋友给解释一下吗?
f*******n
发帖数: 12623
7
scheme里没有pattern match。你是说racket自己的吧?
e*******o
发帖数: 4654
8
http://ceaude.twoticketsplease.de/articles/an-introduction-to-l
Conveniently, the ? operator is an implicit and operator, so instead of:
(and (? foo?) x)
we can instead write:
(? foo? x)
我碰巧看到转过来。
e*******o
发帖数: 4654
9
(? expr pat ...) — applies expr to the value to be matched, and checks
whether the result is a true value; the additional pats must also match; i.e
., ? combines a predicate application and an and pattern. However, ?, unlike
and, guarantees that expr is matched before any of the pats.
1 (共1页)
进入Programming版参与讨论
相关主题
说起内存管理,记得bjarne讲的一个八卦How many people use design patterns when coding?
assoicate container的find()design patterns到底有用吗?
请教一个简单字符串程序 (转载)Python:How to replace 2 different patterns in 1 line in file
new to python,问个stupid的问题快速系统学习 c++ design pattern有什么好书或者网站吗
王垠:解密“设计模式”ML语言求教!谢谢
有大牛用最浅显易懂的方式解释一下vert.x到底是什么东西么?问一个排序的问题
谁帮我解释一下这个代码你认为ubuntu下面写script,用perl还是python更好? (转载)
为什么java要用setter和getterGCJ问题
相关话题的讨论汇总
话题: calc2话题: match话题: exp话题: scheme话题: pattern