Про perl 6
От: Takadam  
Дата: 04.09.15 03:30
Оценка: :)
А perl 6 прикольный. Сколько же там всего разного есть! Даже так просто не осилишь. В Питоне и руби такого нет.
В тоже время, в отличие от скалы, в perl 6 все это не просто понапихано, а хорошо уживается друг с другом.
Будем надеяться, что взлетит.
Re: Про perl 6
От: uncommon Ниоткуда  
Дата: 04.09.15 05:27
Оценка:
Здравствуйте, Takadam, Вы писали:

T>А perl 6 прикольный. Сколько же там всего разного есть! Даже так просто не осилишь. В Питоне и руби такого нет.

T>В тоже время, в отличие от скалы, в perl 6 все это не просто понапихано, а хорошо уживается друг с другом.
T>Будем надеяться, что взлетит.

List comprehension там есть?
Re: Про perl 6
От: DOOM Россия  
Дата: 04.09.15 07:09
Оценка:
Здравствуйте, Takadam, Вы писали:

T>Будем надеяться, что взлетит.

Сколько он там уже лет взлетает? 10?
Re: Про perl 6
От: Ops Россия  
Дата: 04.09.15 07:25
Оценка:
Здравствуйте, Takadam, Вы писали:

T>А perl 6 прикольный.

А зачем он нужен?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[2]: Про perl 6
От: Takadam  
Дата: 04.09.15 07:55
Оценка:
Здравствуйте, uncommon, Вы писали:

U>Здравствуйте, Takadam, Вы писали:


T>>А perl 6 прикольный. Сколько же там всего разного есть! Даже так просто не осилишь. В Питоне и руби такого нет.

T>>В тоже время, в отличие от скалы, в perl 6 все это не просто понапихано, а хорошо уживается друг с другом.
T>>Будем надеяться, что взлетит.

U>List comprehension там есть?


пока не знаю, а List comprehension = list.filter { |x| ... }
наверняка есть.
Re[2]: Про perl 6
От: Takadam  
Дата: 04.09.15 07:56
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Здравствуйте, Takadam, Вы писали:


T>>Будем надеяться, что взлетит.

DOO>Сколько он там уже лет взлетает? 10?
так релиз в этом году только будет.
Re[3]: Про perl 6
От: DOOM Россия  
Дата: 04.09.15 08:26
Оценка:
Здравствуйте, Takadam, Вы писали:

DOO>>Сколько он там уже лет взлетает? 10?

T>так релиз в этом году только будет.
Ну вот как-то это странно... Потому что книги по нему уже лет 10 как издаются, а до релиза добрался только сейчас. Я уж был уверен, что проект помер...
Re: Про perl 6
От: Mamut Швеция http://dmitriid.com
Дата: 04.09.15 08:36
Оценка:
T>А perl 6 прикольный. Сколько же там всего разного есть! Даже так просто не осилишь. В Питоне и руби такого нет.
T>В тоже время, в отличие от скалы, в perl 6 все это не просто понапихано, а хорошо уживается друг с другом.
T>Будем надеяться, что взлетит.

Все, всего, понапихано, не понапихано, есть, нет. Конкретнее можно, что такого есть, чего такого нет и т.п.


dmitriid.comGitHubLinkedIn
Re: Про perl 6
От: Sheridan Россия  
Дата: 04.09.15 09:07
Оценка:
Здравствуйте, Takadam, Вы писали:

T>А perl 6 прикольный. Сколько же там всего разного есть! Даже так просто не осилишь. В Питоне и руби такого нет.

T>В тоже время, в отличие от скалы, в perl 6 все это не просто понапихано, а хорошо уживается друг с другом.
T>Будем надеяться, что взлетит.

Ну так расссказал бы чего интересного, привел бы несколько примеров удобств...
Ну или хотя бы линк на статью дай, где это есть.
Matrix has you...
Re[2]: Про perl 6
От: Venom  
Дата: 04.09.15 09:26
Оценка:
Здравствуйте, uncommon, Вы писали:

U>List comprehension там есть?


https://en.wikipedia.org/wiki/List_comprehension#Perl_6
Re[2]: Про perl 6
От: Takadam  
Дата: 04.09.15 10:23
Оценка: 1 (1)
Здравствуйте, Sheridan, Вы писали:

S>Здравствуйте, Takadam, Вы писали:


T>>А perl 6 прикольный. Сколько же там всего разного есть! Даже так просто не осилишь. В Питоне и руби такого нет.

T>>В тоже время, в отличие от скалы, в perl 6 все это не просто понапихано, а хорошо уживается друг с другом.
T>>Будем надеяться, что взлетит.

S>Ну так расссказал бы чего интересного, привел бы несколько примеров удобств...

S>Ну или хотя бы линк на статью дай, где это есть.

погоди, разберусь.
Re: Про perl 6
От: _NN_  
Дата: 04.09.15 10:42
Оценка:
Здравствуйте, Takadam, Вы писали:

T>А perl 6 прикольный. Сколько же там всего разного есть! Даже так просто не осилишь. В Питоне и руби такого нет.

Попробуй это всё запомнить
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Про perl 6
От: Takadam  
Дата: 04.09.15 11:00
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Здравствуйте, Takadam, Вы писали:


T>>А perl 6 прикольный. Сколько же там всего разного есть! Даже так просто не осилишь. В Питоне и руби такого нет.

_NN>Попробуй это всё запомнить
_NN>Image: Periodic Table of the Operators A4 300dpi.jpg

это откуда? как относится к perl 6?
Re[3]: Про perl 6
От: Mamut Швеция http://dmitriid.com
Дата: 04.09.15 11:22
Оценка:
T>это откуда? как относится к perl 6?

Текст на картинке: таблица всех операторов из Perl6. И да — это /o\


dmitriid.comGitHubLinkedIn
Re: Про perl 6
От: DreamMaker  
Дата: 04.09.15 12:02
Оценка: :))) :))) :)
Здравствуйте, Takadam, Вы писали:

T>Сколько же там всего разного есть!


In P=NP we trust.
Re[3]: Про perl 6
От: _NN_  
Дата: 04.09.15 15:35
Оценка:
Здравствуйте, Takadam, Вы писали:

T>это откуда? как относится к perl 6?


http://www.ozonehouse.com/mark/periodic/

Можно купить печатный вариант
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Про perl 6
От: Слава  
Дата: 04.09.15 18:12
Оценка:
Здравствуйте, Takadam, Вы писали:

T>А perl 6 прикольный. Сколько же там всего разного есть! Даже так просто не осилишь. В Питоне и руби такого нет.


А GC там есть?
Re[3]: Про perl 6
От: uncommon Ниоткуда  
Дата: 05.09.15 02:05
Оценка:
Здравствуйте, Venom, Вы писали:

V>Здравствуйте, uncommon, Вы писали:


U>>List comprehension там есть?


V>https://en.wikipedia.org/wiki/List_comprehension#Perl_6


Это фигня. Так, как в питоне можно?
 [x*y for x in xx for y in yy]
Re[4]: Про perl 6
От: Mamut Швеция http://dmitriid.com
Дата: 05.09.15 10:10
Оценка:
V>>https://en.wikipedia.org/wiki/List_comprehension#Perl_6

