Какой рейтинг вас больше интересует?
						
						
						
					 
				 
				
								
				
				
				
				
				
				 | 
				
					
					
					
						Главная /  Главные темы /  Тэг «функционально»
					 
					
					
						  
						
							
																																					Объектно-ориентированное функциональное метапрограммирование или каррирование метода   2012-08-01 19:59:33
										
										  + развернуть текст   сохранённая копия
										
										 
Вдохновившись статьей Еще раз о каррировании и частичном применении в PHP, в голову пришла реализация частичного применения метода, именно метода, а не функции. 
 Каррируем!
										  
										
										
										Тэги:  closure,  php,  каррирование,  метапрограммирование,  ооп,  применение,  программирование,  функциональный,  частичный 
																																							LINQ для PHP. Часть 2. Если гора не идёт к Магомету, Магомет идёт к горе   2012-07-15 23:25:49
										 
										Как можно было заметить из моей предыдущей статьи со сравнением библиотек LINQ для PHP, библиотек  ... 
										
										 + развернуть текст   сохранённая копия
										
										Как можно было заметить из моей предыдущей статьи со сравнением библиотек LINQ для PHP, библиотек много, а качества мало: ленивые вычисления не реализованы ни в одной библиотеке, тесты есть в половине случаев, типы коллбэков ограничены, а иногда и вовсе незнамо что выдаётся за LINQ. Поэтому я написал свою библиотеку. Встречайте:
 YaLinqo — Yet Another LINQ to Objects for PHPВозможности:
 
- Самый полный порт .NET LINQ на PHP, со многими дополнительными методами. Некоторые методы отсутствуют, но работа ведётся. Всего реализовано более 70 методов.
 
- Ленивые вычисления, текст исключений и многое другое, как в оригинальном LINQ.
 
- Детальная документация PHPDoc к каждому методу. Текст статей адаптирован из MSDN.
 
- 100% покрытие юнит-тестами.
 
- Коллбэки можно задавать замыканиями, «указателями на функцию» в виде строк и массивов, строковыми «лямбдами» с поддержкой нескольких синтаксисов.
 
- Ключам уделяется столько же внимания, сколько значениям: преобразования можно применять и к тем, и к другим; большинство коллбэков принимает на вход и то, и другое; ключи по возможности не теряются при преобразованиях.
 
- Минимальное изобретение велосипедов: для итерации используются Iterator, IteratorAggregate и др. (и их можно использовать наравне с Enumerable); исключения по возможности используются родные похапэшные и т.п.
 
 
Пример кода:
 // Отфильтровать продукты с ненулевым количеством, поместить в соответствующие категории,
