我有一个let语句,其中我想动态地解构列表。以下是我的解决方案:

symList  ;; list of some Strings which will become the vector of Symbols to assign to
valList  ;; list of some values, same length as symList

(let [(map read-string symList) valList]
  ...)


symList的示例值为("pt1" "pt2")valList的示例值为(1 2)

但是,这会产生例外,即第一部分是“不受支持的绑定形式”。我怀疑我缺少有关语法引用的内容,或者这是不可能的。任何建议将不胜感激。

编辑:我只会知道这些值来运行时间,因此这种方法。其次,我需要稍后能够传递词法范围,从而使用let

最佳答案

如果symList和valList在编译时具有正确的值,则可以编写一个宏来执行此操作。如果仅在运行时才知道它们,则您将不得不使用/编写一个函数来为您进行解构并将该解构的结果作为某些数据结构返回。

在第二种情况下,对于像这样的简单事情,可以使用(zipmap symList valList)来获取地图。

10-08 18:37