Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Установка на виндовс 
:(
    Опции темы
NLspieler
Дата 17.4.2009, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: нет
Всего: 19



Вот, решил поразвлекатся, расширить свой кодерский кругозор.

Короче, хочу попробовать кодить на Лиспе.

Что мне для этого нужно? Какие программы нужно установить на Windows XP, что бы кодить на Лиспе?  
PM MAIL   Вверх
whiteman
Дата 17.4.2009, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 12.4.2009

Репутация: нет
Всего: нет



NLspieler

если вы работаете в windows, то самое удобное, на первых порах, а может и не только, будет скачать и в один клик поставить это:
Lispworks

второе по удобству установки это:
Lisp in a Box, что есть эмакс, к которому нужно поставить еще и лисп, делается в два клика.

 
Удачи!

Это сообщение отредактировал(а) whiteman - 17.4.2009, 20:30
PM MAIL   Вверх
adejneka
Дата 17.4.2009, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 8.7.2005
Где: Москва, Россия

Репутация: 9
Всего: 11



Можете еще посмотреть PLT Scheme http://www.plt-scheme.org/
PM MAIL   Вверх
NLspieler
Дата 17.4.2009, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: нет
Всего: 19



Огромное спасибо! 
Скачал LispWorks 
и уже написал первую "прогу", которая находит корни квадратного уравнения

(икс1 а б с) первый из корней
(икс2 а б с) второй из корней

Впечатления просто зашкаливают

Код

(defun квадрат (арг)
    (* арг арг)
)

(defun 4ас (а с)
    (* 4 (* а с))
)

(defun диск (а б с)
    (- (квадрат б) (4ас а с))
)

(defun нет_корней? (а б с) 
    (< (диск а б с) 0)
)

(defun корень_диск (а б с)
    (sqrt (диск а б с))
)

(defun числитель1 (а б с)
    (+ (- 0 б) (корень_диск а б с))
)

(defun числитель2 (а б с)
    (- (- 0 б) (корень_диск а б с))
)

(defun корень1 (а б с)
    (/ (числитель1 а б с) (* 2 а))
)

(defun корень2 (а б с)
    (/ (числитель2 а б с) (* 2 а))
)

(defun икс1 (а б с)
    (if (нет_корней? а б с) NIL (корень1 а б с))
)

(defun икс2 (а б с)
    (if (нет_корней? а б с) NIL (корень2 а б с))
)

PM MAIL   Вверх
adejneka
Дата 17.4.2009, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 8.7.2005
Где: Москва, Россия

Репутация: 9
Всего: 11



До Лиспа Вы на Форте писали? smile
Код

(defun корни (a b c)
  (let ((d (sqrt (- (* b b) (* 4 a c))))
        (2a (* 2 a)))
    (if (= d 0)
        (values (/ (- (- b) d) 2a))
        (values (/ (- (- b) d) 2a)
                (/ (+ (- b) d) 2a)))))

Код

CL-USER> (корни 1 -5 6)
3.0
2.0
CL-USER> (корни 1 4 4)
-2.0
CL-USER> (корни 1 0 1)
#C(0.0 1.0)
#C(0.0 -1.0)

PM MAIL   Вверх
NLspieler
Дата 18.4.2009, 03:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: нет
Всего: 19



Нет, на Форте не писал. Только на php.
И вот решил, скорее из чистого любопытства, узнать, что же это такое "функциональное программирование"

В Лиспе пока ничего не знаю, кроме простейших арифметических операций.

Был бы рад узнать, что обозначают использованные вами функции

(let 
(values

и

(d





PM MAIL   Вверх
adejneka
Дата 18.4.2009, 06:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 8.7.2005
Где: Москва, Россия

Репутация: 9
Всего: 11



Оператор LET определяет локальные переменные. В моем примере таких переменных две: D - корень из дискриминанта и 2A - удвоенный коэффициент при X^2. "Синтаксический сахар" над LAMBDA, но очень вкусный.

VALUES - функция, возвращающая несколько значений. В Common Lisp обычно используется для функций типа деления с остатком, возвращающих неполное частное и остаток как два значения. С "многозначениями" можно работать как с единичным, при этом используется первое, а остальные игнорируются, и есть операторы MULTIPLE-VALUE-BIND и MULTIPLE-VALUE-CALL, позволяющие работать с всеми значениями. В моём примере более разумно было бы вернуть список корней как одно значение, но возврат нескольких может быть более эффективным.

Код

CL-USER> (format t "Первый корень равен ~S.~%" (корни 1 -5 6))
Первый корень равен 2.0.
NIL
CL-USER> (format t "Все корни: ~{~S~^, ~}.~%" (multiple-value-list (корни 1 -5 6)))
Все корни: 2.0, 3.0.
NIL
CL-USER> (format t "Первый корень равен ~S.~%" (корни 1 6 9))
Первый корень равен -3.0.
NIL
CL-USER> (format t "Все корни: ~{~S~^, ~}.~%" (multiple-value-list (корни 1 6 9)))
Все корни: -3.0.
NIL

CL-USER> (format t "Список: ~{~S~^, ~}.~%" '(1))
Список: 1.
NIL
CL-USER> (format t "Список: ~{~S~^, ~}.~%" '(1 2))
Список: 1, 2.
NIL
CL-USER> (format t "Список: ~{~S~^, ~}.~%" '(1 2 4))
Список: 1, 2, 4.
NIL
CL-USER> (format t "Список: ~{~S~^ -- ~}.~%" '(1 2 4))
Список: 1 -- 2 -- 4.
NIL


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LISP | Следующая тема »


 




[ Время генерации скрипта: 0.1144 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.