Как стать автором
Обновить
1
0
Дмитрий @dima_mendeleev

Пользователь

Отправить сообщение
А давайте подумаем зачем
… элегантный способ сделать так чтобы тип был Tuple3[T, U, S]...
Не придется тратить время на парсинг скобочек.
Вообще-то элегантней всего в этой ситуации было бы использовать аппликативные функторы, а это ни shapeless, а scalaz (или — Haskell :-D.
Можно написать свою (левоассоциативную) «запятую» — extractor для пары.
Есть минимум две причины:
Первая связанная с научной составной типизированного лямбда исчисления, то есть «как принято у ученых». Типизированное лямбда исчисление определяется как формальная грамматика, в которой, как вы поняли, тип как раз указывается через две (а не четыре) точки.
Другая причина связанная с тем, как часто приходится писать тот или иной токен. В этом смысле хаскелисты решили, что cons-конструктор списка они пишут чаще чем тип, и по-этому для списка выбрали более короткой токен. Тогда как Агда/Идрис программисты чаще описывают типы.
Интересно было бы посмотреть на реализацию парсер-комбинаторов, как boost::spirit, только на constexpr-ах.
Это как раз задача для функционального программирования.
9 чисел вдруг оказались вдруг оказались

это несомненно знак…
товарно-денежные отношения между людьми являются лишь подтверждением того, что они не могут честно с друг другом взаимодействовать

А у вас получается видеть тонкие грани… значит все будет классно :)
Это оно так плохо отображается из-за того, что я отхабреный? (Тег source присутствует)
а я просто оставлю это здесь:

if (lambda sort = lambda v: (
lambda vec = list(v):
lambda len = len(vec):
lambda for_ = lambda r, f: map(f, r),
swap = lambda i, j: map(vec.__setitem__, (i, j), (vec[j], vec[i])):
lambda _ =
for_(range(len), lambda i:
for_(range(i, len), lambda j:
vec[i] < vec[j] or swap(i, j))):
list(vec))()()()():
__import__(«sys»).stdout.write("%s\n" % sort([3,5,2,6,8]))
)() or True:
print «You can do more in one expression»
> Возвращение ссылки на локальный объект
> Мне кажется, надо было не создавать новый итератор, а сохранить ссылку
Тогда можно вообще обойтись без временного объекта и возвращать me.

Вообще-то постфиксный инкремент (декремент) должен возвращать значение, а не ссылку. То есть решение проблемы — это убрать ссылку из типа результата.
Эта тема постоянна. И была всегда (в буквальном смысле), просто подавалась под разным углом, и персонажей по другому называли.
А вы читали «Комментарии автора к статье»?
Я думаю — это именно для вас.
Как такое…

units.traversed.(around target 1.0).health -= 3

… может не заинтересовать?
***даже без упоминания, что это — чистый, в смысле изменения состояния, код.
Запили свой терминал!!!
> Давно пользуюсь таким замечательным продуктом как Resharper-ом
Это видно :-D
Хабр не поддерживает Resharper?
По-моему он всегда одинаковый, но всегда кажется, что действительно возрос :-D
Очень классный подход — давать настолько маленькими порциями, чтоб нельзя было непонять.
Как вы дошли до этого? Ведь это проблема многих (всех?) докладчиков: сразу и глубоко.
Я думаю стоит написать как с (S (S O)) получаются циферки.
Удаление String из BaconBox не помешает держать метаданные с объектом — вы же можете создать тип:
data MetaData meta obj = MetaData meta obj

Оно раздельно выглядит композабельней и обобщенней.
Ваш метод идеально решает задачу превращения функции
f :: a -> b -> ... -> r

в функцию
f :: [String] -> String

И это я бы рассматривал отдельно от вашей предметной области, и вынес бы этот код в отдельный модуль.

И еще, можно не IO использовать, а просто некую монаду, и тогда изменяя ее, можно будет по разному обрабатывать ошибки, так как будет подставляться разная функция fail.

Информация

В рейтинге
Не участвует
Откуда
Украина
Зарегистрирован
Активность