
Oleg
29.10.2016
16:00:39
assert(42.among!((lhs, rhs) => lhs > rhs)(43, 24, 100) == 2);

Sergey
29.10.2016
16:02:42
про макросы не понял)

Oleg
29.10.2016
16:05:23
Ну в терминах D миксины, в примере это знак !

Sergey
29.10.2016
16:07:19
теперь понял, о чем речь. (подавил свое занудство, придирающееся к моменту про знак !)

Google

Oleg
29.10.2016
16:08:18
Я наконец понял почему именно такой синтаксис, а не <Т>

Sergey
29.10.2016
16:08:40
но все-таки, имея std, не могу представить элегантный способ повторить приведенный выше пример паттерн матчинга

Oleg
29.10.2016
16:09:05

Sergey
29.10.2016
16:09:07
ну, да. тут речь не столько о шаблонах, сколько о переменных времени компиляции
две параллельные нити обсуждения превратили все в кашу

Oleg
29.10.2016
16:11:16
Тут фишка в том, что дело не в паттерне или вызове indexOf, а имено в > вместо == сравнения
switch не сможет такое отработать

Sergey
29.10.2016
16:12:19
но predSwitch может
а вот сравнить массив с паттерном - это уже сложнее

Oleg
29.10.2016
16:13:51
Мне кажется, что это просто другая задача. То что делает тут D может вприцнипе любой язык. А паттерны решают еще нелинейность и иногда полноту
Т.е. Была бы бизнес логика сложнее, было бы несколько case
Некоторые языки позволяют case if, хотя это в D тоже можно

Google

Sergey
29.10.2016
16:14:48
про case if в D не слышал
если реь идет о средствах языка

Oleg
29.10.2016
16:16:43

Sergey
29.10.2016
16:17:33
ну, это как раз от же predSwitch, о котором я говорил ранее

Oleg
29.10.2016
16:18:01
Смешно будет когда ты попробуешь доказать полноту свитча через миксин :)

Sergey
29.10.2016
16:18:08
там не обязательно должен быть mixin, может быть и функция
лямбда

Oleg
29.10.2016
16:18:36

Sergey
29.10.2016
16:20:36
predSwitch!(x=>{ any code })(

Oleg
29.10.2016
16:20:48
Смогу я в D слелать вот так и заодно знать что я не верблюд?
При условии что любой паттерн здесь может иметь бесчисленное множество паттернов внутри

Sergey
29.10.2016
16:21:46
да

Oleg
29.10.2016
16:22:07

Sergey
29.10.2016
16:22:32
но не при условии, что любой паттерн может иметь бесчисленное множество паттернов внутри

Oleg
29.10.2016
16:23:07
Добавить к этому что case может иметь несколько валидных паттернов и if проверки (но они не сильно валидиуются в хаксе)
На D думаю нехилая портянка выйдет и еще и тестами покрывать

Google

Oleg
29.10.2016
16:26:06
case еще и деструктуринг делает

Sergey
29.10.2016
16:27:05
что-то типа того
auto value = myStruct.predSwitch!(ms=> {
if (ms.name == "haxe" && ms.rating == "poor")
return false;
...
})();
если паттерны сложнее, то, естественно, уже встанет вопрос о целесообразности такого подхода

Oleg
29.10.2016
16:28:57
Нет
Встает вопрос чем занят Александреску

Sergey
29.10.2016
16:29:17
известно чем

Oleg
29.10.2016
16:29:20
Эта фича не такая зубодробительная
Могли бы добавить

Oleg
29.10.2016
16:29:46
Чтобы в сигнатуру это вписывать
Например, чтобы интерфейс мог гарантировать что метод будет работать за o(n)
Но имхо это лишнее

Oleg
29.10.2016
16:31:48
Это будет компилироваться два часа или три?

Sergey
29.10.2016
16:32:04
хм... конктрактное программирование в рамках D же это может

Oleg
29.10.2016
16:32:24
Контактное программирование это rt

Oleg
29.10.2016
16:33:05
Смысл О(n)? это же не так работает. Кеши процессора и все дела

Sergey
29.10.2016
16:33:10
ну, это будет наршуением определенных соглашени, но оно может позолить удостовериться

Oleg
29.10.2016
16:33:47

Google

Oleg
29.10.2016
16:33:54

Oleg
29.10.2016
16:34:16

Oleg
29.10.2016
16:34:40
Как множитель при o

Oleg
29.10.2016
16:34:55
Если язык такой тормозной что гробит кеш и все хранит в куче то конечно на кеш можно забить
Особенно на L1

Oleg
29.10.2016
16:35:27
Лучше бы компилятор библиотекой сделали

Oleg
29.10.2016
16:38:13

Sergey
29.10.2016
16:38:25
no gc

Oleg
29.10.2016
16:38:33
А Волтер кстати че там?

Sergey
29.10.2016
16:39:11
и еще, если Александреску не будет пиарить D, то кто. Он вынужден ездить по конференциям)

Admin
ERROR: S client not available

Oleg
29.10.2016
16:40:25
Брайт

Sergey
29.10.2016
16:41:19
он же лютый интроверт. Он не любит конференций
по-моему, он всегда занят компилятором

Oleg
29.10.2016
16:42:48
Ты опечатался?
Я уж полумал Волтер пол поменял

Sergey
29.10.2016
16:44:12
не по глазам
а. увидел

Oleg
29.10.2016
16:46:13
Может в DIP кто паттерны или алгебраики предлагал, я бы обсуждение посмотрел

Google

Dmitry
29.10.2016
16:50:38
Паттерны да впечатлили....
Я бы блин рубем за эту фичу проголосовал в меру возможностей

Oleg
29.10.2016
16:51:59

Dmitry
29.10.2016
16:52:16
им людей не хватает пока очень сильно
В свое время форк D под названием Amber так и не дошел до релиза

Oleg
29.10.2016
16:53:33

Dmitry
29.10.2016
16:54:01
Там не все гуглится...

Oleg
29.10.2016
16:55:11
Я код нашел. Не все это что?

Dmitry
29.10.2016
16:56:01
Ну мы с ними так общались по почте и в привате
типа о состоянии дел

Oleg
29.10.2016
17:00:51
Я свой язык когда-нибудь тоже доделаю :)
Рад что народ не забивает и экспериментирует даже в 2016м

Sergey
29.10.2016
17:01:49
каждый из нас обязательно когда-нибудь доделает своей проект мечты. А начнет доделывать послезавтра

Oleg
29.10.2016
17:04:42
Меня это научило не выпендриваться и спокойно неторопливо двигаться к завершению
Ракеты взрываются, автопилоты сталкиваются, телефоны горят, а под линукс так и нету драйверов.. Так что торопиться и не нужно

Sergey
29.10.2016
17:06:11
))

Oleg
29.10.2016
17:06:23
Если Volt не перегорят то будет еще один проект в копилку человечества

Sergey
29.10.2016
17:07:34
честно сказать, слабо верю в хоть какой-то успех Volt
элементарно не понятно, зачем он (кроме опыта разработчиков).
Дисклеймер: зачем D, у меня для себя лично ответ есть

Oleg
29.10.2016
17:09:10
Видимо в D есть что то что их сильно не устраивает

Sergey
29.10.2016
17:10:19
Но вероятность того, что то самое нечто, что их не устраивает, будет устранено еще до релиза Volt слишком высока
даже, если оно не будет устранено никогда

Oleg
29.10.2016
17:10:56
Я лично веду два проекта: язык типа хакса и форк reactos, в обоих случаях забодало руководство, и то что ничего не работает