LINUX.ORG.RU
ФорумTalks

а в вашем любимом ЯП есть что-то подобное?

 ,


2

4

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

http://habrahabr.ru/post/189712/

а в вашем любимом ЯП такое есть?

затравка для Ъ:

«Если ты хочешь использовать композицию функций, где фунция имеет два аргумента», говорит Шерлок, «тебе нужно (.).(.)!”» «Это похоже на испуганную сову», восклицает Ватсон

Мы так близки к линзам! «Ммм я почти общущаю вкус линз Ватсон» расплывается от счастья Шерлок. «Линзы позволяют тебе выполнять композицию функций, fold и обходы (traversals) вместе. Я чувствую как функторы и fold -ы перемешиваются во рту прямо сейчас!»

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

В комментах нагадили, как всегда.

yaspol
()

утомительный русский. утомительный хаскель. утомительные ленсы.

dmitry_malikov ★★
()

В наших любимых ЯП можно просто писать программы.

PolarFox ★★★★★
()

Опять репост с adit.io? Нинужно, оригинала достаточно.

Deleted
()
Ответ на: комментарий от observer

технических статей по делу в рецензируемых журналах хватает.

qnikst ★★★★★
() автор топика
Ответ на: комментарий от nerfur

А у них все не так как у людей. Обычно весеннее обострение, а тут летнее.

zloelamo ★★★★
()

Ужас какой. Какое оно все же страшное, ваше функциональное программирование.

comp00 ★★★★
()

Перевод отвратителен.

«тебе нужно (.).(.)!”» «Это похоже на испуганную сову»

на сову, говорите? :D

invy ★★★★★
()

Перевод ужасен, оригинальная статья, по-видимому, тоже. Картинки какие-то, шерлоки холмсы. Смысл прячется и ускользает.

unC0Rr ★★★★★
()
Ответ на: комментарий от qnikst

первые две строчки :D

Перед тем как начать читать пост, вы должны быть знакомы с понятием функтор. Читайте этот пост, чтобы узнать больше.

Предположим, ты хочешь создать игру.

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 1)
Ответ на: комментарий от invy

Предположим, ты хочешь создать игру.

Игры вокруг нас!
Обучение — игра, работа — игра, выборы мэра города — игра.
вот ЛОР это тоже текстовая игра.

Bad_ptr ★★★★★
()

а в вашем любимом ЯП такое есть?

Если задача переместить Марио на десять пикселей вправо то, да, есть :) Причём, гораздо менее извратно, кмк :)

class Position:
  def __init__(self, x=0, y=0):
    self.x = x
    self.y = y
  def __iadd__(self, other):
    self.x += other.x
    self.y += other.y
    return self
  def __repr__(self):
    return "Position(x={}, y={})".format(self.x,self.y)

class Mario:
  position = Position(10,10)

mario = Mario()
print(mario.position)
mario.position += Position(x=10, y=0)
print(mario.position)
true_admin ★★★★★
()

а в вашем любимом ЯП такое есть?

ахренеть!
Такая куча барахла взамен того что на императивщине решается просто и интуитивно. )))

Bad_ptr ★★★★★
()

Предположим, ты хочешь создать игру.
(...)
Отлично, хотел бы ты теперь перемещать персонажа?
moveX (Mario (Point xpos ypos)) val = Mario (Point (xpos + val) ypos)

Взамен, lenses (линзы) позволяют написать что-то такое:
location.x `over` (+10) $ player1

Или вот так:
over (location . x) (+10) player1

В моих любимых языках программирования тоже есть возможность перемещать персонажа игры. Для этого не нужны никакие линзы...

proud_anon ★★★★★
()
Последнее исправление: proud_anon (всего исправлений: 2)

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

Опять какой-то изврат лишь бы не использовать переменную для хранения данных.

Napilnik ★★★★★
()

по хаскелю на рутрекере есть видеозапись лекций «Jurgen Giesl - Functional programming using Haskell»

есть еще что-нибудь подобное хорошее?

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от qnikst

Я не спорю, я даже не понимаю что такое линзы потому что не практикую хаскель и мне очень сложно воспринимать его.

