LINUX.ORG.RU

История изменений

Исправление Kuzy, (текущая версия) :

Python

Продуманный

Нужен язык чтоб тупые программисты ставили отступы. Зафорсим ето в самом языке.

Что? Автоформатирование не работает? Программисты должны сами писать clean code.

Функции без тела? Заче^WНе питоник вей^W^W^WРазработка не снизу-вверх, а сверху-вниз! Окей: pass.

Какой там год напомните?

Ура, функции!

def foo(x):
  a()
  b()
  return x

Господи, как так вышло! Прошло МНОГО(10?) ЛЕТ. Индустрии нужны лямбда функции!

Ладно, давайте!

# За много лет я понял что скобочки вокруг аргументов не круто! 
# Точно, давайте так и сделам! В def будут скобки, в lambda нет!
# 
# Консистентность языка?
# Новый кейворд?
# Что?? ??
foo = lambda x:
  a()
  b()
  return x

Хммм? Но часто эти функции очень короткие… Нужно как-то избавиться от return.

# Окей, посмотрим как функции умеют возвращать значения

# Ура ()
def a():
  return

# Ура 1
def a():
  return 1

# Ура 1, 2
def b():
  return 1, 2

# А что будет без return? None
def b():
  1, 2

# Окей, то есть `return` это (), а `pass` это None

А что же мы будет делать с lambda

# lambda обязана что-то вернуть!
# return больше не модно!
# Значение последнего выражения в функции и есть значения функции
# 
# Запретим писать return в lambda, чтоб тупые программисты этого не делали
# Не Pythonic Way
foo = lambda x:
  a()
  b()
  x

Ура, теперь у нас есть анонимные функции!

Давайте передадим коллбек!

map(lambda x: x + 1, [1, 2, 3])

Стоп. Что возвращает lambda? x + 1 или x + 1, [1, 2, 3]?

Окей! Давайте запретим в возвращаемом значении лямбды кортежи без скобок! Пишите map(lambda x: (x + 1, [1, 2, 3])) во втором варианте!

КОНСИСТЕНТНОСТЬ!

Так, а теперь попробуем написать коллбек посложнее!


map(lambda x:
  print(x)
  x + 1
, [1, 2, 3])

Хммммммммммм. Выглядит как-то неочень.

Посмотрим дальше!

map((lambda f:
  print(f)
  f
  )(lambda x:
  print(x)
  x + 1
)
, [1, 2, 3])

Я точно отступы правильно расставил? Это clean code???

Ладно, давайте что-нибудь запретим!

Лямбды могут быть только из одной строчки, потому что они должны быть простые (не потому что мы не осилили), для сложной логики именуйте функцию! Код должен быть self documentated!

Ох постойте, у нас же такой clean-язык, что везде юзаются примитивные control flow вроде циклов, а циклы требуют нескольких строчек :(

Сделаем еще один синтаксис циклов, но теперь однострочный!

КОНСИСТЕНТНОСТЬ! ПРОДУМАННОСТЬ! PYTHON!

Исходная версия Kuzy, :

Рассказываю, как правильно спорить с копипастой

Python

Продуманный

Нужен язык чтоб тупые программисты ставили отступы. Зафорсим ето в самом языке.

Что? Автоформатирование не работает? Программисты должны сами писать clean code.

Функции без тела? Заче^WНе питоник вей^W^W^WРазработка не снизу-вверх, а сверху-вниз! Окей: pass.

Какой там год напомните?

Ура, функции!

def foo(x):
  a()
  b()
  return x

Господи, как так вышло! Прошло МНОГО(10?) ЛЕТ. Индустрии нужны лямбда функции!

Ладно, давайте!

# За много лет я понял что скобочки вокруг аргументов не круто! 
# Точно, давайте так и сделам! В def будут скобки, в lambda нет!
# 
# Консистентность языка?
# Новый кейворд?
# Что?? ??
foo = lambda x:
  a()
  b()
  return x

Хммм? Но часто эти функции очень короткие… Нужно как-то избавиться от return.

# Окей, посмотрим как функции умеют возвращать значения

# Ура ()
def a():
  return

# Ура 1
def a():
  return 1

# Ура 1
def b():
  return 1, 2

# А что будет без return? None
def b():
  1, 2

# Окей, то есть `return` это (), а `pass` это None

А что же мы будет делать с lambda

# lambda обязана что-то вернуть!
# return больше не модно!
# Значение последнего выражения в функции и есть значения функции
# 
# Запретим писать return в lambda, чтоб тупые программисты этого не делали
# Не Pythonic Way
foo = lambda x:
  a()
  b()
  x

Ура, теперь у нас есть анонимные функции!

Давайте передадим коллбек!

map(lambda x: x + 1, [1, 2, 3])

Стоп. Что возвращает lambda? x + 1 или x + 1, [1, 2, 3]?

Окей! Давайте запретим в возвращаемом значении лямбды кортежи без скобок! Пишите map(lambda x: (x + 1, [1, 2, 3])) во втором варианте!

КОНСИСТЕНТНОСТЬ!

Так, а теперь попробуем написать коллбек посложнее!


map(lambda x:
  print(x)
  x + 1
, [1, 2, 3])

Хммммммммммм. Выглядит как-то неочень.

Посмотрим дальше!

map((lambda f:
  print(f)
  f
  )(lambda x:
  print(x)
  x + 1
)
, [1, 2, 3])

Я точно отступы правильно расставил? Это clean code???

Ладно, давайте что-нибудь запретим!

Лямбды могут быть только из одной строчки, потому что они должны быть простые (не потому что мы не осилили), для сложной логики именуйте функцию! Код должен быть self documentated!

Ох постойте, у нас же такой clean-язык, что везде юзаются примитивные control flow вроде циклов, а циклы требуют нескольких строчек :(

Сделаем еще один синтаксис циклов, но теперь однострочный!

КОНСИСТЕНТНОСТЬ! ПРОДУМАННОСТЬ! PYTHON!