(An incomplete and unordered list)
- inheritance
!=
===
not in
from python..
and...
(flip-flop operators)- implicit type coercion
- (except arguably short -> long style)
null
- case fallthroughs
- non-exhaustive case statements
- the
switch
/case
construct in general lambda
‘s restrictions in python- ruby having 3 (? maybe more?) types of function objects
- memory-location equality comparisons
- ok, these are sometimes fine, but should never be the default
- arguments that can be either positional or named when called
- anything that exposes the difference between co- and contravariance because of a type error (lookin’ at you, Java arrays)
- constructs whose behaviour is partly controlled by the parser (e.g. php’s instanceof)
- constructs that affect the runtime behaviour of the interpreter (e.g. php’s __halt_compiler or ruby’s __END__)
- operator overloading where you have to (can?) define your own precedence/associativity (no, seriously)
- compiler warnings
- ESPECIALLY warnings that cannot be turned into errors
- function scoping
- closing over variables
- closing over values
- why is it never the one i want!!
- hygienic macros
- unhygienic macros
- why is it never the one i want!!
- raw-text replacement as “macros” (e.g. the C preprocessor)