Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lisp
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.95/40: Рейтинг темы: голосов - 40, средняя оценка - 4.95
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,100
Записей в блоге: 23
1

Lisp системы для новичков.

07.02.2012, 23:17. Просмотров 7249. Ответов 53
Метки нет (Все метки)

вот, долго искал, читал статьи с ошибками, ругался. кажется нашёл то, с чего можно начинать. ссылка для тех кто испытывает трудности в установке более мощных систем, http://habrahabr.ru/blogs/lisp/83587/
, пока так вот, но это лучше чем ничего. если кто-то может прошу скидывать ссылки и информацию на простые и ,более функциональные системы, не отошедшие от начальной идеи и синтаксиса Lisp.

Добавлено через 3 часа 36 минут
по существу сразу бросается в глаза, что несколько программ не могут работать с файлом одновременно. вобщем это наверное и делает её чисто академической. а могло бы-можно было бы делать практически всё. решать задачу одной программой...хорошую задачу...как-то не то, одна мысль об этом сразу вобщем ставит крест, можно забыть, но поучится чисто ознакомится тоже можно. в емаксе можно вроде с одним файлом работать несколькими приложениями сразу. понятно, что тем кто имеет дело с стандартными языками программирования вряд ли поймут удобство решения задачи несколькими программами, просто я лисп нашёл по функционалу, по сути, я сам хотел создать нечто подобное. только мне с моими требованиями не избежать необходимости написания ОС, скорее всего, выполнение задачи несколькими программами это далеко не все мои пожелания. ну переводчик я думаю смогу изобразить одной программой. это скорее всего будет моя первая программа, кроме тренировочно тестовых, а дальше больше

Добавлено через 3 часа 24 минуты
странно, не обнаруживал, хоть и читал, наверное снова невнимательно http://lisper.ru/pcl/lather-rinse-repeat-a-tour-of-the-repl#fnt__4 ставится Lisp in a Box, а вот с SBCL проблемы большие почему-то
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2012, 23:17
Ответы с готовыми решениями:

Организация циклов в Lisp (bee lisp demo)
разбираюсь с простыми задачами, эти пока не знаю, как решать... помогите...

Учебник по Lisp для начинающих
Build Your Own Lisp. Learn C and build your own programming language in under...

Какие существуют библиотеки для ИИ на lisp?
Всем хорошего времени суток! Заинтересовала тема разработки искусственного...

Для чего нужен знак #' в Common Lisp?
Кто подскажет для чего нужен знак #' в Common Lisp?

Программное обеспечение для Windows 7 под Lisp
Подскажите, пожалуйста, программное обеспение для вин 7 для того, чтобы можно...

53
Catstail
Модератор
23884 / 11930 / 2106
Регистрация: 12.02.2012
Сообщений: 19,399
23.02.2012, 23:56 21
С какой "этой функцией"? Что вообще сделать-то нужно?
0
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,100
Записей в блоге: 23
24.02.2012, 00:24  [ТС] 22
если символу то очевидно что пройдёт, а вот если s1, то очевидно не пройдёт, если s1 переменная

Добавлено через 12 минут
нужно или переменную, значение которой атом разбить, или склеить атом из переменных, значения каждой из которых-атом.
далее, ну я понял, что если символу значение присваивать, то атом может разбить и можно, ну наверное так же и склеивать. потом отменять значение псимвола. но это костыль конечно, а не прямой код, костыли хоть и юзабельны, но на скорость работы влияют. впринципе для меня на данном этапе это не существенно. значит можно применять символ, просто потом отменять его значение? впрочем, если что, можете не отвечать, я сам попробовать могу, вы и так подсказку дали, спс. утром попробую
0
Catstail
Модератор
23884 / 11930 / 2106
Регистрация: 12.02.2012
Сообщений: 19,399
24.02.2012, 08:02 23
1) "переменную, значение которой атом разбить"

(setq v1 'ABCD) ;; у переменной v1 значение - атом ABCD
(setq v2 (explode v1)) ;; v2 будет равна списку (A B C D)

2)"склеить атом из переменных, значения каждой из которых-атом"

