gpt4 book ai didi

string - Clojure 字符串映射

转载 作者:行者123 更新时间:2023-12-02 01:18:44 25 4
gpt4 key购买 nike

我被 Clojure 难住了。我正在尝试编写一个系统,该系统根据成对编码的简单规则来转换字符串的某些字符,如下所示: [“A”“B”] 是将“A”转换为“B”的规则

我有一个函数“apply-rules-to-char”,它接受此类规则的向量和一个字符,找到第一个匹配的规则并应用它。看来有效

(apply-rules-to-char [["A" "B"]] "C")  produces "C"
(apply-rules-to-char [["A" "B"]] "A") produces "B"
(apply-rules-to-char [["A" "B"]] "M") produces "M"

但是,当我现在尝试使用 map 将其应用于字符串时

(map (partial apply-rules-to-char [["A" "B"]]) "CAM")

我回来了

(\C \A \M)

换句话说,它遍历了字符串“CAM”,但没有对“A”进行转换。

谁能解释一下这是为什么吗?

更新:这是 apply-rules-to-char 的定义。我猜它不相关,因为它在自行测试时总是正确执行。只有在 map 上它才会失败。

(defn apply-rules-to-char [rules c]
(let [rule (first (filter #(applicable % c) rules))]
(if (nil? rule) c (apply-rule-to-char rule c) ) ))

最佳答案

您的 apply-rules-to-char 函数似乎需要一个字符串(例如 "A"),而不是字符(例如 \A),这是字符串的组成部分。换句话说,您的函数需要能够像 (apply-rules-to-char [["A""B"]]\A) 一样工作,因为这就是它从 map

关于string - Clojure 字符串映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23643273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com