U>Это фигня. Так, как в питоне можно?

U>
 [x*y for x in xx for y in yy]


В Питоне тоже убогая фигня. Надо как в Хаскеле и Эрланге


dmitriid.comGitHubLinkedIn
Re[4]: Про perl 6
От: Takadam  
Дата: 05.09.15 13:47
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Здравствуйте, Takadam, Вы писали:


DOO>>>Сколько он там уже лет взлетает? 10?

T>>так релиз в этом году только будет.
DOO>Ну вот как-то это странно... Потому что книги по нему уже лет 10 как издаются, а до релиза добрался только сейчас. Я уж был уверен, что проект помер...

In 2008, I bought a book titled “PHP 6″. Six years later, PHP version is still 5.5
а php самый популярный язык для web
Re[5]: Про perl 6
От: _NN_  
Дата: 05.09.15 17:26
Оценка:
Здравствуйте, Mamut, Вы писали:

M>В Питоне тоже убогая фигня. Надо как в Хаскеле и Эрланге


А чем плохо как в Питоне ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Про perl 6
От: Dym On Россия  
Дата: 05.09.15 19:14
Оценка: :))) :))) :)
T>А perl 6 прикольный. Сколько же там всего разного есть! Даже так просто не осилишь. В Питоне и руби такого нет.
Как там с Дао? удалось реализовать?

Дао Perl 6:
1. Любой набор символов в любой кодировке является синтаксически правильным Perl 6 кодом.
2. Всегда есть бесконечное количество различных способов сделать это.
3. Любой человек, писавший до этого на любом языке, может сразу писать на Perl 6. Он может даже не догадываться, что пишет на Perl 6. Если, конечно, не будет забывать ставить 1; в конце модулей.
4. Можно перегружать 1;. Можно перегружать пробелы. Можно перегружать сорц-фильтры с помощью регулярных выражений, которые тоже можно перегружать.
5. Perl 6 имеет эталонную реализацию, написанную на Perl 6 и не способную быть выраженной ни на каком другом языке[2]. На Perl 6 эталонная реализация может быть выражена, но не за конечное время. Мы работаем над этим. Когда мы закончим, наступит Армагеддон (который тоже можно будет перегрузить).
1;

Счастье — это Glück!
Re[6]: Про perl 6
От: Mamut Швеция http://dmitriid.com
Дата: 05.09.15 20:18
Оценка: 1 (1) +2 -2
M>>В Питоне тоже убогая фигня. Надо как в Хаскеле и Эрланге

_NN>А чем плохо как в Питоне ?


Слишком многословно, из-за чего все, что сложнее [x*x for x in list] становится нечитаемым, а создание сколько-нибудь сложных comprehension'ов — нетривиальным.

# Python for if for if чтоа?
[(x,y) for x in range(5) if x % 2 == 0 for y in range(5) if y % 2 == 1]

% Erlang. По сути, перечисление условий для получения X и Y.

[{X, Y} || X <- range(5), Y <- range(5), x rem 2 == 0, y rem 2 == 1 ]

// Эквивалентная математическая запись что-то в стиле

{ x,y | x ∈ range(5), y ∈ range(5), x mod 2 = 0, y mod 2 = 1 }


dmitriid.comGitHubLinkedIn
Re[2]: Про perl 6
От: Ops Россия  
Дата: 05.09.15 22:58
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Попробуй это всё запомнить

_NN>Image: Periodic Table of the Operators A4 300dpi.jpg

Жесть какая. А более неудобной формы придумать не смогли?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[7]: Про perl 6
От: _NN_  
Дата: 06.09.15 05:44
Оценка:
Здравствуйте, Mamut, Вы писали:

Т.е. всё утверждение сводится к тому, что условия не в конце.
По моему это не так уж и ущербно.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[3]: Про perl 6
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 06.09.15 05:49
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Жесть какая. А более неудобной формы придумать не смогли?


Наверняка работы над Perl 7 уже ведутся!
Ce n'est que pour vous dire ce que je vous dis.
Re[4]: Про perl 6
От: Ops Россия  
Дата: 06.09.15 09:24
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>Наверняка работы над Perl 7 уже ведутся!


Т.е. для него сделают еще больше плакат, еще более неудобный?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[5]: Про perl 6
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 06.09.15 09:53
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Т.е. для него сделают еще больше плакат, еще более неудобный?


Глобус!
Ce n'est que pour vous dire ce que je vous dis.
Re[6]: Про perl 6
От: Ops Россия  
Дата: 06.09.15 09:56
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>Глобус!


Ага, а описание будет изнутри.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: Про perl 6
От: Kolesiki  
Дата: 06.09.15 11:33
Оценка: +1
Здравствуйте, Takadam, Вы писали:

T>А perl 6 прикольный. ... Будем надеяться, что взлетит.


Поздно. Лет 15 назад он мог бы с кем-то пободаться, но сейчас — кому он нужен? (кроме маргиналов и админов локалхоста)
Быдловеб прочно занят похапастами, незанятые области утыканы пестонорубями. Серьёзные сектора — все ожаблены или под ASP. На десктопе ему вообще делать нечего.
На мой взгляд, Перл-6 — это проект ради проекта, какой-то самодостаточный мир олдфагов на ностальгирующем драйве. Жаль растрачивают усилия зазря...
Re[8]: Про perl 6
От: BulatZiganshin  
Дата: 06.09.15 11:54
Оценка: :)
Здравствуйте, _NN_, Вы писали:

_NN>Т.е. всё утверждение сводится к тому, что условия не в конце.


как раз тут никакой разницы нет — мамут просто привёл не эквивалентный код. а суть претензий мамута — в том что он работает в vi, там нет синтаксической подсветки и поэтому запятые заметней ключевых слов:

[(x,y)  for x in range(5)  if x%2==0  for y in range(5)  if y%2==1]
Люди, я люблю вас! Будьте бдительны!!!
Re[4]: Про perl 6
От: anonymous Россия http://denis.ibaev.name/
Дата: 06.09.15 15:23
Оценка: 1 (1)
Здравствуйте, Mamut, Вы писали:

T>>это откуда? как относится к perl 6?

M>Текст на картинке: таблица всех операторов из Perl6. И да — это /o\

Большая часть операторов же там не сама по себе. Они составные и образуются из базовых элементов по ясным правилам. Например, оператор, начинающийся с +, выполняется в числовом контексте, а с ? — в булевом.
Re[8]: Про perl 6
От: Mamut Швеция http://dmitriid.com
Дата: 06.09.15 17:55
Оценка:
_NN>Т.е. всё утверждение сводится к тому, что условия не в конце.
_NN>По моему это не так уж и ущербно.

С водится к излишней нечитаемой многословности. Для того, чтобы понять, откуда берутся переменные, надо сначала прочитать «войну и мир».


dmitriid.comGitHubLinkedIn
Re[4]: Про perl 6
От: anonymous Россия http://denis.ibaev.name/
Дата: 06.09.15 22:04
Оценка:
Здравствуйте, uncommon, Вы писали:

U>Это фигня. Так, как в питоне можно?

U>
 [x*y for x in xx for y in yy]


