Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.141.100.120] |
|
Страницы: (21) « Первая ... 13 14 [15] 16 17 ... 20 21 ( Перейти к последнему сообщению ) |
Сообщ.
#211
,
|
|
|
Чем вообще хорош эликсир, кстати говоря? Сахару в нем много, но есть что-то что действительно упрощает жизнь, а не просто слегка сокращает код? |
Сообщ.
#212
,
|
|
|
Цитата applegame @ Вот do-нотация и превращает список операций в кучу функций, результаты которых являются аргументами других функций, результаты которых являются аргументами других функций... Все это является одним из видов монад Не так. do-нотация это сахар над монадами. Т.е. она применима к любым видам монад. |
Сообщ.
#213
,
|
|
|
Астарот, например:
doSomething() .then(result => doSomethingElse(result)) .then(newResult => doThirdThing(newResult)) .then(finalResult => { console.log(`Got the final result: ${finalResult}`); }) — https://developer.mozilla.org/en-US/docs/We.../Using_promises do result <- doSomething newResult <- doSomethingElse result finalResult <- doThirdThing newResult putStrLn $ "Got the final result: " ++ finalResult |
Сообщ.
#214
,
|
|
|
Выглядит, как те же яйца, просто в профиль. А киллер-фича какая-нибудь есть? За пример спасибо
|
Сообщ.
#215
,
|
|
|
Сообщ.
#216
,
|
|
|
Цитата Астарот @ Уши эрланга торчат из эликсира повсеместно. Из того что упрощает жизнь: метапрограммирование, адекватный синтаксис, более вменяемая стандартная либа. Меня лично еще напрягает в эрланге невозможность ребиндить переменные. Чем вообще хорош эликсир, кстати говоря? Сахару в нем много, но есть что-то что действительно упрощает жизнь, а не просто слегка сокращает код? |
Сообщ.
#217
,
|
|
|
ООП - прекрасный инструмент в соответствующих условиях и ... руках. Ну все же отлично понимают, что это не панацея?! Если речь идет, к примеру, о программировании какой-либо логической матрицы с 256 выходами и 1024 состояниями (ну очень разреженная матрица), разумнее просто исполнить CASE вариант алгоритма?
|
Сообщ.
#218
,
|
|
|
Цитата JoeUser @ Не уверен, что понял, что ты имеешь в виду под понятием "логическая матрица" (я привык, что под этим понимают микросхему, физически реализующую ДНФ, да, матрицы соединений там как правило очень разреженные). Но ещё более непонятно, каким боком к ним ООП.Если речь идет, к примеру, о программировании какой-либо логической матрицы с 256 выходами и 1024 состояниями Но должен заметить, что ООП прекрасно укладывается в концепцию CASE-систем. |
Сообщ.
#219
,
|
|
|
JoeUser, а ты как определяешь ООП?
|
Сообщ.
#220
,
|
|
|
Цитата Астарот @ Выглядит, как те же яйца, просто в профиль. А это и есть те же яйца. Только в статике. Цитата Астарот @ А киллер-фича какая-нибудь есть? Какая киллер-фича у интерфейса Collection? Или у интерфейса Iterable? Цитата Астарот @ Хаскель это просто и понятно, говорили они А что тут сложного? =) Моноид — это тройка: – множество – бинарная ассоциативная операция над элементами этого множества и возвращающая в качестве результата элемент этого же множества – нейтральный элемент по отношению к это операции Пример 1: – Целые числа – (+) – 0 Пример 2: – Целые числа – (*) – 1 Пример 3: – Строки – конкатенация – пустая строка Пример 4: data OrderStat = OS { quantity :: Int, totalCost :: Double } instance Monoid OrderStat where mempty = OS 0 0.0 mappend (OS q1 tc1) (OS q2 tc2) = OS (q1 + q2) (tc1 + tc2) Моноиды удобны для свёрток (в т.ч. параллельных) Функтор — это, упрощённо, отображение одного множества на другое. Эндофунктор — это функтор, который отображает множество на само себя. Например тип Список является функтором, отображением — функция map (или её "функторный" вариант: fmap): class Functor f where fmap :: (a -> b) -> f a -> f b instance Functor [] where fmap f xs = map f xs Т.е. можно считать, что эндофунктор — это такой контейнерный тип, у которого есть операция map, применяющая к содержимому контейнера некоторую операцию, но сохраняющая сам контейнер. Моноид в категории эндофункторов: – множество функций m a -> m b – композиция функций bind :: (m a -> m b) -> (m b -> m c) -> (m a -> m c) – функция id :: a -> a (id x = x) — нейтральный элемент |
Сообщ.
#221
,
|
|
|
Цитата korvin @ А что тут сложного? =) Держите наркомана! Цитата korvin @ Т.е. можно считать, что эндофунктор — это такой контейнерный тип, у которого есть операция map, применяющаяся к содержимому контейнера некоторую операцию, но сохраняющая сам контейнер. Во! Можно же понятным языком Там народ угорел, вроде бы даже на фронтенд хаскель тянут. Ну, чисто культ карго, как по мне... Добавлено Цитата korvin @ Какая киллер-фича у интерфейса Collection? Или у интерфейса Iterable? Я спрашивал про киллер-фичу Эликсира против Эрланга. Ну, типа Котлин против Джавы. У Котлина есть парочка фич тянущих на киллер, типа функций-расширений, корутин и делегатов. Думал может у Эликсира что-то такое найдется. |
Сообщ.
#222
,
|
|
|
Цитата Астарот @ Я спрашивал про киллер-фичу Эликсира против Эрланга. А. Но это шло в твоём же ответе про do-нотацию, как можно было понять, что вопрос про Эликсир? Добавлено Цитата Астарот @ Там народ угорел, вроде бы даже на фронтенд хаскель тянут. Ну, чисто культ карго, как по мне... Как и JS на бэкенде… =) |
Сообщ.
#223
,
|
|
|
Цитата korvin @ Ты сейчас процитировал определение абелевой группы. Почти, про обратный элемент промолчал. Моноид — это тройка: – множество – бинарная ассоциативная операция над элементами этого множества и возвращающая в качестве результата элемент этого же множества – нейтральный элемент по отношению к это операции Добавлено А, не, не обязательно абелевой. |
Сообщ.
#224
,
|
|
|
Qraizer, моноиды - это понятие из математики, если что.
|
Сообщ.
#225
,
|
|
|
Цитата amk @ Но ещё более непонятно, каким боком к ним ООП. Классическая программа осуществляет свое функционирование путем вычислений и переходов, зашитых в программном коде исполняемого файла. По большому счету можно описать вектор N-обработчиков в виде указателей на функции и логическую M-матрицу (матрицу переходов), которую можно грузить как данные. И вся эта кухня будет работать гораздо быстрее реализации в виде ООП. Но только для своей ниши!!! Где данных относительно мало, а алгоритм последовательности их обработки достаточно сложен. Некое недалекое подобие шитого кода. Цитата D_KEY @ JoeUser, а ты как определяешь ООП? Если речь идет о "программировании", то тут классика: - Инкапсуляция - Наследование - Полиморфизм Если речь идет о "проектировании", то понятие ... самоопределимое - проектирование, в котором основная идея - моделирование функционала, как группы взаимодействующих объектов. |