как ни странно да, довольно часто, например в составе разных систем для решения узко-специализированных задач, да и на прологе можно клепать вполне себе удобные DSL-и.
Возможно это будет неожиданность, но даже согласно индексу Tiobe популярности языков программирования www.tiobe.com/index.php/content/paperinfo/tpci/index.html пролог (27 место) обгоняет таких зубров как Erlang (29) и Haskell (33)
на сколько знаю, да ) у Вас другие сведения?
Эрланг, например, выходил из пролога, даже синтаксис похож, но этим все ограничивается, ибо это обычный функциональный язык
for qsort in [lambda qs, L:
[] if L==[]
else [
qsort(qs, [e for e in T if e<=H]) + [H] + qsort(qs, [e for e in T if e>H])
for H in [L[0]]
for T in [L[1:]]
][-1],
]]
for p in [lambda s='':
w(str(s)+'\n'),
]]
for w in [
__import__('sys').stdout.write,
]
)
'''
here f is only data, that contains code!!!
'''
def do(code):
map(do,code) if '__iter__' in dir(code) else None
'''
here code is evaluated
'''
do(f)
''' ==>
1
2
3
Qsort:
[-1, 2, 3, 7]
я не зря сказал «некое подобие функционального программирования.»
на самом деле, по-моему, это местами даже очень напоминает хаскель…
смысл в том, что результат работы программы является как бы побочным эффектом выполнения функции, что, опять же, имхо, напоминает фп.
Понятно, что есть filter, map, reduce,… но это не вполне делает язык функциональным, поскольку это лишь следствие того, что функции являются объектами
Он чересчур гибкий (в ущерб скорости), и местами очень напоминает (и позволяет делать как в) перл. Многие (и я в том числе) склонны считать это, а так же меньшую выразительность синтаксиса недостатком руби. И это не вписывается в идеологию питона (import this). Только сегодня наткнулся на LOR'е на перлы самого DHH в рельсах www.linux.org.ru/view-message.jsp?msgid=3271907#3271930
Когда то пришла идея сделать подобное для другого форума. Тоже сделал скриптик на gm. Выглядело это так (мышка наведена на сообщение «Матчасть пускай ждет...», просто на скриншотах не видна): [1] (родительское сообщение в пределах экрана) [2] (родительское сообщение выше, за пределами экрана)
попап появлялся только по наведению и исчезал при уходе указателя мыши с сообщения
По проблеме определения родительского сообщения я для себя решил клиентским Greasemonkey расширением, подсвечивающим родительское сообщение, пример (мышка наведена на сообщение "Матчасть пускай ждет...", просто на скриншотах не видна):
http://www.picamatic.com/view/405325_1/
http://www.picamatic.com/view/405326_2/
Возможно это будет неожиданность, но даже согласно индексу Tiobe популярности языков программирования www.tiobe.com/index.php/content/paperinfo/tpci/index.html пролог (27 место) обгоняет таких зубров как Erlang (29) и Haskell (33)
Эрланг, например, выходил из пролога, даже синтаксис похож, но этим все ограничивается, ибо это обычный функциональный язык
>>> add = function (a) { return function (b) { return a + b } }
function()
>>> add(2)(3)
5
ejohn.org/blog/cross-window-messaging/
Вот еще примерчик
на самом деле, по-моему, это местами даже очень напоминает хаскель…
смысл в том, что результат работы программы является как бы побочным эффектом выполнения функции, что, опять же, имхо, напоминает фп.
Понятно, что есть filter, map, reduce,… но это не вполне делает язык функциональным, поскольку это лишь следствие того, что функции являются объектами
IDLE 3.0rc2
>>> '%s%s' % (1,23)
'123'
Работает где-то полминуты
[1] (родительское сообщение в пределах экрана)
[2] (родительское сообщение выше, за пределами экрана)
попап появлялся только по наведению и исчезал при уходе указателя мыши с сообщения
>>> def do(): prods = [] for n in range(1, 10000): if len(str(n))==len(set(str(n))): for k in range(2, n**.5+1): if len(str(k))==len(set(str(k))) and n%k==0 and len(set(''.join(map(str,(n,k,n/k))).replace('0','')))==9: print k,'*',n/k,'=',n prods.append(n) print sum(set(prods)) >>> do() 28 * 157 = 4396 18 * 297 = 5346 27 * 198 = 5346 12 * 483 = 5796 42 * 138 = 5796 4 * 1738 = 6952 39 * 186 = 7254 48 * 159 = 7632 4 * 1963 = 7852 45228проще всего
http://www.picamatic.com/view/405325_1/
http://www.picamatic.com/view/405326_2/