← All posts tagged Lisp

omnivore
Lisp ISLisp (http://www.islisp.org/docs/islisp-v23.pdf) отличный же стандарт. То, что нужно для встраивания. И чего он не стал более популярным
omnivore
news пишут, что вышел новый OpenDylan. Такой себе common lisp+clos в синтаксисе бейсика. Но, насколько я помню, активное развитие дилана закончилось года 3-4 назад
omnivore
Emacs pike стандартный режим для языка pike в емаксе не умеет отправлять код в запущенный интерпретатор пайка. Добавил следующий код (в конце поста и по ссылке paste.lisp.org Теперь можно отправлять регионы таким образом:

(defun pike-execute-region (start stop)
(interactive "r")
(execute-region "pike" start stop))

(global-set-key (kbd "C-c C-r") 'pike-execute-region)

Думаю, это будет полезно и для других языков, у которых отсутствует поддержка repl в емаксе.

Код вспомогательных функций:

(defun ensure-process (interp)
(or (get-process interp)
(progn
(apply 'make-comint
interp
(expand-file-name interp
"/usr/bin/")
nil
nil)
(make-local-variable 'comint-prompt-regexp)
;;(set-syntax-table *-mode-syntax-table)
(setq comint-prompt-regexp "^>")
(get-process interp))))


(defun execute-region (interp start end)
"Send the region between START and END to the running interpreter."
(interactive "r")
(let* ((proc (ensure-process interp))
(start (min (point) (mark)))
(end (max (point) (mark)))
(region (buffer-substring-no-properties start end)))
(when (= start end)
(error "Region is empty"))
(pop-to-buffer (process-buffer proc))
(process-send-string interp (concat region "\n"))))
omnivore
ЖЖ Lisp я понял, почему мне нравится писать на лиспе прототипы. Дело, на самом деле, в скобочках :) Благодаря им программа на лиспе выглядит и пишется как текст.
Вот почему, оказывается, я обычно выключаю подсветку синтаксиса, когда пишу на лиспе. Это же больше исполняемый текст, а не просто код.
Метапрограммирование, clos, repl — все фигня. Главное — скобочки!
omnivore
Java Lisp programming linj (https://github.com/xach/linj) — транслятор коммон лиспа в яву (компилируемую jvm-1.1 и выше). Выглядит красиво. (да, новость про linj видел еще в начале года, но только руки дошли почитать туториал)
omnivore
Lisp :) с лора:
что общего между пуганой вороной и письменным столом?
Оба можно представить списком!
omnivore
Lisp programming еще один элементарный, но красивый пример из лямбда-исчисления. (этот пример есть также в SICP). Определяем на лиспе функцию проверки условия, пользуясь только лямбда-функциями. (на схеме или хаскелле этот пример выглядел бы, кончено же, лаконичнее).

(defun true (a b) (declare (ignore b))
a)

(defun false (a b) (declare (ignore a))
b)

(defun if-then-else (condition then else)
(funcall condition then else))

(if-then-else #'true 1 2) ;; ==> 1
(if-then-else #'false 1 2) ;; ==> 2
omnivore
Lisp programming числа черча — красивая вещь, позволяет записывать арифметические выражения, используя только механизм лямбда-функций. например, на лиспе:

;; инкремент
(defun s (number)
(lambda () number))
;; декремент
(defun p (number)
(funcall number))

(defvar zero nil)

(defun minus (n m)
(cond ((and (eq n zero) (eq m zero)) zero)
((eq m zero) n)
(t (minus (p n) (p m)))))

(defun cmp (n m)
(eq zero (minus n m)))

;; тестим
(let* ((one (s zero))
(two (s (s zero)))
(three (s two)))
(cmp one (minus three two))) ;; => t

(cmp (s (s zero)) (s (p (s (s zero))))) ;; => t
(cmp (s (s zero)) (p (p (s (s zero))))) ;; => nil
omnivore
? programming в последней "практике функционального программирования" пара статей про рефал. Если бы под него был стандарт типа Common Lisp и соответствующии реализации — это была бы просто убийственная весчь. Но, как и почти всегда в советстком союзе и россии, хорошее дело пошло прахом. И Турчин (автор рефала, идеи суперкомпиляции) вынужден был покинуть совок.

А еще Бертран Мейер (автор Эйфеля и контрактного программирования) учился в Ленинграде и даже, если я не ошибаюсь, сносно говорил по-русски. И avl деревья — в честь Адельсон-Вельского. Еще был Ершов. И Степанов — автор STL. И Пажитнов (автор Pandoras Box :) ). Кто еще?

А кого Вы знаете из отечественных светил в компьютерных науках?