Функции хранящие состояние
От: AlexCab LinkedIn
Дата: 04.08.11 07:55
Оценка:
Допустим внутри лямбда функции может находится переменная хранящая значение до следующего вызова:

  Func LAMBDA [int /*Типы_аргументов*/][int /*Типы_результатов*/]{/*Методы(например реализация операторов) работы с лямбдой как с значением*/} //Определение типа функции

  S Func  //Две переменных(контейнера) для значений типа "Func" 
  G Func
      
  S = (Arg)          //Определяем значение типа "Func" и помещаем(присваиваем) его в переменную "S".
      {   
      H INT 0        //Это переменная для значений типа "INT" сохраняющая своё значение до следующего вызова, с начальным значением 0. 
      H = H + Arg    //"Алгебраическая прогрессия".    
      Rez = H        //Возврат результата.           
      }
      (Rez) Func
   
  Printf( S(1) )     //Отобразит "1", переменная "H" теперь хранит "1" 
  
  G = S              //Копирование лямбды в переменную "G".
  DO 3 { G(1) }      //Вызов копии в "G" 3-и раза.  
   
  Printf( S(0) )     //Отобразит "1"
  Printf( G(0) )     //Отобразит "4"


Такая лямбда это как бы сильно урезанный объект из ООП(с одним методом).
Как вы считаете, может ли быть полезной на практике такая возможность?
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re: Функции хранящие состояние
От: minorlogic Украина  
Дата: 04.08.11 07:59
Оценка:
http://en.wikipedia.org/wiki/Functor
Ищу работу, 3D, SLAM, computer graphics/vision.
Re: Функции хранящие состояние
От: jazzer Россия Skype: enerjazzer
Дата: 04.08.11 08:47
Оценка: 1 (1) +1
Здравствуйте, AlexCab, Вы писали:

AC>Допустим внутри лямбда функции может находится переменная хранящая значение до следующего вызова


AC>Такая лямбда это как бы сильно урезанный объект из ООП(с одним методом).

AC>Как вы считаете, может ли быть полезной на практике такая возможность?

Если у каждого объекта-функции свое собственное состояние — то это просто функция с замыканием (она же функтор в языках, где замыкания не поддерживаются напрямую, типа С++03).

Если же состояние одно на все объекты-функции, то, например, rand() так и работает и вполне полезен на практике (хотя нерасшаренное состояние обычно удобнее).
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Функции хранящие состояние
От: Mamut Швеция http://dmitriid.com
Дата: 04.08.11 09:35
Оценка: 40 (2) :)
AC>Такая лямбда это как бы сильно урезанный объект из ООП(с одним методом).

http://ru-lambda.livejournal.com/27669.html


dmitriid.comGitHubLinkedIn
Re: Функции хранящие состояние
От: AlexCab LinkedIn
Дата: 07.08.11 14:56
Оценка:
minorlogic, jazzer, Mamut

Спасибо, разобрался
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.