Функції рядків
14
10. PRINT-LENGTH
$ (DEFUN PRINT-LENGTH (atm)$ (PRINT-LENGTH ‘Mulisp)
((ATOM atm) (LENGTH (UNPACK atm)))6
$ (PRINT-LENGTH -156)$ (PRINT-LENGTH NIL)
43
Приклади
1. Написати функцію, яка для заданого атома знаходить максимальну кількість літер, яка в ньому йде підряд. Повернути конс, який складається з літери та числа. Наприклад, для атома a22eeerty повернути (e . 3).
(DEFUN symmax (atm)$ (symmax ‘a22eeerty)
((NOT (ATOM atm)) NIL)(e . 3)
(SETQ lst (UNPACK atm) endel (ASCII 0) endct 0)$ (symmax ‘nil)
(LOOP(n . 1)
((NULL lst))$ (symmax 1222334)
(SETQ el (CAR lst) ct 0)(\2 . 3 )
(LOOP
((NOT (EQL (CAR lst) el)))
(POP lst)
(INCQ ct) )
(IF (> ct endct) (SETQ endct ct endel el)) )
(CONS endel endct) )
Робота з файлами
По замовченню за пристрій потокового вводу (CIS - Current Input Stream) береться консоль.1.1. Для читання даних з вхідного потоку використовують функцію READ. Після виконання команди (SETQ a (READ)) ви повинні ввести з консолі вираз, який буде прочитано та присвоєно змінній а. При цьому якщо буде введено декілька об’єктів, то змінній а буде присвоєно перший об’єкт. Наприклад, якщо ви введете: as bf gh, то змінна a прийме значення as. Якщо Ви хочете ввести список (складний об’єкт), то його необхідно вводити в круглих дужках: (as df gh).
2.2. Функція (CLEAR-INPUT) чистить буфер вводу. В будь-якому випадку повертається NIL.