Поставь другую задачу где линзы рвут всех и вся и мы посмотрим как это можно написать на императивщине.

true_admin ★★★★★
()
Ответ на: комментарий от qnikst

если бы линзы были только про одноуровневый доступ и модификацию..

ну так про что они? это твоя увлекательная статья вообще не не показывает какую-то суть(tm)

RedPossum ★★★★★
()
Ответ на: комментарий от true_admin

я не умею в линзы, они умеют слишком много.

я с ними только 1 программу написал (Вышла книжка по функциональному программированию на Haskell) правда там код протух.

тут в последнем посте много полезного: как это делается правильно ?

а линк я привёл, т.к. статья интересно переведена, а все комментарии с плюсами.

qnikst ★★★★★
() автор топика
Ответ на: комментарий от RedPossum

они про доступ/модификацию вложенных структур, создание призм(?) и прокси, проход по спискам структур, из модификацию и фильтрацию и индексацию. Это в моём глупом понимании.

А статья (перевод) плохой, не считая картинок, я думаю это должно быть очевидно сразу.

qnikst ★★★★★
() автор топика
Последнее исправление: qnikst (всего исправлений: 1)
Ответ на: комментарий от qnikst

Вот смотри: пропускаем миллион шелухи про функторы, фолды и моноиды, и идем в самый-самый конец, чтобы увидеть зачем это надо. А там:

Если у вас есть тьюпл (1,2), и вы хотите всем его элементам сделать +10, то напишите линзу, которая будет работать только для тьюплов с двумя элементами.

В общем расскажи, нафиг оно надо, только так чтобы каждый последний явист понял преимущество.

RedPossum ★★★★★
()

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

про монады не читал, и не буду. Хватило этого говна, спасибо.

Заодно показывает суть хабра:

не был там месяц, теперь ваще не пойду.

а в вашем любимом ЯП такое есть?

в моём любимом ЯП, если надо прибавить к x десять, то пишут так:

x += 10;
По счастью ТАКОГО говна там нет.

drBatty ★★
()
Ответ на: комментарий от qnikst

а все комментарии с плюсами.

дык это жеж первый признак негодности! Никто ничего не понял, но некоторые на всякий случай плюсанули, что-бы за умного сойти.

drBatty ★★
()

Скорее всего нет, но его можно читать.

Kalashnikov ★★★
()
Ответ на: комментарий от RedPossum

зачем это надо см пост тру_админу (там ссылка на тему, в которой смотреть последний комментарий за кучей ссылок), статья покрывает оооочень базовую работу со вложенными неиз меняемыми структурами.

в статьях часть 1 и часть 2 самое инетерсное обычно, вконец это к future work и conclusion, что обычно не интересно.

qnikst ★★★★★
() автор топика
Ответ на: комментарий от drBatty

про монады не читал, и не буду.

монада это перегруженный ";".

про монады не читал, и не буду.

статья хоть и говно, но не об этом :)

qnikst ★★★★★
() автор топика
Ответ на: комментарий от qnikst

про монады не читал, и не буду.

статья хоть и говно, но не об этом

я представляю, что у вас там на картинках про монады.

drBatty ★★
()
Ответ на: комментарий от quiet_readonly

Ну или на груди до пупка. Но испуганная сова — более реалистичное явление.

для хацкелиста? Груди? До пупка? NoWay, трижды. Пусть будет сова.

drBatty ★★
()
Ответ на: комментарий от Spirit_of_Stallman

время возрождать COBOL, COBOL сам на ЛОРе не возродится.

nerfur ★★★
()

А мне показалось, что статья глупая и перегружена тупым юмором. Читать очень тяжело.

provaton ★★★★★
()

Вроде с картинками, а все равно ничего не понятно. Без практики.

certanista
()

По теме: можно накодить библиотеку, которая будет это делать, благо язык позволяет. Осталось понять — зачем?

certanista
()
makeLenses ''Point
makeLenses ''Mario

Функциональненько

buddhist ★★★★★
()
Ответ на: комментарий от Bioreactor

не смешно, честно. Впрочем близких аналогов lenses в яве нет, (сделать тоже самое конечно можно написав 100500 классов).

qnikst ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.