Вы не можете управление исходным кодом .user файлы, потому что это - конкретный пользователь. Это содержит название удаленной машины и других зависимых от пользователя вещей. Это - связанный файл vcproj.
.suo файл является связанным файлом sln, и он содержит "пользовательские опции решения" (проект (проекты) запуска, положение окон (что прикрепляется и где, что плавает), и т.д.)
Это - двоичный файл, и я не знаю, содержит ли он что-то "связанный пользователь".
В нашей компании мы не берем те файлы при управлении исходным кодом.
Предупреждение означает, что char
по какой-то причине не распознается как функция, как и должно (он сообщает, что символ не привязан, у него нет значения) .
Это могло иметь какое-то отношение к вашей реализации. Я запустил ваш код, используя Cc Mk в моем SBCL + Emacs / Slime (и в Clozure), и получил следующий отчет из компиляции в SBCL:
; in: DEFUN LAST-CHAR
; (CHAR S (- (LENGTH S) 1))
; --> AREF
; ==>
; (SB-KERNEL:HAIRY-DATA-VECTOR-REF ARRAY SB-INT:INDEX)
;
; note: unable to
; optimize
; due to type uncertainty:
; The first argument is a STRING, not a SIMPLE-STRING.
;
; note: unable to
; avoid runtime dispatch on array element type
; due to type uncertainty:
; The first argument is a STRING, not a SIMPLE-ARRAY.
Попробуйте просто ввести
#'char
в REPL, ответ должен быть что сообщается, что это функция
CL-USER> #'char
#<FUNCTION CHAR>
, но, возможно, этого нет в вашей реализации (я предполагаю, что это не так, учитывая предупреждение компилятора и тот факт, что код правильно компилируется в SBCL). Если это так, то это точка, в которой ваша реализация отходит от спецификации ANSI Common Lisp, потому что эта функция должна быть там.
Просто примечание относительно вашего отступа. Вот более традиционный отступ:
(defun last-char (s)
"Get last character"
(char s (- (length s) 1)))