gather for @yy -> $y { for @xx -> $x { take $x * $y } }


Но для этого конкретного случая можно и так:

@xx X* @yy
Re[5]: Про perl 6
От: uncommon Ниоткуда  
Дата: 07.09.15 03:03
Оценка: :)
Здравствуйте, anonymous, Вы писали:

A>
@xx X* @yy


За такое можно и по мордасам получить.
Re[5]: Про perl 6
От: _NN_  
Дата: 07.09.15 06:18
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Но для этого конкретного случая можно и так:


A>
@xx X* @yy


'X' умеет только операции принимать или выражения ?

Такое можно всунуть в 'X' ?
gather for @yy -> $y { for @xx -> $x { if ($x>1) take $x * $y else take $x + $y } }
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[6]: Про perl 6
От: anonymous Россия http://denis.ibaev.name/
Дата: 07.09.15 06:45
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>'X' умеет только операции принимать или выражения ? Такое можно всунуть в 'X' ?

_NN>
_NN>gather for @yy -> $y { for @xx -> $x { if ($x>1) take $x * $y else take $x + $y } }
_NN>


X — это метаоператор, он работает только с операторами. Однако можно описать свой оператор, который производит необходимое действие и использовать его с X.
Re[7]: Про perl 6
От: _NN_  
Дата: 07.09.15 09:02
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Здравствуйте, _NN_, Вы писали:


_NN>>'X' умеет только операции принимать или выражения ? Такое можно всунуть в 'X' ?

_NN>>
_NN>>gather for @yy -> $y { for @xx -> $x { if ($x>1) take $x * $y else take $x + $y } }
_NN>>


A>X — это метаоператор, он работает только с операторами. Однако можно описать свой оператор, который производит необходимое действие и использовать его с X.


Логично.
А вот оператор можно ли определять локально ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Про perl 6
От: anonymous Россия http://denis.ibaev.name/
Дата: 09.09.15 08:06
Оценка: 3 (1)
Здравствуйте, DOOM, Вы писали:

DOO>Сколько он там уже лет взлетает? 10?


http://perlnews.ru/blog/2015/09/09/01-perl6-presentation/

5 октября 2015 года на площадке Канбар форума в Сан-Франциско Ларри Уолл официально представит финальную реализацию языка программирования Perl 6. Спонсором мероприятия выступает компания Craigslist (текущий работодатель Ларри Уолла).

Re[2]: Про perl 6
От: anonymous Россия http://denis.ibaev.name/
Дата: 08.10.15 09:21
Оценка:
Здравствуйте, DreamMaker, Вы писали:

T>>Сколько же там всего разного есть!

DM>Image: Perl6.jpg

Ларри Уолл:

This is why we say all languages are religious dialects of Perl 6.

Re[2]: Про perl 6
От: smeeld  
Дата: 08.10.15 09:29
Оценка: 3 (1) +1 :))
Здравствуйте, Kolesiki, Вы писали:

K>Поздно. Лет 15 назад он мог бы с кем-то пободаться, но сейчас — кому он нужен? (кроме маргиналов и админов локалхоста)

K>Быдловеб прочно занят похапастами, незанятые области утыканы пестонорубями. Серьёзные сектора — все ожаблены или под ASP. На десктопе ему вообще делать нечего.
K>На мой взгляд, Перл-6 — это проект ради проекта, какой-то самодостаточный мир олдфагов на ностальгирующем драйве. Жаль растрачивают усилия зазря...

На Perl пишут все те, кто хочет на нём писать. Если толпа на нём не ваяет всякий ширпотреб на широптребных либах,
то это не значит, что его не применяют в закрытых, никому не известных проектах. Perl ЯП уникальный, все остальные
ЯП, раскрученные для толпы и ширпотреба, не содержат и доли тех возможностей, что заложены в Perl.
Но толпа с явой-пхп-питон-сришарпом головного мозга об этом даже не догадывается, но мнение имеет.
Re[2]: Про perl 6
От: Takadam  
Дата: 17.10.15 07:53
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Ну так расссказал бы чего интересного, привел бы несколько примеров удобств...

S>Ну или хотя бы линк на статью дай, где это есть.

Например, вот:

method method1(%params ($arg1!, $arg2!, $arg3)) {
  ...
}


Можно передавать ассоц массив, в котором могут быть только ключи arg1 и arg2 и arg3 (optional). А ваших рубях и питонах такое есть?
Re[3]: Про perl 6
От: Somescout  
Дата: 17.10.15 09:45
Оценка:
Здравствуйте, Takadam, Вы писали:

T>Здравствуйте, Sheridan, Вы писали:


S>>Ну так расссказал бы чего интересного, привел бы несколько примеров удобств...

S>>Ну или хотя бы линк на статью дай, где это есть.

T>Например, вот:


T>
T>method method1(%params ($arg1!, $arg2!, $arg3)) {
T>  ...
T>}
T>


T>Можно передавать ассоц массив, в котором могут быть только ключи arg1 и arg2 и arg3 (optional). А ваших рубях и питонах такое есть?


А чем это отличается от передачи интерфейса?
И да, такое есть в typescript, только там ещё можно типы указать:
function test(options:{
    id: number;
    description?: string;
    code: number;
}) {
    return options.id * options.code;
}

test({id: 1, code: 15});
ARI ARI ARI... Arrivederci!
Re[4]: Про perl 6
От: Takadam  
Дата: 17.10.15 09:56
Оценка:
Здравствуйте, Somescout, Вы писали:


T>>Например, вот:


T>>
T>>method method1(%params ($arg1!, $arg2!, $arg3)) {
T>>  ...
T>>}
T>>


T>>Можно передавать ассоц массив, в котором могут быть только ключи arg1 и arg2 и arg3 (optional). А ваших рубях и питонах такое есть?


S>А чем это отличается от передачи интерфейса?

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


S>И да, такое есть в typescript, только там ещё можно типы указать:


и в C#, и джаве и c++ и в еще куче статич. языков тоже есть. только мы говорим про руби и питон потому что perl 6 ближе к ним.
Re[5]: Про perl 6
От: Somescout  
Дата: 17.10.15 12:30
Оценка:
Здравствуйте, Takadam, Вы писали:

S>>А чем это отличается от передачи интерфейса?

T>тем что в динамических языках интерфейсов нет. с добрым утром.
Это понятно, просто чем-то интересным это не выглядит.

S>>И да, такое есть в typescript, только там ещё можно типы указать:

T>и в C#, и джаве и c++ и в еще куче статич. языков тоже есть. только мы говорим про руби и питон потому что perl 6 ближе к ним.
Typescript динамический язык.
ARI ARI ARI... Arrivederci!
Re[6]: Про perl 6
От: Takadam  
Дата: 17.10.15 12:41
Оценка:
Здравствуйте, Somescout, Вы писали:

S>Здравствуйте, Takadam, Вы писали:


S>>>А чем это отличается от передачи интерфейса?

T>>тем что в динамических языках интерфейсов нет. с добрым утром.
S>Это понятно, просто чем-то интересным это не выглядит.
а что выглядит, проверять в теле функции, какие ключи были переданы?


