给定一个列表列表,其中列表的第一个元素是名称,其余元素是整数,我正在尝试构建一种算法,通过对两个子列表之间的差异求和来比较两个子列表的相似性列表中每个位置的元素。我在此算法中使用了 let
语句,当我尝试运行它时,返回了以下错误:
Error: execute: unbound symbol: "arr2" [similarity-arrays, (anon)]
为什么会这样?
代码:
(define (get-list name arr)
(if (eq? name (car (car arr)))
(cdr (car arr))
(get-list name (cdr arr))))
(define (similarity-arrays name1 name2 arrs result)
(let ((arr1 (get-list name1 arrs))
((arr2 (get-list name2 arrs))))
(if (= (length arr1)(length arr2))
(let ((x1 (car arr1))
(x2 (car arr2)))
(if (= 0 (length arr1))
result
(similarity-arrays
(cdr arr1)
(cdr arr2)
(+ result (- (car arr1)(car arr2))))))
#f)))
(define dust
(list (list 'akko 11 3 7 5 4 1 9 8 10 6 2)
(list 'Alex 9 7 11 3 6 1 5 4 10 2 8)
(list 'Aron 11 4 1 2 6 3 7 9 8 10 5)
(list 'carter 7 3 8 2 5 4 11 9 10 6 1)
(list 'Connery 10 2 6 4 5 1 7 3 9 11 8)
(list 'Embryo 11 8 9 6 7 4 2 3 1 10 5)
(list 'Jaycee 9 1 11 7 10 8 4 2 5 6 3)
(list 'jeeelm 11 8 5 2 1 6 7 3 9 10 4)
(list 'Jodast 10 7 4 6 5 1 11 9 8 3 2)
(list 'KingDolphin 11 4 7 2 6 3 5 9 8 10 1)
(list 'Knowledge 11 8 2 9 3 1 5 6 4 10 7)
(list 'ruben 11 1 6 4 7 3 9 5 8 10 2)
(list 'SickLizard 11 6 7 2 8 3 9 10 5 4 1)
(list 'XIN 11 3 4 1 8 5 7 9 6 10 2)
(list 'ZIPF 10 7 11 5 9 3 6 2 4 8 1)))
(similarity-arrays 'Jodast 'Akko dust 0)
最佳答案
您需要改进的一件事是代码的缩进。 如果代码缩进正确,则更容易发现语法错误。 如果您的代码如下所示,那么您遇到了缩进问题。
(define (similarity-arrays name1 name2 arrs result)
(let ((arr1 (get-list name1 arrs))
((arr2 (get-list name2 arrs)))) ; <- wrong indentation, wrong syntax
(if (= (length arr1)(length arr2))
(let ((x1 (car arr1))
(x2 (car arr2)))
(if (= 0 (length arr1)) ; <- wrong indentation
result
(similarity-arrays
(cdr arr1)
(cdr arr2)
(+ result (- (car arr1)(car arr2))))))
#f)))
这将是正确缩进的代码:
(define (similarity-arrays name1 name2 arrs result)
(let ((arr1 (get-list name1 arrs))
((arr2 (get-list name2 arrs)))) ; <- wrong syntax
(if (= (length arr1) (length arr2))
(let ((x1 (car arr1))
(x2 (car arr2)))
(if (= 0 (length arr1))
result
(similarity-arrays
(cdr arr1)
(cdr arr2)
(+ result (- (car arr1) (car arr2))))))
#f)))
最好不要手动缩进代码 -> 使用编辑器/IDE 来完成。
关于arrays - 为什么返回 'error: unbound symbol' 为什么我运行我的数组比较算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56333808/