January 2nd, 2010

glider

Прав был Тёма

Цитирую из описания раздела "Мозг" сайта дизайн-студии Артемия Лебедева: "Записывание мыслей оказывает потрясающий эффект на головной мозг человека. Как только мысль записана, в голове освобождается место для новой мысли. Если же держать все свои идеи при себе, возникают опасные явления: во-первых, человек перестает придумывать новое, во-вторых, ему кажется, что у него в голове полно идей, хотя на самом деле их хорошо, если десять наберется".

Если ничего никому не рассказывать, то сидишь сам с собой, кодишь потихоньку и думаешь "выразительность, выразительность - о как крута, какой я умный, такую клевую штуку придумал". А как всем по сто раз про выразительность расскажешь, запостишь в ЖЖ, да еще и ответишь на несколько каментов на эту тему - дык сразу становится такой old news, что и думать об этой выразительности не хочется. В итоге, та часть мозга, которая все время обдумывала этот топик (удобно ведь думать на тему, для которой уже установлен контекст обдумывания - это вам не хаскеллы всякие непонятные), освобождается для генерации новых идей.

Что будет дальше? Какой я придумаю себе новый flavor of the month? Хз. Но что-то точно будет =) upd. А вот и он: http://xeno-by.livejournal.com/27636.html.
glider

Функциональный стиль и C#

Чем больше юзаю функциональный стиль в C#, тем больнее утыкаюсь в недостаток необходимых фич (это если не придираться по-крупному к отсутствию тайп-инференса, паттерн-матчинга, higher-kind полиморфизма и иже с ними):
   1) там, где нормальные люди пишут "(x, y)", надо уныло вбивать "Tuple.New(x, y)" или даже опускаться до явного указания генерик-параметров: "Tuple.New<T1, T2>(x, y)", если у тайп-инференса плохое настроение.
   2) в отсутствие изящных литералов для инициализации массивов и словарей нужно юзать кошмарно дружащие с решарпером инициализаторы.
   3) из-за того, что в сишарпе нет типа "функция", надо буквально на каждом шагу построения API провайдить оверлоады для Func<T1>, Func<T1, T2>, Func<T1, T2, T3>, Func<T1, T2, T3, T4>, Func<T1, T2, T3, T4, T5> - ну и так далее (а ведь, из-за того, что void это не тип, надо налабать еще столько же оверлоадов для Action!).

Cписок можно дополнить еще парой десятков косяков, но сегодня не об этом. Пост о том, что с анаморфизмами у сишарпа все в порядке - вот сегодня откопал такую прикольную симпафку: 19.June(1976).To(DateTime.Now).Step(1.Days())