Ты что, пьян? Когда ты спалился тем, что не отредактировал рубишное PI, а вписал свое Pi, он просто тебе на это укзал, причем совсем без злости вроде. Что ты теперь доказываешь, а главное - кому? :)
Ну некоторые могли бы подумать, что это дефолтное поведение. если бы ты не спалился с манки-патчингом. А так - пшик. Только тут о руби вообще речи не идет)
Если действовать по-моему, то хотя бы для x можно проверку типов отбросить
И какой в этом смысл? Операцию «x+i» всё равно придется проверять
По-вашему - нет.
Если делать по-моему, можно выбросить обе проверки.
def f(x):
for i in [a,b,c,d,e, ...]:
x + i
=>
def _f(x, l):
for i in l:
x + i
def f(x):
l = [a,b,c,d,e, ...]
if type(x) == foo and all(l, lambda x: type(l) == bar):
# вызываем _f, оптимизированную для foo и [bar]
# проверок типов в ней нет вообще
else:
get_trace_and_optimize(_f, (x, [bar]))
Ну так не будет работать по-вашему. Я поэкспериментровал: когда сумма меньше int_max, результат - int. Когда больше - long. Т.е. all(l, lambda x: type(l) == bar) не прокатит, тут тип результата и, следовательно, оптимальный алгоритм зависят от значений.
Может быть. Руби вообще полон сахару, но именно поэтому он и хорош, что там все свелосипежено (простите меня за это слово) до нас, и даже новички могут со старту пользоваться разными крутыми фичами.
К примеру, новый (сравнительно) Object#tap:
class Object
def tap
yield self
self
end
end
Накодить может каждый, а пользы от того, что он там уже есть - много. Например, я бы не додумался так лаконично такую полезную штуку запилить.
~ $ python
Python 2.6.6 (r266:84292, Mar 11 2011, 01:19:30)
[GCC 4.4.1] on linux2
Type «help», «copyright», «credits» or «license» for more information.
Мой преподаватель ТОЭ на заре туманной юности объяснял, что для инженера калькуляторы - зло, и рекомендовал освоить приближённую таблицу умножения: 2*2=5, 3*3=10, 4*4=16. Аргумент: «Да, сверхточности у вас не будет, но зато не ошибётесь на порядок, а с калькулятором это легко».
Это называется вешать ярлыки. Причём на человека, который с вероятностью 99% старше тебя (он даже меня старше лет на 20) и компетентнее в инженерной практике.
Python 3.3.1 (default, Dec 26 2013, 21:06:07)
[GCC 4.7.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import math
>>> math.pi
3
>>>
python
Python 2.7.3 (default, Sep 26 2012, 21:53:58)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import math
>>> print math.pi
3.14159265359
>>>
# python
Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import math
>>> print math.pi
3.14159265359
>>>