S>>>И да, такое есть в typescript, только там ещё можно типы указать:

T>>и в C#, и джаве и c++ и в еще куче статич. языков тоже есть. только мы говорим про руби и питон потому что perl 6 ближе к ним.
S>Typescript динамический язык.

тогда почему при объявление переменных указывается их тип?
Отредактировано 17.10.2015 12:46 Takadam . Предыдущая версия . Еще …
Отредактировано 17.10.2015 12:45 Takadam . Предыдущая версия .
Re[7]: Про perl 6
От: Somescout  
Дата: 17.10.15 16:47
Оценка:
Здравствуйте, Takadam, Вы писали:

S>>Это понятно, просто чем-то интересным это не выглядит.

T>а что выглядит, проверять в теле функции, какие ключи были переданы?

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

S>>>>И да, такое есть в typescript, только там ещё можно типы указать:

T>>>и в C#, и джаве и c++ и в еще куче статич. языков тоже есть. только мы говорим про руби и питон потому что perl 6 ближе к ним.
S>>Typescript динамический язык.

T>тогда почему при объявление переменных указывается их тип?


Это надмножество javascript с опциональной типизацией, для любого типа можно указать "any" и использовать как в обычном js.

Что мне особо нравится, вывод типа идёт по содержимому, а не по наследованию:
class User {
  public constructor(
    public Name:string,
    public Title: string
  ) { }
}

class Group {
  public constructor(
    public Name:String,
    public Options: number) 
  { }
}

function printName(entity: {Name: string}) {
  console.log(entity.Name);
}

// Несмотря на то что это разные классы, они удовлетворяют требованию о наличии поля Name
printName(new User("Test", "test"));
printName(new Group("Test", 1));

// Или вообще так:
printName({Name: "Inline" });

// При этом всё равно проверяются типы:
printName({Name: 123}); // Ошибка

// Можно сказать что Name может быть числом или строкой
function printName2(entity: {Name: string|number}) {
  console.log(entity.Name);
}

// и тогда этот вызов будет корректным
printName2({Name: 123}); // Теперь не ошибка


Поиграться можно тут: http://www.typescriptlang.org/Playground
ARI ARI ARI... Arrivederci!
Отредактировано 17.10.2015 16:48 Somescout . Предыдущая версия .
Re[8]: Про perl 6
От: Takadam  
Дата: 18.10.15 01:10
Оценка:
Здравствуйте, Somescout, Вы писали:

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


Ближайшие соседи perl 6 — это PHP, python, ruby. В них такое не поддерживается.

Typescipt можно сравнивать с дартом и js.



T>>тогда почему при объявление переменных указывается их тип?


S>Это надмножество javascript с опциональной типизацией, для любого типа можно указать "any" и использовать как в обычном js.


В джаве тоже можно указать object, но это ведь не делает джаву динамич языком.

А вообще — см. ответ выше.
Re[9]: Про perl 6
От: Somescout  
Дата: 18.10.15 09:57
Оценка:
Здравствуйте, Takadam, Вы писали:

T>Ближайшие соседи perl 6 — это PHP, python, ruby. В них такое не поддерживается.

Я не о том — вопрос был показать какую-нибудь интересную фичу, а эта фича хоть и неплоха но не сильно новая или интересная.

T>В джаве тоже можно указать object, но это ведь не делает джаву динамич языком.

Не в ту степь уходим, но если указать object это будет именно object, который можно только скастить во что-то другое. В ts указав any с объектом можно работать именно как с произвольным значением. Это именно указание не применять типизацию.
ARI ARI ARI... Arrivederci!
Re[7]: Про perl 6
От: Evgeny.Panasyuk Россия  
Дата: 18.10.15 10:11
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Слишком многословно, из-за чего все, что сложнее [x*x for x in list] становится нечитаемым, а создание сколько-нибудь сложных comprehension'ов — нетривиальным.


Для сложных есть yield.

M>
M># Python for if for if чтоа?
M>[(x,y) for x in range(5) if x % 2 == 0 for y in range(5) if y % 2 == 1]

M>% Erlang. По сути, перечисление условий для получения X и Y.

M>[{X, Y} || X <- range(5), Y <- range(5), x rem 2 == 0, y rem 2 == 1 ]
M>


