?

Log in

Почему LISP? - Жить не можем без проблем! [entries|archive|friends|userinfo]
Жить не можем без проблем!

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Почему LISP? [Jan. 13th, 2011|02:05 pm]
Жить не можем без проблем!

ru_lisp

[aralex]

Как говорил Ворошилов, вопрос к Знатокам (к знатокам LISP-а в данном случае)! Почему таки LISP? Или, если конкретнее, вопроса три:

  1. Для каких именно задач LISP подходит больше, чем другие языки?
  2. За счёт чего для них он подходит больше?
  3. В чём именно выражается его преимущество?

Если не в лом, приведите, pls, коротенькие иллюстрации на LISP-е (или ссылочку на них). Заранее благодарен!

Исходно данный пост был размещён в сообществе ru_programming, но там Знатоков, способных ответить внятно и по сути, увы, не нашлось :(

linkReply

Comments:
[User Picture]From: migmit
2011-01-22 10:01 am (UTC)
> Ну ежели хотите - называйте макросы с большой буквы.

Блин. Мне не нужны ограничения для МЕНЯ. Мне нужны ограничения для моих коллег, пишущих другие части системы. Мне нужны ограничения для программистов, пишущих библиотеки, которыми я пользуюсь.

Или вы всегда закат солнца вручную делаете, причём в одиночку?
(Reply) (Parent) (Thread)
From: (Anonymous)
2011-01-22 01:33 pm (UTC)
Да, это просто ниипательски сложно:
> (module test racket
      (provide (except-out (all-from-out racket) 
                           define-syntax-rule)
               (rename-out [my-syntax-rule define-syntax-rule]))
    
    (define-syntax (my-syntax-rule stx)
      (syntax-case stx ()
        [(_ (name args ...) body) (if (not (char-upper-case? (string-ref (symbol->string (syntax->datum #`name)) 0)))
                                      (raise-syntax-error (syntax->datum #`name) "bad macros name" stx)
                                      #`(define-syntax-rule (name args ...) body))])))
> (module m 'test
    (provide f)
    (define-syntax-rule (f a b) (+ a b)))
. . f: bad macros name in: (define-syntax-rule (f a b) (+ a b))
> (module m 'test
    (provide F)
    (define-syntax-rule (F a b) (+ a b)))
> (require 'm)
> (F 1 2)
3
> 

Суем туда все макро-формы (их не более десятка) и проблема решена.
Да, и вы пропустили, видимо, ту часть, где я говорил о проверке практикой.
(Reply) (Parent) (Thread)
From: (Anonymous)
2011-01-22 01:42 pm (UTC)
Ну и кроме того, существуют соглашения о наименовании - например ставим ? а конце предиката или ! в конце мутабельной функции, и их никто не нарушает, потому что они имеют практическую пользу. А вот никакого соглашения о разнице в наименовании макросов и функций никому в голову не пришло делать (причем это даже средствами языка, как видите, легко реализовать, безо всяких соглашений, выполнение которых не гарантировать), ну догадайтесь, почему?
(Reply) (Parent) (Thread)