A small collection of WTF code snippets sorted by language.
I love that the contribute is just a mailto link. I want to see more of this & less “join the Discord & create a Microsoft GitHub account today”
Python item 1
Mutable default arguments don’t get re-initialized with each function call.
got an audible wtf from me… Been using for years, totally unaware.
Mutating function arguments is pretty wtf to begin with.
For Haskell:
-
I’d say this is definitely a wtf. Tuples should have never been given Foldable instances and I’d immediately reject any code that uses it in code review.
-
I actually didn’t know, so TIL. Not surprising since common wisdom is that a lot of the type class instances for Doubles are pretty weird/don’t make a lot of sense. Just like in any language, floating point needs special care.
-
This is jjust expected syntax and not really a wtf at all. It’s very common for languages to require whitespace around operators.
-
Agreed as wtf, the
NegativeLiterals
should be on by default. Just would be a pretty significant breaking change, unfortunately -
Not a wtf… What would you expect to happen? That operation is not well-defined in any language
-
Perl not included in list.
Conclusion: In Perl, everything works as expected
Correction: In Perl, everything works as can be expected.
The WTF in the C# example seems to be that people don’t understand anonymous functions and closures?
Some of the examples seem to be more “unintuitive for newbies”, but there are still some good ones in there
Yeah. I didn’t understand what they meant by the wtf there. Seemed to me someone wondered if the Action would have a localised version of i (making this stay lowercase on a phone was harder than it should be) or if it used the same i. So made a simple test for it.
Not really sure it’s a wtf unless they expected a different result.
I think the explanation they provide is a bit lacking as well. Defining an anonymous function doesn’t “create a reference” to any variables it uses, it captures the scope in which it was defined and retains existing references.
Not only funny, but also learned something today: you can use NegativeLiterals to not have to write (-123) in Haskell
Enjoyed this :D
Are we supposed to be able to scroll through the examples? Also, it’s odd to see expected behavior in there.
The C# example works exactly as you’d expect… Actually most of them do
The compiler optimization example (IIRC #6) was unexpected, when just looking at the code
C++ is just fried hahahhahah