(setq V1 'ABC)
(setq V2 'DEF)

Две переменных, значения которых - атомы

(setq V3 (implode (append (explode V1) (explode V2))))

в результате V3 получит значение ABCDEF

Ну, а со строками все вообще просто. Как в Паскале...
0
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,100
Записей в блоге: 23
24.02.2012, 13:05  [ТС] 24
спасибо, это уже совсем иначе представляется

Добавлено через 1 час 22 минуты
а у вас нет простеньких листингов программ от начала до конца? типа демо, ну можно и не очень простеньких, хотя бы без комментариев. без листингов непросто разобраться. куски кода-это не то, когда работаешь с опр. IDE или средой. любые листинги, для вашей среды. есть у вас отрывки кода, но это всё равно что судить о том, как может выглядеть конечный продукт по лоскутку материала. желательно не математических программ тоже.

Добавлено через 10 минут
хотя есть такое, сорри. но маловато . какую нибудь бы прогу типа калькулятора с графическим интоерфейсом, сохраняющего результаты работы в текстовый файл, было бы наглядно, думаю, вполне. всё таки лучший способ научится собрать-для начала разобрать. ну или любую другую, впринципе, просто ваши полные листинги не более 5 строк, мало, а те что больше-куски. извините, конечно, за навязчивость.
0
Catstail
Модератор
23884 / 11930 / 2106
Регистрация: 12.02.2012
Сообщений: 19,399
25.02.2012, 09:20 25
Есть листинги. Вот программа, которая "гоняет" шарик по прямоугольному полю:
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
(grwCreate 'w 300 300 "Анимация" &HFFFFFF)
 
(grwShow 'w)
 
(grwScale 'w -105 105 -105 105)
 
(prog (x1 y1 x2 y2 vx vy k)
 
      (setq x1 0)
      (setq y1 0)
 
  @vx 
      (setq vx (rnd 1.3))
      (cond ((<= (abs vx) 1.0) (go @vx)))
 
  @vy
      (setq vy (rnd 1.3))
      (cond ((<= (abs vy) 1.0) (go @vy)))
 
      (grwSetParm  'w    // идентификатор окна
                   1     // ширина линий
                   0     // стиль заливки
                 _RED    // цвет заливки  
               _WHITE    // цвет переднего плана
       )
 
      (grwCircle 'w      // идентификатор окна
                 x1      // X центра
                 y1      // Y центра
                  5       // Радиус
                _RED    // цвет
       )
 
 Loop 
       
      (setq x2 (+ x1 (* vx 3)))
 
      (setq y2 (+ y1 (* vy 3)))
 
      (grwSetParm  'w    // идентификатор окна
                    1    // ширина линий
                    0    // стиль заливки
               _WHITE    // цвет заливки  
               _WHITE    // цвет переднего плана
       )
 
 
      (grwCircle 'w      // идентификатор окна
                 x1      // X центра
                 y1      // Y центра
                  5      // Радиус
             _WHITE      // цвет
      ) 
 
      (grwSetParm  'w    // идентификатор окна
                    1    // ширина линий
                    0    // стиль заливки
                 _RED    // цвет заливки  
               _WHITE    // цвет переднего плана
       )
 
 
      (grwCircle  'w     // идентификатор окна
                   x2    // X центра
                   y2    // Y центра
                    5    // Радиус
                 _RED    // цвет
      )
 
      (grwRefresh 'w 3)
 
      (setq k (grwInkey 'w))
 
      (cond ((eq k 27)  (return (list x1 y1 vx vy)))
            ((eq k 109) (prog nil (setq vx (* 0.75 vx)) (setq vy (* 0.75 vy)) ))
            ((eq k 107) (prog nil (setq vx (* 1.25 vx)) (setq vy (* 1.25 vy)) ))
            ((eq k 78)  (prog nil  
 
                         @vx 
                                  (setq vx (rnd 1.3))
                                  (cond ((<= (abs vx) 1.0) (go @vx)))
 
                         @vy
                                  (setq vy (rnd 1.3))
                                  (cond ((<= (abs vy) 1.0) (go @vy)))
 
                                  (grwCls 'w)
 
                                  (setq x2 0)
                                  (setq y2 0)
 
                        )
            )
      )             
       
      (cond ((greaterp x2 95) (setq vx (- 0 vx))))
 
      (cond ((greaterp y2 95) (setq vy (- 0 vy))))
 
      (cond ((lessp x2 -95) (setq vx (- 0 vx))))
 
      (cond ((lessp y2 -95) (setq vy (- 0 vy))))
      
      (setq x1 x2)
 
      (setq y1 y2) 
 
      (go Loop)
 
)
 
(gc)
 
(grwCls 'w)
 
(grwDestroy 'w)
0
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,100
Записей в блоге: 23
25.02.2012, 09:58  [ТС] 26
опять кусок , не компилируется. пишет не задано стартовое выражение. это некультурно просить весь листинг, или ннекультурно его давать? да и видно что окончания нету. нету старта. такое ощущение, что кодеры построили свою субкультуру, ладно..., переживу и всё равно сделаю то, что мне нужно, всё равно получается, хоть и не в тех средах, где хотелось бы.
0
Catstail
Модератор
23884 / 11930 / 2106
Регистрация: 12.02.2012
Сообщений: 19,399
25.02.2012, 10:14 27
1) Работаете ли Вы в HomeLisp?
2) Проверьте сначала, как это работает в IDE (сохраните в файл с расш. "lsp" и загрузите в IDE)
3) Если хотите сделать EXE, то возьмите вот это:
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
(defun Animate Nil
 
  (grwCreate 'w 300 300 "Animation" &HFFFFFF)
 
  (grwShow 'w)
 
  (grwScale 'w -105 105 -105 105)
 
  (prog (x1 y1 x2 y2 vx vy k p Clr n)
 
        (setq x1 0)
 
        (setq y1 0)
      
        (setq p  1.0) 
 
    @cl
        (setq n (rnd 4))
        (cond ((<= n 0) (go @cl)))
        (setq Clr (getel '(_RED _GREEN _BLUE _YELLOW) n))   
 
    @vx 
        (setq vx (* (rnd 10.0) p) )
        (cond ((<= (abs vx) 1.0) (go @vx)))
 
    @vy
        (setq vy (* (rnd 10.0) p) )
        (cond ((<= (abs vy) 1.0) (go @vy)))
 
        (grwSetParm  'w    // идентификатор окна
                     1     // ширина линий
                     0     // стиль заливки
                   Clr     // цвет заливки  
                 _WHITE    // цвет переднего плана
         )
 
        (grwCircle 'w      // идентификатор окна
                   x1      // X центра
                   y1      // Y центра
                    5      // Радиус
                  Clr      // цвет
         )
 
    Loop 
       
        (setq x2 (+ x1 (* vx 3)))
 
        (setq y2 (+ y1 (* vy 3)))
 
        (grwSetParm  'w    // идентификатор окна
                      1    // ширина линий
                      0    // стиль заливки
                 _WHITE    // цвет заливки  
                 _WHITE    // цвет переднего плана
         )
 
 
        (grwCircle 'w      // идентификатор окна
                   x1      // X центра
                   y1      // Y центра
                    5      // Радиус
               _WHITE      // цвет
        ) 
 
        (grwSetParm  'w    // идентификатор окна
                      1    // ширина линий
                      0    // стиль заливки
                    Clr    // цвет заливки  
                 _WHITE    // цвет переднего плана
        )
 
        (grwCircle  'w     // идентификатор окна
                     x2    // X центра
                     y2    // Y центра
                      5    // Радиус
                    Clr    // цвет
        )
 
        (grwRefresh 'w 10)
 
        (setq k (grwInkey 'w))
 
        (cond ((eq k 27)  (return (list x1 y1 vx vy)))
              ((eq k 109) (prog nil (setq p (* 0.75 p)) (setq vx (* p vx))  (setq vy (* p vy)) ))
              ((eq k 107) (prog nil (setq p (* 1.25 p)) (setq vx (* p vx))  (setq vy (* p vy)) ))
              ((eq k 78)  (prog nil  
 
                         @vx 
                                  (setq vx (* p (rnd 10.0)))
                                  (cond ((<= (abs vx) 1.0) (go @vx)))
 
                         @vy
                                  (setq vy (* p (rnd 10.0)))
                                  (cond ((<= (abs vy) 1.0) (go @vy)))
 
                         @cl
                                  (setq n (rnd 4))
                                  (cond ((<= n 0) (go @cl)))
                                  (setq Clr (getel '(_RED _GREEN _BLUE _SILVER) n))   
 
                                  (grwCls 'w)
 
                                  (setq x2 0)
                                  (setq y2 0)
 
                        )
            )
        )             
       
        (cond ((greaterp x2 95) (setq vx (- 0 vx))))
 
        (cond ((greaterp y2 95) (setq vy (- 0 vy))))
 
        (cond ((lessp x2 -95) (setq vx (- 0 vx))))
 
        (cond ((lessp y2 -95) (setq vy (- 0 vy))))
      
        (setq x1 x2)
 
        (setq y1 y2) 
 
        (go Loop)
 
  )
 
  (gc)
 
  (grwCls 'w)
 
  (grwDestroy 'w)
 
)
А в качестве стартового выражения при создании EXE укажите (Animate).
0
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,100
Записей в блоге: 23
25.02.2012, 16:18  [ТС] 28
да, в вашей IDE делаю: создаю екзефайл, запускаю, появляется окно программы, но оно вобщем ничего не делает-из него можно только выйти.

Добавлено через 5 часов 53 минуты
она не работает, просто окно, даже не развёрнутое: только кнопки меню и всё, с выходом, кнопка "выйти" работает.
0
Catstail
Модератор
23884 / 11930 / 2106
Регистрация: 12.02.2012
Сообщений: 19,399
25.02.2012, 19:18 29
Ох... Вы бы заглянули в документацию (http://catstail.narod.ru/homelisp/exe.html). При создании EXE-файла по умолчанию создается экзешник с диспетчерской формой. Если щелкнуть по кнопке с изображением треугольника (Пуск), то запустится программа.

Если дисп. форма не нужна, то при создании экзешника уберите галочки "Создавать дисп. форму" и "Сообщить о завершении". Тогда программа запустится сразу.
0
Vtulhu
423 / 377 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
25.02.2012, 19:33 30
Что лучше для самого-самого начинающего - HomeLisp или BEE Lisp? А может, что-то третье? Самое главное для меня - это чтобы сразу после установки работало, плюс подробная русскоязычная справка, примеры, подсветка синтаксиса. Надёжность кода важнее скорости. Платность не пугает.
0
Catstail
Модератор
23884 / 11930 / 2106
Регистрация: 12.02.2012
Сообщений: 19,399
25.02.2012, 19:51 31
Я - лицо заинтересованное... Но мнение выскажу: для начинающих HomeLisp лучше. И вот почему:
сила и уникальность BEELisp-а - в том, что он обеспечивает надстройку над функциями API. Что для начинающего не слишком-то необходимо. А все остальное (кроме подсветки синтаксиса - её обеспечивает любой приличный редактор) есть в HomeLisp. HomeLisp и создавался для начинающих.
Хотя подсветки синтаксиса в HL нет, зато есть аппарат шаблонов - выбираешь нужную функцию, и в код вставляется шаблон вызова. Остается только его настроить. Вот где это подробно описано: http://catstail.narod.ru/homelisp/pattern.html

Прошу не рассматривать написанное, как "наезд" на BEELisp - это добротная разработка. Но не для новичков.
1
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,100
Записей в блоге: 23
26.02.2012, 09:29  [ТС] 32
я так понял, что bee lisp -это компилятор, интерпритатора нету.
0
Vtulhu
423 / 377 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
26.02.2012, 09:58 33
Цитата Сообщение от Hretgir Посмотреть сообщение
я так понял, что bee lisp -это компилятор, интерпритатора нету. рускоязычной документации там тоже нету, я гуглил. и вообще платить за среду без листингов- что покупать кота в мешке, а листингов у них тоже нет, если верить гуглу. русскоязычной документации вообще в природе нет, вот за исключением единичных случаев, ну можно найти в архивах на радио 86рк на ассемблер или ещё какой нибудь пк. политика, другим это никак не объясняется.
Странно, я даже не подумал гуглить русскую документацию, потому что мне это казалось само собой разумеющимся, ведь автор русскоязычный. Но его тоже можно понять. Иностранцам он продаёт свой продукт где-то за 30 баксов. И я верю, что покупают. Русским - за 5 баксов. И я точно знаю, что некоторые жмотятся заплатить даже эту сумму. <удалено>

Поставил ХоумЛисп и в первые же полминуты поймал хоть незначительный, но глюк. Если выбрать пункт "О программе" и сразу же закрыть, то горизонтальная полоска, разделяющая экран на две неравные части, резко прыгает вверх, так что экран теперь разделяется на примерно равные части.
 Комментарий модератора 
Запрещено публиковать ссылки на другие форумы, а также их пропаганда.
0
Catstail
Модератор
23884 / 11930 / 2106
Регистрация: 12.02.2012
Сообщений: 19,399
26.02.2012, 10:47 34
Лучший ответ Сообщение было отмечено как решение

Решение

Странно... На это никто не жаловался. У меня тоже ситуация не воспроизводится. Открываю и закрываю "О программе" - и ничего. А в какой ОС Вы ставили HomeLisp?
0
Vtulhu
423 / 377 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
26.02.2012, 10:52 35
Цитата Сообщение от Catstail Посмотреть сообщение
Странно... На это никто не жаловался. У меня тоже ситуация не воспроизводится. Открываю и закрываю "О программе" - и ничего. А в какой ОС Вы ставили HomeLisp?
Win7 Starter.
0
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,100
Записей в блоге: 23
26.02.2012, 12:09  [ТС] 36
у меня всё работает, тоже семёрка. может драйвер на видео? а вы погуглите, это ещё ничё, когда нагугливаешь ерунду или ничё, гораздо хуже, когда приобретаешь книгу, а она вобщем-фуфло, да ещё и диск с ней бракованый, я раз чтобы выявить брак в диске потратил около дня, на протяжении трёх, брак был, но пришлось смотреть урок по кадрам, да браком - это трудно назвать, в уроке человек быстро прокрутил скрол назад, сменил двоеточие на точку с запятой, и быстро крутнул листинг на прежнее место. как сказать что это брак? нет не брак. больше пахнет вредительством. они знают что есть часть, которая их знания игнорирует, потому как игнорируют они сами всё неподчиняемое. и стало быть так вот-вредительство, а иначе неподчинённая часть быстро освоит необходимое и выйдет из подчинения. в этом суть науки при власти. и иначе не будет. да я когда-то кодил на ассемблере, ничего сложного особо нет. но и документации сейчас нет нормальной. меня вот мучает вопрос, а что будут делать в сколково, если они не в состоянии перевести документацию на товар продаваемый на территории государства. ответ один-грабить, воровать.

Добавлено через 10 минут
мнение конечно субъективное, но основанное на немалом опыте, на неоднолетнем ( а вот поработать без охраны труда, в скотских условиях-это у нас как здрасьте, потом плюнете на здоровье. нет так не везде, есть час которая кивает и активно умасляет, идёт на подлости, там всё нормально, таких никто не обидит). тут политика, и не иначе.
0
Vtulhu
423 / 377 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
26.02.2012, 13:18 37
Цитата Сообщение от Hretgir Посмотреть сообщение
Добавлено через 10 минут
http://www.youtube.com/watch?v=2gIyw7auCbg
0
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,100
Записей в блоге: 23
26.02.2012, 14:45  [ТС] 38
Цитата Сообщение от Vtulhu Посмотреть сообщение
а, ну понятно тогда, спасибо за информацию, объясняет более чем необходимо, привет вицепремиеру

Добавлено через 18 минут
http://www.google.ru/url?sa=t&rct=j&...CPB9yA&cad=rjt это наверное он переводил, всё в его духе, так и должно быть , посмотрите сколько там переведено и вообще что там, вроде ж не мои слова что инет-стратегический объект, хорошая стратегия, подчёркивает способности, тут всё так, не только этот линк. а учится я у вас не буду, вы же патенты не выдаёте, это так чисто бабло на ветер выкинуть, нет уж, зарабатывайте, да и вообще вам пора республику создавать свою, москва это как то обобщённо с россией, даже если питер и екатеринбург
0
Catstail
Модератор
23884 / 11930 / 2106
Регистрация: 12.02.2012
Сообщений: 19,399
26.02.2012, 16:10 39
Давайте все-таки отделим Лисп от политики...
0
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,100
Записей в блоге: 23
26.02.2012, 17:31  [ТС] 40
ок. просто когда некоторые связывают документацию с воздушными шарами я связываю это действие с политикой. и оно так есть. больше не буду. сорри.

Добавлено через 17 минут а вот программа та вообще не запускается, если её компилировать как вы говорите, клацаю на значке, не запускается. вобщем действительно глюкавит, а на первый взгляд функционально.
0
26.02.2012, 17:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2012, 17:31

переделайте пожалуйста задачи сделанные для lisp в xlisp
переделайте пожалуйста задачи сделанные для lisp в xlisp. не понимаю этот язык...

Порекомендуйте Lisp для создания Windows-приложений с GUI
Разновидность языка (CL/Scheme/Racket/ISLISP...) значения не имеет. Главное,...

Как правильнее сделать виртуальную машину для Lisp?
Здравствуйте! Сейчас пишу компилятор для маленького лиспа, все работает так,...


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

Или воспользуйтесь поиском по форуму:
40
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru