Neato

you are viewing a single comment's thread
view the rest of the comments
[–] 8 points 2 years ago (2 children)

I don't think I would call this functional. Python is decidedly not at all functional - there's no way to declare arbitrary functions inline, no chaining of map/filter etc.

But the static types are definitely welcome. I didn't know about the type keyword. Apparently it makes it support forward references.

  • source
  • hideshow 4 child comments
  • [–] 4 points 2 years ago (1 child)

    like everything in python, to achieve functional you must first import functional

    (not even a joke)

  • source
  • parent
  • hideshow 2 child comments
  • [–] 3 points 2 years ago* (1 child)

    You're still limited by lambda expressions though. And in general the language is still statement based, not expression based. You can't do a = if foo then x else y type things (except for the one-off and backwards x if foo else y; they were so close!).

  • source
  • parent
  • hideshow 2 child comments
  • [–] 2 points 2 years ago (1 child)

    "a = x if foo else y" is a perfectly cromulent statement!

  • source
  • parent
  • hideshow 2 child comments
  • [–] 2 points 2 years ago (1 child)

    It's not. In functional languages there's no special case like this. All if-elses are expressions. It's far superior. For example how do you do this with Python's if-else expression?

    let x = if foo {
      let y = bar();
      baz();
      y
    } else {
      z
    }
    
  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 2 years ago (1 child)

    x = foo(y:=bar(), baz(), y) or z should work assuming foo bar and baz are functions being called?

    if this is setting y to the effect of bar() + running baz after, then:

    x = [bar(), baz()][0] or z

    might work

    and if you need y to be defined for later use:

    x = [(y:=bar()), baz()][0] or z

    but thats from memory, not sure if that will even run as written.

    if I get to a real computer I'll try that with an actual if statement instead of a bastardized ternary.
    
  • source
  • parent
  • hideshow 2 child comments