Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Базарная площадь
  
О разделе

Основная страница

Группы обсуждений


Тематический каталог обсуждений

Архив

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  13:06[Войти] | [Зарегистрироваться]
Обсуждение темы:
Оберон-технология: особенности и перспективы


Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение. 

Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру


Всего в теме 6256 сообщений

Добавить свое сообщение

Отслеживать это обсуждение

Обсуждение из раздела
Школа ОБЕРОНА

<<<... | 5296—5287 | 5286—5277 | 5276—5267 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 98


№ 5286   27-09-2007 18:37 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5285« (Geniepro)
___________________________
Ну это непрактичное решение. Легче все таки просто поименовать функцию чем так извращаться.
В конце концов, главное это читабельность кода.


№ 5285   27-09-2007 18:30 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5284« (Jack Of Shadows)
___________________________

Упс, ошибочка вышла. Так не сработает. Рекурсивные функции нельзя описывать анонимно. Имя нужно.

Ну вапще-то можно и анонимно. Для этого достаточно вспомнить о комбинаторах. Если сделать маленькую библиотечку разных комбинаторов:

s f g x  =  f x (g x)
y f      =  f (y f)

cond p f g x = if p x then f x else g x

то вот это выражение:

(y ((cond (==0) (const 1)) . ((s (*)) . (. pred))))

будет анонимной рекурсивной функцией, вычисляющей факториал...
Осталось только переписать НОД на комбинаторы... 8-о А это посложнее, у НОДа два параметра, а не один, как у факториала...


№ 5284   27-09-2007 15:36 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5283« (Jack Of Shadows)
___________________________
Упс, ошибочка вышла. Так не сработает. Рекурсивные функции нельзя описывать анонимно. Имя нужно.


№ 5283   27-09-2007 13:41 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5281« (Trurl)
___________________________
Пожалуйста:


lcf x 0 = x
lcf x = lcf y (mod x)



(mod x) возвращает анонимную функцию.



№ 5282   27-09-2007 12:15 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5280« (Jack Of Shadows)
___________________________
Вот что в Оберонах плохо - нет полиморфизма (или хотя бы дженериков), и процедуры не являются полноценными гражданами первого класса - нет анонимных функций, и даже локальные функции нельзя передавать в качестве аргументов другим функциям, что, впрочем, без анонимных функций пользы не даёт особой...
Geniepro

Спор начался с того, что в императивном Обероне нет анонимных функций :)

Если мы посмотрим проекты на императивных языках, то передача функции в качестве параметра встретится крайне редко.
Почему в функциональных языках это необходимо, я думаю, пояснять не надо.

ProcessListOfPairs myList \x y -> x + y

нужно сравнивать с конструкцией
for i:=0 to M-1 Do A[i]:=A[i]+B[i];

Простые конструкции вовсе не требуется оформлять в виде именованной процедуры.
Ни в функциональных, ни в императивных языках.


№ 5281   27-09-2007 12:00 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5278« (Jack Of Shadows)
___________________________
>>>Можно, приведите пример на дельфи/оберон. И мы попробуем вам дать аналог на хаскеле/лиспе
Зачем на дельфи/оберон? Можно сразу на хаскеле.

lcf x 0 = x
lcf x y = lcf y (x `mod` y)


Осталсь только записать как анонимную функцию.;-)


№ 5280   27-09-2007 11:51 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5275« (Сергей Перовский)
___________________________
Быстренько поискал в нескольких лисповых библиотеках использование анонимных функций.
hunchentoot: (web server) 226 kb - 40 анонимных функций
parenscript (javascript генератор) - 62 kb - 64 анонимных функций
cl-json - 15 kb - 14 анонимных функций
cl-ppcre (regular expressions) - 338 kb - 70 анонимных функций
cl-sql - 440 kb - 97 анонимных функций

Я думаю вопрос о частоте использования анонимных функций можно снимать :))


№ 5279   27-09-2007 11:34 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5275« (Сергей Перовский)
___________________________
Мне кажется, это похоже на inline функции, механизм очень мощный, но очень редко используемый.

Вам кажется потому что вы не там смотрите :))
В императивных языках этот механизм практически не используется. Уже об этом говорили. В функциональных языках используется сплошь и рядом.
Посмотрите исходники любой библиотеки на хаскель или лисп, благо их полно в интернете.


№ 5278   27-09-2007 11:32 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5275« (Сергей Перовский)
___________________________

А можно вместо суммы пример хотя бы с нахождением НОД?


Можно, приведите пример на дельфи/оберон. И мы попробуем вам дать аналог на хаскеле/лиспе


№ 5277   27-09-2007 11:31 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5274« (Trurl)
___________________________

>>>Ну почему же передергиваю ?
Потому что перешли от анонимности к краткости.


По моему смысл введения анонимных функций в язык заключается именно в их краткости. Больше они НИЧЕМ от именованных не отличаются.
То есть анонимность суть краткость.
Или вы видите какое то другое обьяснение их существования ?


<<<... | 5296—5287 | 5286—5277 | 5276—5267 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 98


Добавить свое сообщение

Отслеживать это обсуждение

Дополнительная навигация:
Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования