A small collection of WTF code snippets sorted by language.

  • toastal@lemmy.ml
    link
    fedilink
    arrow-up
    15
    ·
    edit-2
    45 minutes ago

    I love that the contribute is just a mailto link. I want to see more of this & less “join the Discord chatroom & create a Microsoft GitHub account today”

  • expr@programming.dev
    link
    fedilink
    arrow-up
    3
    ·
    4 hours ago

    For Haskell:

    1. 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.

    2. 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.

    3. This is jjust expected syntax and not really a wtf at all. It’s very common for languages to require whitespace around operators.

    4. Agreed as wtf, the NegativeLiterals should be on by default. Just would be a pretty significant breaking change, unfortunately

    5. Not a wtf… What would you expect to happen? That operation is not well-defined in any language

  • FourPacketsOfPeanuts@lemmy.world
    link
    fedilink
    arrow-up
    18
    ·
    edit-2
    1 hour ago

    Python item 1

    Mutable default arguments don’t get re-initialized with each function call.

    got an audible wtf from me… Been using python for years, totally unaware.

      • FourPacketsOfPeanuts@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        3 minutes ago

        true, and i can’t think of a legitimate case where it would have tripped me up. but if someone, a novice perhaps, wrote

        def some_func(foo, bar=[1, 2, 3]):
            bar.reverse()  # for whatever reason
            print(bar)
        
        some_func('hello')    # output [3,2,1]
        some_func('hello')    # output [1,2,3] 
        

        i think they would be within their rights to be surprised that calling this function twice has different results. that’s what i was surprised by; it feels like bar would be re initialised each time with a scope of the function but apparenty not

  • vithigar@lemmy.ca
    link
    fedilink
    arrow-up
    7
    ·
    7 hours ago

    The WTF in the C# example seems to be that people don’t understand anonymous functions and closures?

    • Kacarott@aussie.zoneOP
      link
      fedilink
      arrow-up
      4
      ·
      7 hours ago

      Some of the examples seem to be more “unintuitive for newbies”, but there are still some good ones in there

    • r00ty@kbin.life
      link
      fedilink
      arrow-up
      1
      ·
      6 hours ago

      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.

      • vithigar@lemmy.ca
        link
        fedilink
        arrow-up
        1
        ·
        4 hours ago

        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.

  • airbussy@lemmy.one
    link
    fedilink
    English
    arrow-up
    8
    ·
    7 hours ago

    Not only funny, but also learned something today: you can use NegativeLiterals to not have to write (-123) in Haskell

  • SpaceNoodle@lemmy.world
    link
    fedilink
    arrow-up
    4
    ·
    7 hours ago

    Are we supposed to be able to scroll through the examples? Also, it’s odd to see expected behavior in there.