// отсортированные по имени. Продукты отсортировать сначала по убыванию количества, потом по имени.
from($categories)
    ->orderBy('$v["name"]')
    ->groupJoin(
        from($products)
            ->where('$v["quantity"] > 0')
            ->orderByDescending('$v["quantity"]')
            ->thenBy('$v["name"]'),
        '$v["id"]', '$v["catId"]', 'array("name" => $v["name"], "products" => $e)'
    );
 
 Детальное описание, обсуждение архитектуры, ссылки
										  
										
										
										Тэги:  functional,  linq,  php,  phpstorm,  programming,  sql,  yalinqo,  похапэ,  программирование,  функциональный 
																																								
																				LINQ для PHP. Часть 1. Я его слепила из того, что было, а потом, что было, то и полюбила   2012-07-11 20:59:40
										 
										 ...  C# или любой  функциональный язык — при виде ... 
										
										 + развернуть текст   сохранённая копия
										
										Сказ о том, как LINQ на PHP портировали. Сравнение ныне существующих библиотек с табличками, но без графиков — прилагается.
 Картинка код для привлечения внимания  (картинок не дождётесь!)echo Phinq::create($people)
  ->groupBy(function($person) { return $person->residence->region; })
  ->select(function($grouping) {
    $obj = new stdClass();
    $obj->people = $grouping;
    $obj->region = $grouping->getKey();
    return $obj;
  })->orderBy(function($obj) { return $obj->people->count(); }, true)
  ->aggregate(function($current, $next) {
    $count = $next->people->count();
    return $current . sprintf(
      "%d %s (%s) live in the %s region\n",
      $count,
      $count === 1 ? 'person' : 'people',
      $next->people->aggregate(function($current, $next) {
        if ($current !== null) {
          $current .= ', ';
        }
        return $current . sprintf('%s [%s]', $next->name, $next->residence->code);
      }),
      $next->region
    );
  });
 Кто видел C# или любой функциональный язык — при виде этого шедевра закатит глаза (если они предварительно не вылетят из орбит). И, наверное, будет прав. Но можно ещё вот так: $lowNums =
	from('$n')->in($numbers)->
	where('$n < 5')->
	store($digits)->into('digits')->
	select('$digits[$n]');
  А как ещё можно? Осторожно, много текста!
										  
										
										
										Тэги:  functional,  linq,  php,  phpstorm,  programming,  sql,  грусть,  печаль,  похапэ,  программирование,  функциональный 
																																							Десять вариантов кухонь с деревянной мебелью и белыми столешницами   2012-06-29 09:41:21
										 
										Весной этого года мы взялись за ремонт кухни.  Сейчас мы находимся в глубоких размышлениях по поводу ... 
										
										 + развернуть текст   сохранённая копия
										 
										Весной этого года мы взялись за ремонт кухни.  Сейчас мы находимся в глубоких размышлениях по поводу его завершения! Мы уже прошли стадию основного планирования и выделения бюджетных средств и теперь решаем вопрос по поводу отделки. Лично я практически остановилась на деревянных шкафах с белой столешницей (из кварца, белого гранита или мрамора). Мне понравилось, как это [...]
										 
										
										
										Тэги:  архитектура,  интерьер,  кухня,  мебель,  мраморный,  оформление,  столешница,  функциональный 
																																							Еще раз о каррировании и частичном применении в PHP   2012-05-21 12:16:50
										 
										 ...  из  функциональных языков программирования ... некоторых элементов  функционального программирования ( ... 
										
										 + развернуть текст   сохранённая копия
										
										 В недавней статье предложена реализация  каррирования (currying) и  частичного применения (partial function application) на PHP. Ее фундаментальным недостатком является то, что результатом каррирования является не функция, а объект. Он уже не может быть передан в качестве callback-параметра, а для подстановки аргументов приходится использовать специальный синтаксис. В настоящем тексте предлагается новая, прозрачная реализация этих конструкций для PHP 5.3 и выше.
 Термин currying  происходит от фамилии американского математика Haskell Curry. Второе значение слова currying   — выделка дубленой кожи. 
Понятия каррирования и частичного применения происходят из функциональных языков программирования, в рамках которых они находят широчайшее применение. Современный PHP проявляет тенденцию к заимствованию некоторых элементов функционального программирования (функции как объекты первого класса, анонимные функции и замыкания), так что обсуждаемые концепции уже не являются для него совершенно инородными.
 
Эмуляция каррирования и частичного применения на PHP — это один из примеров того, что Макконнелл в «Совершенном коде» (гл. 4.3) называет программированием  с использованием языка, а не  на языке. 
 Читать дальше →
										  
										
										
										Тэги:  application,  curry,  function,  functional,  partial,  php,  programming,  веб-разработка,  карринг,  каррирование,  применение,  программирование,  функциональный,  частичный 
																											
								
								Страницы:  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...  
															 
							  
						 
					 
					
					
						Главная / Главные темы / Тэг «функционально»
					  
									 | 
				
								
				
												
				
				
												
					
					
										Взлеты Топ 5 
					
										
										Падения Топ 5 
					
									 
				
				
				
				
								
				
				 |