Re[3]: Чего не хватает... А что лишнего?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 09.12.05 08:44
Оценка: 1 (1) +1
Здравствуйте, Mamut, Вы писали:

Q>>Все было изобретено вместе с Лисп. То, что ты хочешь, это сложные макросы, которые есть в Лиспе. Я не хочу сказать, что они используются именно так, как ты сказал, но реализовать с их помощью такую схему довольно просто.


M>Пример для CLSQL:

M>
M>(with-transaction
M>        ()
M>    (insert-records :into [header]
M>                    :attributes '([id] [customer])
M>                    :values '(2 "Mary Smith"))
M>    (insert-records :into [detail]
M>                    :attributes '([id] [item] [quantity])
M>                    :values '(2 "BMW" 3)))
                
M>(select [customer] [item] [quantity] :from '([header] [detail])
M>        :where [= [header id] [detail id]])
M>


Тут возникает небольшой ньюанс. Используя Common SQL мы так и не уходим от синтаксиса LIST, который, как мне кажется, уступает стандартному синтаксису SQL. Например, необходимость квотирования нужных фрагментов, запись арифметических выражений и т. д. Скажем последний select как для меня гораздо более вразумительнее выглядит в виде:

select customer, item, quantity from header, detail where header_id = detail_id


Вопрос не в том, можно или нельзя это реализовать средствами языка. Вопрос в том, чтобы это можно было реализовать в наиболее элегантной форме. Если взять тот же синтаксис MATLAB, то любому выражению мз него можно записать аналог на C++. Но читабельность (восприятие) этого аналога будет сложнее. Например, двоеточие мы вынуждены будем заменить на некоторую константу, для оперций .* и .+ у нас не найдется операторов, ... Записывая это в LISP-е мы уйдем от привычной записи, когда одну формулу можно охватить одним взглядом без разбора нагромождения из скобочек, ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.