Vol*_*ian 4 scheme pattern-matching racket
有没有人知道如何在Scheme中使用这两个(?x生活?城市)进行模式匹配(约翰生活在纽约)?
我尝试过使用match-define,但是我没有成功.
Ósc*_*pez 10
我想你的意思是模式匹配.对于这个问题的一般解决方案,考虑实现统一算法,SICP中描述了一个完整的工作解决方案.或者,考虑在代码中嵌入miniKANREN,它是一个与Scheme一起使用的简单逻辑编程系统.
现在,为了更简单的匹配,您可以使用Racket的模式匹配功能.对于问题中的示例:
(define expression '(john lives-in new-york))
(match expression
[(list ?x 'lives-in ?city) (list ?x ?city)]
[_ #f])
=> '(john new-york)
Run Code Online (Sandbox Code Playgroud)
上述将匹配针对一个给定的表达(?x lives-in ?city)模式,与所匹配的值返回列表?x和?city,或者#f如果没有找到匹配.
| 归档时间: |
|
| 查看次数: |
3395 次 |
| 最近记录: |