Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для Кровавая Рука
28 / 4 / 1
Регистрация: 08.09.2012
Сообщений: 76

почему выводит только свойства последнего символа?

28.09.2013, 00:15. Показов 1313. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
CL-USER 1 > (defun funca(x)
  (+ x 2))
FUNCA
 
CL-USER 2 > (defun funcb(x)
  (* x 2))
FUNCB
 
CL-USER 3 > (defun funcc(x)
  (expt x 2))
FUNCC
 
CL-USER 4 > (defun fwrite (x)
  (dolist (nu x)
    (setf (get 'nu :a) (funca nu))
    (setf (get 'nu :b) (funcb nu))  
    (setf (get 'nu :c) (funcc nu))))
FWRITE
 
CL-USER 5 > (defun fread (x)
  (dolist (nu x)
    (print (get 'nu :a))
    (print (get 'nu :b))
    (print (get 'nu :c))))
FREAD
 
CL-USER 6 > (setq li '(1 2 3 4))
(1 2 3 4)
 
CL-USER 7 > (fwrite li)
NIL
 
CL-USER 8 > (fread li)
 
6 
8 
16 
6 
8 
16 
6 
8 
16 
6 
8 
16 
NIL
..и в конце функция выводит 4 раза свойства последнего элемента, а я сам себе внушаю, что должна выводить свойства каждого их них. Вот как-то так:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CL-USER 8 > (fread li)
 
3
2
1
4
4
4
5
6
9
6
8
16
NIL
Подскажите пожалуйста, в чём ошибка?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.09.2013, 00:15
Ответы с готовыми решениями:

Структура: Почему, когда я ввожу 5 работников и стаж 10 лет мне выводит только фамилию последнего работника?
Почему когда я ввожу 5 работников, а затем стаж 10 лет мне выводит только фамилию последнего работника #include <stdio.h> ...

Выводит в файл только последнего студента на C++
вот мои файлы power.h #ifndef power_h #define power_h #include <fstream> #include <string> using namespace...

Программа выводит только последнего студента, но не всех
День добрый! Помоги разобраться. Написал прогу на паскале для ввода данных студентов и вывода. Выводит только последнего студента но не...

12
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
28.09.2013, 01:29
Все свойства вы присваиваете символу nu.
0
 Аватар для Кровавая Рука
28 / 4 / 1
Регистрация: 08.09.2012
Сообщений: 76
28.09.2013, 06:16  [ТС]
..а откуда он тогда потом выводится функцией fread? он что глобальный? как их тогда вообще различить?
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
28.09.2013, 07:42
Начнем с того, что числа — не символы, а значения — не переменные.

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
(defun a (x)
  (+ x 2))
 
(defun b (x)
  (* x 2))
 
(defun c (x)
  (expt x 2))
 
(defun set-symbols (syms xs)
  (loop :for sym :in syms
        :for x   :in xs :do 
        (setf (get sym :a) (a x)
              (get sym :b) (b x)
              (get sym :c) (c x))))
 
(defun print-symbols (syms)
  (dolist (sym syms)
    (dolist (key '(:a :b :c))
      (print (get sym key)))))
 
(defun test ()
  (let ((syms '(one two three four)))
    (set-symbols syms '(1 2 3 4))
    (print-symbols syms)))
 
(test)
; 3 
; 2 
; 1 
; 4 
; 4 
; 4 
; 5 
; 6 
; 9 
; 6 
; 8 
; 16 
; NIL
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38196 / 21129 / 4309
Регистрация: 12.02.2012
Сообщений: 34,737
Записей в блоге: 14
28.09.2013, 10:28
Кровавая Рука, принципиально не заглядывая в код, хочу заметить, что обычно в качестве результата Лисп возвращает значение последней вычисленной формы (выражения).
1
 Аватар для Кровавая Рука
28 / 4 / 1
Регистрация: 08.09.2012
Сообщений: 76
28.09.2013, 12:03  [ТС]
Цитата Сообщение от korvin_ Посмотреть сообщение
Начнем с того, что числа — не символы, а значения — не переменные.
вот надо было начать с того, что такое символы..
Цитата Сообщение от korvin_ Посмотреть сообщение
:for
Цитата Сообщение от korvin_ Посмотреть сообщение
:in
- вот эти вот штуки почему с ":" начинаются? ..если что, завтра сам посмотрю...
Цитата Сообщение от Catstail Посмотреть сообщение
в качестве результата Лисп возвращает значение последней вычисленной формы (выражения)
- вот и все так говорят..
..пойду переосмыслю жизнь. Всем спасибо..
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
28.09.2013, 13:38
Цитата Сообщение от Кровавая Рука Посмотреть сообщение
- вот эти вот штуки почему с ":" начинаются? ..если что, завтра сам посмотрю...
Это символы, принадлежащие пакету keyword. Они доступны в любом пакете, и квотить их не надо.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38196 / 21129 / 4309
Регистрация: 12.02.2012
Сообщений: 34,737
Записей в блоге: 14
28.09.2013, 18:49
Цитата Сообщение от korvin_ Посмотреть сообщение
что числа — не символы
- а в HomeLisp-е символы... Может и зря, но прикольно:

Lisp
1
2
3
4
5
6
7
(setf (getprop 1 'something) 'beep)
 
==> beep
 
(proplist 1)
 
==> (FIXED something beep)

Не по теме:


Дальше пошел только Forth - там можно двойке присвоить значение 3. И тогда 2*2=9

2
 Аватар для Кровавая Рука
28 / 4 / 1
Регистрация: 08.09.2012
Сообщений: 76
29.09.2013, 14:39  [ТС]
Небольшой итог.. В CommonLisp выходит нельзя числовому элементу списка присвоить свойство?
0
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
29.09.2013, 15:36
Цитата Сообщение от Кровавая Рука Посмотреть сообщение
В CommonLisp выходит нельзя числовому элементу списка присвоить свойство?
Попробуй Хэш-таблицы.
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(setq *w* '(1 1 2 3 4 4 5 5 5)
      *ht* (make-hash-table))
 
(dolist (i *w* t)
  (setf (gethash i *ht*) (count i *w*)))
 
(maphash #'(lambda (key var) (format t "Elem ~A = Count ~A~%" key var)) *ht*)
 
Elem 1 = Count 2
Elem 2 = Count 1
Elem 3 = Count 1
Elem 4 = Count 2
Elem 5 = Count 3
NIL
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38196 / 21129 / 4309
Регистрация: 12.02.2012
Сообщений: 34,737
Записей в блоге: 14
29.09.2013, 16:17
Цитата Сообщение от Кровавая Рука Посмотреть сообщение
В CommonLisp выходит нельзя числовому элементу списка присвоить свойство?
- похоже на то...
0
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
29.09.2013, 18:33
А что, интересно.
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
;HomeLisp. Присвоение числу свойства.
(defvar *num* 1)
 
(progn
(defun sum   (x) (+ x 2))
(defun mult  (x) (* x 2))
(defun -expt (x) (expt x 2))
)
 
(progn
(setf (getprop 1 'sum)  (sum   *num*))
(setf (getprop 1 'mult) (mult  *num*))
(setf (getprop 1 'expt) (-expt *num*))
)
 
==> 1
 
(proplist 1)
 
==> (FIXED sum 3 mult 2 EXPT 1)
 
(printline (list (getprop 1 'sum) (getprop 1 'mult) (getprop 1 'expt)))
(3 2 1)
 
==> (3 2 1)
Добавлено через 1 час 9 минут
То есть здесь правильнее так.
Lisp
1
2
3
4
5
(progn
(setf (getprop *num* 'sum)  (sum   *num*))
(setf (getprop *num* 'mult) (mult  *num*))
(setf (getprop *num* 'expt) (-expt *num*))
)
1
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
29.09.2013, 22:41
Цитата Сообщение от Кровавая Рука Посмотреть сообщение
Небольшой итог.. В CommonLisp выходит нельзя числовому элементу списка присвоить свойство?
Свойства бывают у символов. Числа - не символы. Списки ни при чём.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.09.2013, 22:41
Помогаю со студенческими работами здесь

Должно выводить всех службовцев ,а выводит только последнего
#include <iostream> using namespace std; class Slujbovecz{ string imya; string FIO; int vozrast; int diplom; int...

Cout выводит только первые 3-4 символа
Код записывает несколько слов в два двоичных файла, потом записывает их из файла в два указателя и должен выводить их на экран, но выводит...

Программа выводит на экран только один символ из строки с максимальным кодом символа
Помогите написать 2 программы. 1.Пользователь вводит строку. Программа выводит на экран только один символ из строки с максимальным...

Почему innerHTML выводит только текст?
файл html <div id="elem"></div> файл js var text = '<b>текст</b>'; elem.innerHTML = text; Должен выводить ...

Выводит только почему-то последний столбец
Код кнопка button с базы данных в c# windows forms с кнопками combobox и textbox Выводит только почему то последний столбец.Помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru