Кажется, я застрял, пытаясь перебрать строки, чтобы найти символы, которых нет в другой строке. Цель программы - зациклить хотя бы одну строку и документировать символы, которых нет в другой строке. Символы, которых нет в другой строке, будут распечатаны после завершения проверки. Они могут не повторяться, поэтому я пытаюсь использовать три цикла.
Я пытаюсь отладить приведенный ниже код, поскольку в конечном итоге мне приходится проверять обе строки друг на друга, и я хочу сделать это вручную для получения ноу-хау.
CG-USER(258): (defun stringprod (string1 string2)
(let ((newString nil))
(let ((letterSearchOn nil))
(loop for i from 0 below (length string1)
always
(setf (letterSearchOn (char string1 i))
(loop for j from 0 below (length string2)
(for ch = (char string2 j)
(/when (find ch letterSearchOn :test #'equal)
(append newString ch)))))))))
STRINGPROD
CG-USER(260): (stringprod "abc" "abc")
Error: (FOR CH = (CHAR STRING2 J)
(/WHEN (FIND CH LETTERSEARCHON :TEST #'EQUAL)
(APPEND NEWSTRING CH))) found where LOOP keyword expected.
Current LOOP context: FOR J FROM 0 BELOW (LENGTH STRING2)
(FOR CH = (CHAR STRING2 J)
(/WHEN (FIND CH LETTERSEARCHON :TEST #'EQUAL) (APPEND NEWSTRING CH))).
[condition type: PROGRAM-ERROR]
CG-USER(261):