方案模式匹配-同时匹配缺点对组件和整个缺点对

问题描述

如何在方案中使用car一个con对对(cdrmatch-lambda)和整个con对进行模式匹配?我正在寻找一种简洁,优雅的方法提取缺点对并同时引用整个缺点对。

问题可以分为两个问题

  1. 如何在方案中对对对分量(carcdr)进行模式匹配?
  2. 如何使用match-lambda在单个引用中捕获带有匹配成分的整个模式匹配表达式?我知道可以在match内使用lambda来完成上述操作。

我在下面没有运气的情况下尝试过

(match-lambda
  [(car-component . cdr-component) ... use car-component and cdr-component])

理想情况下,我正在寻找类似的东西

(match-lambda
  [((car-component . cdr-component) as whole-pair) ... use car-component,cdr-component,and whole pair])

解决方法

如果匹配器完全可以匹配缺点对,那么您需要使用and模式:

(match-lambda
  [(and whole
        (cons a b))
   ;; whole,a,b bound here
   ...]
  ...)

将使用Racket的match-lambda

似乎不同的实现有不同的语法来匹配conses(而不是适当的列表),例如,我不清楚Guile's可以,但是它们似乎都具有and ,表示“所有模式都必须匹配,并绑定适当的标识符”。

(我认为,一个不会让您匹配conses的实现对个人而言没有用,所以我希望它们都可以。但是,我确实不是Scheme人。)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...