А какая семантика у Erlang варианта? Подозреваю что фильтры применяться после того как сгенерируются пары, то есть неэффективно. На Python так кстати тоже можно
>>> [(x,y) for x in range(5) if x % 2 == 0 for y in range(5) if y % 2 == 1]
[(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]

>>> [(x,y) for x in range(5) for y in range(5) if x % 2 == 0 if y % 2 == 1]
[(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]

>>> [(x,y) for x in range(5) for y in range(5) if x % 2 == 0 and y % 2 == 1]
[(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]
Re[8]: Про perl 6
От: Evgeny.Panasyuk Россия  
Дата: 18.10.15 10:16
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Т.е. всё утверждение сводится к тому, что условия не в конце.

_NN>По моему это не так уж и ущербно.

Они могут быть также и в конце, смотри пример выше. И думаю что в Erlang они могут быть также вперемешку.
Re[3]: Про perl 6
От: Sheridan Россия  
Дата: 18.10.15 15:15
Оценка: :)
Здравствуйте, smeeld, Вы писали:

S>На Perl пишут все те, кто хочет на нём писать. Если толпа на нём не ваяет всякий ширпотреб на широптребных либах,

S>то это не значит, что его не применяют в закрытых, никому не известных проектах.

Я бы сказал, что перл часто пользуется в задачах автоматизации, когда баша уже недостаточно, а что нибуть типя сей уже перебор.
Лично у меня на перлах нарисованы некоторые сервисы, автоматизирующие нужное мне. Например, я сейчас снимаю таймлапс с этой камеры, а так же таймлапсы некоторых статистик LHC. Сервис написан на перле.
Или вот, мой крайний проект: автоматизация майнкрафта при помощи эмуляции клавиатуры\мыша.

Питон в подобном деле не катит, ибо у него голва свёрнута на отступах, приходится дохрена отвлекаться на их соблюдение.
Руби... Хз, руби пока не трогал.
Matrix has you...
Re[8]: Про perl 6
От: Mamut Швеция http://dmitriid.com
Дата: 19.10.15 06:03
Оценка:
M>>Слишком многословно, из-за чего все, что сложнее [x*x for x in list] становится нечитаемым, а создание сколько-нибудь сложных comprehension'ов — нетривиальным.

EP>Для сложных есть yield.


Что меняет yield?

  Скрытый текст
M>>
M>># Python for if for if чтоа?
M>>[(x,y) for x in range(5) if x % 2 == 0 for y in range(5) if y % 2 == 1]

M>>% Erlang. По сути, перечисление условий для получения X и Y.

M>>[{X, Y} || X <- range(5), Y <- range(5), x rem 2 == 0, y rem 2 == 1 ]
M>>


EP>А какая семантика у Erlang варианта? Подозреваю что фильтры применяться после того как сгенерируются пары, то есть неэффективно.


Это я постараюсь в течение дня посмотреть. Знаю пока то, что они разворачиваются в функции с паттерн матчингом и tail-recursion: http://www.erlang.org/doc/efficiency_guide/listHandling.html#id67562


dmitriid.comGitHubLinkedIn
Re[9]: Про perl 6
От: Evgeny.Panasyuk Россия  
Дата: 19.10.15 06:23
Оценка:
Здравствуйте, Mamut, Вы писали:

M>>>Слишком многословно, из-за чего все, что сложнее [x*x for x in list] становится нечитаемым, а создание сколько-нибудь сложных comprehension'ов — нетривиальным.

EP>>Для сложных есть yield.
M>Что меняет yield?

Позволяет вынести генерацию ленивого списка в отдельную функцию, в которой можно всё внятно расписать.

EP>>А какая семантика у Erlang варианта? Подозреваю что фильтры применяться после того как сгенерируются пары, то есть неэффективно.

M>Это я постараюсь в течение дня посмотреть. Знаю пока то, что они разворачиваются в функции с паттерн матчингом и tail-recursion: http://www.erlang.org/doc/efficiency_guide/listHandling.html#id67562

Это скорей всего сахар для монады List, или аналога — и тут как раз важно чтобы guard был как можно раньше, чтобы сразу отсечь лишние ветки.
Re[4]: Про perl 6
От: _NN_  
Дата: 19.10.15 07:14
Оценка: +2
Здравствуйте, Sheridan, Вы писали:

S>Питон в подобном деле не катит, ибо у него голва свёрнута на отступах, приходится дохрена отвлекаться на их соблюдение.


Даже в языках где отступы не обязательны, код без них не читаем.
Все практики написания кода об этом пишут.
В любом случае их нужно соблюдать.
А любой вменяемый редактор умеет это делать автоматически и не нужно думать об этом.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[5]: Про perl 6
От: Sheridan Россия  
Дата: 19.10.15 07:48
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Даже в языках где отступы не обязательны, код без них не читаем.

Полностью и категорически согласен.
Но питон пошел еще дальше. В итоге получается похоже на поездку к бабушке с "СПАСИБО, бабушка, не надо больше еды!!"
Matrix has you...
Re[10]: Про perl 6
От: Mamut Швеция http://dmitriid.com
Дата: 19.10.15 08:41
Оценка:
M>>Что меняет yield?
EP>Позволяет вынести генерацию ленивого списка в отдельную функцию, в которой можно всё внятно расписать.

Внезапно откуда-то появились ленивые списки

EP>>>А какая семантика у Erlang варианта? Подозреваю что фильтры применяться после того как сгенерируются пары, то есть неэффективно.

M>>Это я постараюсь в течение дня посмотреть. Знаю пока то, что они разворачиваются в функции с паттерн матчингом и tail-recursion: http://www.erlang.org/doc/efficiency_guide/listHandling.html#id67562

EP>Это скорей всего сахар для монады List, или аналога — и тут как раз важно чтобы guard был как можно раньше, чтобы сразу отсечь лишние ветки.


Это сахар для компилятора, который переписывает их в рекурсивные функции.

В общем, прогнал я через компилятор, чтобы он выдал мне так называемый Core Erlang. По сути, разворачивается во вложенный цикл, и проверка идет для каждого элемента. То есть не после того, как пары сгенерированы, а во время генерации пар

Изначальный код
-module(lc).

-export([lc/0]).

lc() ->
 [{X, Y} || X <- lists:seq(1, 5), Y <- lists:seq(1, 5), X rem 2 == 0, Y rem 2 == 1 ].


compile(lc, to_core):
  Скрытый текст
module 'lc' ['lc'/0,
         'module_info'/0,
         'module_info'/1]
    attributes []
'lc'/0 =
    %% Line 5
    fun () ->
    %% Line 6
    ( letrec
          'lc$^0'/1 =
          fun (_cor10) ->
              case _cor10 of
            <[X|_cor1]> when 'true' ->
                ( letrec
                  'lc$^1'/1 =
                      fun (_cor11) ->
                      case _cor11 of
                        <[Y|_cor4]>
                        when try
                              let <_cor5> =
                              call 'erlang':'rem'
                                  (X, 2)
                              in  let <_cor6> =
                                  call 'erlang':'=='
                                  (_cor5, 0)
                              in  let <_cor7> =
                                  call 'erlang':'rem'
                                      (Y, 2)
                                  in  let <_cor8> =
                                      call 'erlang':'=='
                                      (_cor7, 1)
                                  in  call 'erlang':'and'
                                      (_cor6, _cor8)
                          of <Try> ->
                              Try
                          catch <T,R> ->
                              'false' ->
                        let <_cor12> =
                            apply 'lc$^1'/1
                            (_cor4)
                        in  ( [{X,Y}|_cor12]
                              -| ['compiler_generated'] )
                        ( <[Y|_cor4]> when 'true' ->
                          apply 'lc$^1'/1
                              (_cor4)
                          -| ['compiler_generated'] )
                        <[]> when 'true' ->
                        apply 'lc$^0'/1
                            (_cor1)
                        ( <_cor11> when 'true' ->
                          ( primop 'match_fail'
                            ({'function_clause',_cor11})
                            -| [{'function_name',{'lc$^1',1}}] )
                          -| ['compiler_generated'] )
                      end
                  in  let <_cor9> =
                      call 'lists':'seq'
                      (1, 5)
                  in  apply 'lc$^1'/1
                      (_cor9)
                  -| ['list_comprehension'] )
            <[]> when 'true' ->
                []
            ( <_cor10> when 'true' ->
                  ( primop 'match_fail'
                    ({'function_clause',_cor10})
                -| [{'function_name',{'lc$^0',1}}] )
              -| ['compiler_generated'] )
              end
      in  let <_cor2> =
          call 'lists':'seq'
              (1, 5)
          in  apply 'lc$^0'/1
              (_cor2)
      -| ['list_comprehension'] )
'module_info'/0 =
    fun () ->
    call 'erlang':'get_module_info'
        ('lc')
'module_info'/1 =
    fun (_cor0) ->
    call 'erlang':'get_module_info'
        ('lc', _cor0)
end


dmitriid.comGitHubLinkedIn
Re[11]: Про perl 6
От: Evgeny.Panasyuk Россия  
Дата: 19.10.15 09:18
Оценка:
Здравствуйте, Mamut, Вы писали:

M>>>Что меняет yield?

EP>>Позволяет вынести генерацию ленивого списка в отдельную функцию, в которой можно всё внятно расписать.
M>Внезапно откуда-то появились ленивые списки

А не от ленивого не так много толку — его можно и обычными циклами расписать. Структурно будет практически тоже самое.

M>В общем, прогнал я через компилятор, чтобы он выдал мне так называемый Core Erlang. По сути, разворачивается во вложенный цикл, и проверка идет для каждого элемента. То есть не после того, как пары сгенерированы, а во время генерации пар


Я о другом. После беглого взгляда — там ведь идёт проверка для каждой пары. Вот сколько раз у тебя берётся остаток от X-ов?
Re[6]: Про perl 6
От: _NN_  
Дата: 19.10.15 09:22
Оценка: +1
Здравствуйте, Sheridan, Вы писали:

S>Здравствуйте, _NN_, Вы писали:


_NN>>Даже в языках где отступы не обязательны, код без них не читаем.

S>Полностью и категорически согласен.
S>Но питон пошел еще дальше. В итоге получается похоже на поездку к бабушке с "СПАСИБО, бабушка, не надо больше еды!!"

Проблема больше чем надуманна.
Редакторы умеют всё делать нормально.
Возможно любимый nano не умеет, но редактировать в нём код по любому не очень удобно.
Для примера взять язык без отступов , скажем в том же C# инструменты типа Resharper-а форматируют всё с отступами и при написании кода не дают писать без них.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[12]: Про perl 6
От: Mamut Швеция http://dmitriid.com
Дата: 19.10.15 09:25
Оценка:
EP>А не от ленивого не так много толку — его можно и обычными циклами расписать. Структурно будет практически тоже самое.

Куда-то разговор ушел не в ту степь.

[List comprehensions в Питоне:] Слишком многословно, из-за чего все, что сложнее [x*x for x in list] становится нечитаемым, а создание сколько-нибудь сложных comprehension'ов — нетривиальным.


Здесь нет ни слова про ленивость или возможность расписать циклами.

M>>В общем, прогнал я через компилятор, чтобы он выдал мне так называемый Core Erlang. По сути, разворачивается во вложенный цикл, и проверка идет для каждого элемента. То есть не после того, как пары сгенерированы, а во время генерации пар


EP>Я о другом. После беглого взгляда — там ведь идёт проверка для каждой пары. Вот сколько раз у тебя берётся остаток от X-ов?


А какая семантика у Erlang варианта? Подозреваю что фильтры применяться после того как сгенерируются пары, то есть неэффективно.


Нет. Фильтры применятся не после того как сгенерируются пары.


dmitriid.comGitHubLinkedIn
Re[13]: Про perl 6
От: Evgeny.Panasyuk Россия  
Дата: 19.10.15 09:37
Оценка:
Здравствуйте, Mamut, Вы писали:

M>>>В общем, прогнал я через компилятор, чтобы он выдал мне так называемый Core Erlang. По сути, разворачивается во вложенный цикл, и проверка идет для каждого элемента. То есть не после того, как пары сгенерированы, а во время генерации пар

EP>>Я о другом. После беглого взгляда — там ведь идёт проверка для каждой пары. Вот сколько раз у тебя берётся остаток от X-ов?
M>

M>А какая семантика у Erlang варианта? Подозреваю что фильтры применяться после того как сгенерируются пары, то есть неэффективно.

M>Нет. Фильтры применятся не после того как сгенерируются пары.

Пара сгенерировалась, и потом применился фильтр, и так для каждой пары, верно?
Re[7]: Про perl 6
От: Sheridan Россия  
Дата: 19.10.15 09:44
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Проблема больше чем надуманна.

_NN>Редакторы умеют всё делать нормально.
Мне насрать, что там умеют редакторы, я пишу в том, что в данный момент под рукой.
Я терпеть не могу, когда удобства делают обязанностью. Мне не нужен надзиратель с палкой, который стоит и бьёт по пальцам, если отступ не четыре пробела, а два. Отступы и форматирование — категорически нужная штука, но не стоит их соблюдение возводить в ранг абсолюта. Это граничит с идиотизмом.
Matrix has you...
Отредактировано 19.10.2015 9:50 Sheridan . Предыдущая версия .
Re[14]: Про perl 6
От: Mamut Швеция http://dmitriid.com
Дата: 19.10.15 09:58
Оценка:
M>>

M>>А какая семантика у Erlang варианта? Подозреваю что фильтры применяться после того как сгенерируются пары, то есть неэффективно.

M>>Нет. Фильтры применятся не после того как сгенерируются пары.

EP>Пара сгенерировалась, и потом применился фильтр, и так для каждой пары, верно?


Да. Теперь понял, что в твоем вопросе «после того как сгенерируются пары» не означало «после того как сгенерируются все пары».

ЗЫ. Обнаружил (внезапно, да, хотя такая запись не удивительна), что можно и так писать

[{X, Y} || X <- lists:seq(1, 5), X rem 2 == 0, Y <- lists:seq(1, 5), Y rem 2 == 1]


По-моему, не видел, чтобы кто-то так писал. Но при желании можно. Тогда проверка будет так, как тебе нравится.

Если кому интересно,
  Скрытый текст
module 'lc' ['lc'/0,
         'module_info'/0,
         'module_info'/1]
    attributes []
'lc'/0 =
    %% Line 5
    fun () ->
    %% Line 6
    ( letrec
          'lc$^0'/1 =
          fun (_cor8) ->
              case _cor8 of
            <[%% Line 7
              X|_cor1]>
                when %% Line 7
                  try
                  let <_cor2> =
                      call 'erlang':'rem'
                      (X, 2)
                  in  call 'erlang':'=='
                      (_cor2, 0)
                  of <Try> ->
                  Try
                  catch <T,R> ->
                  'false' ->
                ( letrec
                  'lc$^1'/1 =
                      fun (_cor9) ->
                      case _cor9 of
                        <[%% Line 7
                          Y|_cor5]>
                        when %% Line 8
                          try
                              let <_cor6> =
                              call 'erlang':'rem'
                                  (Y, 2)
                              in  call 'erlang':'=='
                                  (_cor6, 1)
                          of <Try> ->
                              Try
                          catch <T,R> ->
                              'false' ->
                        let <_cor10> =
                            %% Line 7
                            apply 'lc$^1'/1
                            (_cor5)
                        in  ( [{X,Y}|_cor10]
                              -| ['compiler_generated'] )
                        ( <[%% Line 7
                        Y|_cor5]> when 'true' ->
                          %% Line 7
                          apply 'lc$^1'/1
                              (_cor5)
                          -| ['compiler_generated'] )
                        <[]> when 'true' ->
                        %% Line 7
                        apply 'lc$^0'/1
                            (_cor1)
                        ( <_cor9> when 'true' ->
                          ( primop 'match_fail'
                            ({'function_clause',_cor9})
                            -| [{'function_name',{'lc$^1',1}}] )
                          -| ['compiler_generated'] )
                      end
                  in  let <_cor7> =
                      %% Line 7
                      call 'lists':'seq'
                      (1, 5)
                  in  apply 'lc$^1'/1
                      (_cor7)
                  -| ['list_comprehension'] )
            ( <[%% Line 7
                X|_cor1]> when 'true' ->
                  %% Line 7
                  apply 'lc$^0'/1
                  (_cor1)
              -| ['compiler_generated'] )
            <[]> when 'true' ->
                []
            ( <_cor8> when 'true' ->
                  ( primop 'match_fail'
                    ({'function_clause',_cor8})
                -| [{'function_name',{'lc$^0',1}}] )
              -| ['compiler_generated'] )
              end
      in  let <_cor3> =
          %% Line 7
          call 'lists':'seq'
              (1, 5)
          in  apply 'lc$^0'/1
              (_cor3)
      -| ['list_comprehension'] )
'module_info'/0 =
    fun () ->
    call 'erlang':'get_module_info'
        ('lc')
'module_info'/1 =
    fun (_cor0) ->
    call 'erlang':'get_module_info'
        ('lc', _cor0)
end


dmitriid.comGitHubLinkedIn
Re[15]: Про perl 6
От: Evgeny.Panasyuk Россия  
Дата: 19.10.15 10:05
Оценка:
Здравствуйте, Mamut, Вы писали:

M>ЗЫ. Обнаружил (внезапно, да, хотя такая запись не удивительна), что можно и так писать

M>
M>[{X, Y} || X <- lists:seq(1, 5), X rem 2 == 0, Y <- lists:seq(1, 5), Y rem 2 == 1]
M>

M>По-моему, не видел, чтобы кто-то так писал. Но при желании можно.

Значит всё-таки действительно монада List

M>Тогда проверка будет так, как тебе нравится.


Забавно что для Python'а у тебя сразу получился правильный вариант
Re[16]: Про perl 6
От: Mamut Швеция http://dmitriid.com
Дата: 19.10.15 10:09
Оценка:
EP>Значит всё-таки действительно монада List

Ну, если тебе от этого будет спаться легче по ночам, пусть будет монада лист

M>>Тогда проверка будет так, как тебе нравится.

EP>Забавно что для Python'а у тебя сразу получился правильный вариант

Для Питона я скопировал первое попавшееся Нечитаемость и многословность Питона это не спасает.


dmitriid.comGitHubLinkedIn
Re[17]: Про perl 6
От: Evgeny.Panasyuk Россия  
Дата: 19.10.15 10:59
Оценка:
Здравствуйте, Mamut, Вы писали:

EP>>Значит всё-таки действительно монада List

M>Ну, если тебе от этого будет спаться легче по ночам, пусть будет монада лист

Конечно, ведь теперь сразу понятна семантика.

M>>>Тогда проверка будет так, как тебе нравится.

EP>>Забавно что для Python'а у тебя сразу получился правильный вариант
M>Для Питона я скопировал первое попавшееся Нечитаемость и многословность Питона это не спасает.

В этом конкретном примере это субъектив. Тут четыре символа разницы:
[(x, y) for x in range(5) for y in range(5) if x % 2 == 0 if y % 2 == 1]
[{X, Y} || X <- range(5), Y <- range(5), x rem 2 == 0, y rem 2 == 1]
Структурно — одно и то же
Re[4]: Про perl 6
От: Ops Россия  
Дата: 19.10.15 11:36
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Лично у меня на перлах нарисованы некоторые сервисы, автоматизирующие нужное мне. Например, я сейчас снимаю таймлапс с этой камеры


А че так пусто?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[5]: Про perl 6
От: Sheridan Россия  
Дата: 19.10.15 11:38
Оценка:
Здравствуйте, Ops, Вы писали:

S>>Лично у меня на перлах нарисованы некоторые сервисы, автоматизирующие нужное мне. Например, я сейчас снимаю таймлапс с этой камеры

Ops>А че так пусто?
Ну так чего возле фонтана жопу греть, когда за поворотом парк начинается, площадью более в 9 кв. километров
Matrix has you...
Re[8]: Про perl 6
От: Somescout  
Дата: 19.10.15 15:55
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Здравствуйте, _NN_, Вы писали:


_NN>>Проблема больше чем надуманна.

_NN>>Редакторы умеют всё делать нормально.
S>Мне насрать, что там умеют редакторы, я пишу в том, что в данный момент под рукой.
S>Я терпеть не могу, когда удобства делают обязанностью. Мне не нужен надзиратель с палкой, который стоит и бьёт по пальцам, если отступ не четыре пробела, а два. Отступы и форматирование — категорически нужная штука, но не стоит их соблюдение возводить в ранг абсолюта. Это граничит с идиотизмом.

А зачем нужны лишние элементы? Само по себе форматирование в большинстве случаев завязано на структуру кода, и нет особого смысла ставить фигурные скобки/begin..end/прочее чтобы выделить то что уже выделено отступом.
ARI ARI ARI... Arrivederci!
Re[9]: Про perl 6
От: Sheridan Россия  
Дата: 19.10.15 16:35
Оценка: +1
Здравствуйте, Somescout, Вы писали:

S>А зачем нужны лишние элементы? Само по себе форматирование в большинстве случаев завязано на структуру кода, и нет особого смысла ставить фигурные скобки/begin..end/прочее чтобы выделить то что уже выделено отступом.


Да пожалуйста, ешьте, если нравится. Я против, что ли?
Но я есть это буду только в исключительных случаях, ибо хочу таки иметь возможность писать как то приблизительно так:
void CStringBuilderBase::preface(const int                 &val) { MON_SB_SPRINTF("%d"   , val                   ); }
void CStringBuilderBase::preface(const unsigned int        &val) { MON_SB_SPRINTF("%u"   , val                   ); }
void CStringBuilderBase::preface(const short               &val) { MON_SB_SPRINTF("%hi"  , val                   ); }
void CStringBuilderBase::preface(const unsigned short      &val) { MON_SB_SPRINTF("%hu"  , val                   ); }
void CStringBuilderBase::preface(const long                &val) { MON_SB_SPRINTF("%li"  , val                   ); }
void CStringBuilderBase::preface(const unsigned long       &val) { MON_SB_SPRINTF("%lu"  , val                   ); }
void CStringBuilderBase::preface(const long long           &val) { MON_SB_SPRINTF("%lli" , val                   ); }
void CStringBuilderBase::preface(const unsigned long long  &val) { MON_SB_SPRINTF("%llu" , val                   ); }
void CStringBuilderBase::preface(const double              &val) { MON_SB_SPRINTF("%f"   , val                   ); }
void CStringBuilderBase::preface(const char                *val) { MON_SB_CONCAT(m_string, std::string(val)      ); }
void CStringBuilderBase::preface(const char                &val) { MON_SB_SPRINTF("%c"   , val                   ); }
void CStringBuilderBase::preface(const unsigned char       &val) { MON_SB_SPRINTF("%c"   , val                   ); }
void CStringBuilderBase::preface(const bool                &val) { MON_SB_CONCAT(m_string, val ? "true" : "false"); }
void CStringBuilderBase::preface(const std::string         &val) { MON_SB_CONCAT(m_string, val                   ); }
void CStringBuilderBase::preface(const float               &val) { MON_SB_SPRINTF("%f"   , val                   ); }
Matrix has you...
Re[8]: Про perl 6
От: _NN_  
Дата: 19.10.15 17:41
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Здравствуйте, _NN_, Вы писали:


_NN>>Проблема больше чем надуманна.

_NN>>Редакторы умеют всё делать нормально.
S>Мне насрать, что там умеют редакторы, я пишу в том, что в данный момент под рукой.
S>Я терпеть не могу, когда удобства делают обязанностью. Мне не нужен надзиратель с палкой, который стоит и бьёт по пальцам, если отступ не четыре пробела, а два. Отступы и форматирование — категорически нужная штука, но не стоит их соблюдение возводить в ранг абсолюта. Это граничит с идиотизмом.

Всё таки большинство проблем надуманно на мой взгляд.
Касательно твоего кода вот тебе язык на отступах в виде Python:
Полноценную функцию изволь с переносом, а простую в виде лямбды пожалуйста.

a = lambda x: print("a - {}".format(x))
b = lambda x: print("b - {}".format(x))
c = lambda x: print("c - {}".format(x))
d = lambda x: print("d - {}".format(x))

a(1) # a - 1


Еще можно использовать ";" если хочется побыстрому записать и проверить
def a(x): 
   print(x); print(x+1); y = x - 1; print(y)


Также внутри скобок можно писать как душе угодно:

def a( 
  x, 
      y, 
              z): 
     print(x, y, 
       z) 
     ( 
print("F**k indent haha") 
)


А когда код выходить в проект с поддержкой , всё равно расставишь отступы для чтения другими даже в языках без отступов.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[9]: Про perl 6
От: Sheridan Россия  
Дата: 19.10.15 18:22
Оценка:
Здравствуйте, _NN_, Вы писали:

S>>Я терпеть не могу, когда удобства делают обязанностью. Мне не нужен надзиратель с палкой, который стоит и бьёт по пальцам, если отступ не четыре пробела, а два. Отступы и форматирование — категорически нужная штука, но не стоит их соблюдение возводить в ранг абсолюта. Это граничит с идиотизмом.


_NN>Всё таки большинство проблем надуманно на мой взгляд.

_NN>Касательно твоего кода вот тебе язык на отступах в виде Python:
_NN>Полноценную функцию изволь с переносом, а простую в виде лямбды пожалуйста.
_NN>Еще можно использовать ";" если хочется побыстрому записать и проверить
_NN>Также внутри скобок можно писать как душе угодно:

Вот и я о чём. Налицо ограничение возможностей оформления кода. Выйти за рамки "только отступы, только хардкор!" можно только с извращениями.
Matrix has you...
Re[10]: Про perl 6
От: _NN_  
Дата: 19.10.15 18:28
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Вот и я о чём. Налицо ограничение возможностей оформления кода. Выйти за рамки "только отступы, только хардкор!" можно только с извращениями.

Ограничения вполне вменяемые.
Я что-то особо не замечал промышленного кода с плохими отступами.
В этом любом случае стараются следовать нормальным отступам или "хардкору" как говоришь.

Взял наугад файл из Linux и не поверишь выровненный код: https://github.com/torvalds/linux/blob/master/ipc/compat_mq.c
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[11]: Про perl 6
От: Sheridan Россия  
Дата: 19.10.15 19:30
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Взял наугад файл из Linux и не поверишь выровненный код: https://github.com/torvalds/linux/blob/master/ipc/compat_mq.c

Ты не поверишь...
    return __get_user(attr->mq_flags, &uattr->mq_flags)
        | __get_user(attr->mq_maxmsg, &uattr->mq_maxmsg)
        | __get_user(attr->mq_msgsize, &uattr->mq_msgsize)
        | __get_user(attr->mq_curmsgs, &uattr->mq_curmsgs);
Matrix has you...
Re[12]: Про perl 6
От: _NN_  
Дата: 19.10.15 19:35
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Здравствуйте, _NN_, Вы писали:


_NN>>Взял наугад файл из Linux и не поверишь выровненный код: https://github.com/torvalds/linux/blob/master/ipc/compat_mq.c

S>Ты не поверишь...
Ну как бы код выровнен , а не хаотично написан.
S>
S>    return __get_user(attr->mq_flags, &uattr->mq_flags)
S>        | __get_user(attr->mq_maxmsg, &uattr->mq_maxmsg)
S>        | __get_user(attr->mq_msgsize, &uattr->mq_msgsize)
S>        | __get_user(attr->mq_curmsgs, &uattr->mq_curmsgs);
S>


Синтаксис Python требует либо '\' либо скобки и будет просто:
   return __(get_user(attr->mq_flags, &uattr->mq_flags)
        | __get_user(attr->mq_maxmsg, &uattr->mq_maxmsg)
        | __get_user(attr->mq_msgsize, &uattr->mq_msgsize)
        | __get_user(attr->mq_curmsgs, &uattr->mq_curmsgs));


С '\' согласен, не очень удобно будет, хотя в макросах C по другому никак и все живы
   return __get_user(attr->mq_flags, &uattr->mq_flags) \
        | __get_user(attr->mq_maxmsg, &uattr->mq_maxmsg) \
        | __get_user(attr->mq_msgsize, &uattr->mq_msgsize) \
        | __get_user(attr->mq_curmsgs, &uattr->mq_curmsgs);
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[13]: Про perl 6
От: Sheridan Россия  
Дата: 19.10.15 19:43
Оценка:
Крч. Мы тут из пустого в порожнее переливаем.
Итого:
Питон зациклен на отступах, что несколько ограничивает варианты оформления кода. Это не означает, что питон плох. Просто он несколько ограничивает свободу. Это мне не нравится. Точка.
Но. Несколько извернувшись, таки можно оформлять код как хочется.
Matrix has you...
Re[14]: Про perl 6
От: _NN_  
Дата: 19.10.15 19:49
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Крч. Мы тут из пустого в порожнее переливаем.

S>Итого:
S>Питон зациклен на отступах, что несколько ограничивает варианты оформления кода. Это не означает, что питон плох. Просто он несколько ограничивает свободу. Это мне не нравится. Точка.
Не только он , еще другия языки есть.
Кстати, а языки со сборщикам мусора тоже не нравятся наверное из-за ограничения свободы ?

S>Но. Несколько извернувшись, таки можно оформлять код как хочется.

Похоже в этом у нас разногласия.
Я как раз считаю это здравым смыслом, а для тебя извращения
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[15]: Про perl 6
От: Sheridan Россия  
Дата: 19.10.15 21:18
Оценка:
Еще раз: из пустого в порожнее. Смысла в дискуссии дальше не вижу. Тебе меня не убедить, что требование к табам в питоне не есть ограничение свободы оформления кода. Мне тебя не убедить в обратном. Ты, похоже, гдето очень обжёгся на неотформатированном коде.
Matrix has you...
Re[9]: Про perl 6
От: Evgeny.Panasyuk Россия  
Дата: 20.10.15 04:36
Оценка: +1
Здравствуйте, _NN_, Вы писали:

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

_NN>
_NN>a = lambda x: print("a - {}".format(x))
_NN>b = lambda x: print("b - {}".format(x))
_NN>c = lambda x: print("c - {}".format(x))
_NN>d = lambda x: print("d - {}".format(x))

_NN>a(1) # a - 1    
_NN>


Вот так тоже можно:
def a(x): print("a - {}".format(x))
def b(x): print("b - {}".format(x))
def c(x): print("c - {}".format(x))
def d(x): print("d - {}".format(x))
Re[16]: Про perl 6
От: _NN_  
Дата: 20.10.15 06:14
Оценка: 1 (1)
Здравствуйте, Sheridan, Вы писали:

S>Еще раз: из пустого в порожнее. Смысла в дискуссии дальше не вижу. Тебе меня не убедить, что требование к табам в питоне не есть ограничение свободы оформления кода. Мне тебя не убедить в обратном. Ты, похоже, гдето очень обжёгся на неотформатированном коде.


Я согласен с ограничением свободы.
Не обжигался я, просто пришёл к выводу, что это удобнее
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.