zlacker

[parent] [thread] 4 comments
1. WJW+(OP)[view] [source] 2025-12-13 19:37:48
There are (some) guards available though? You could rewrite your example as:

    case x {
      n if x < 0 -> ...
      n if x > 10 -> ...
      n if x <= 10 -> ...
    }
Guards are a bit limited in that they cannot contain function calls, but that's a problem of the BEAM and not something Gleam could control.
replies(2): >>tymsca+p >>ngruhn+K
2. tymsca+p[view] [source] 2025-12-13 19:39:53
>>WJW+(OP)
You most likely asked an AI for this. They always think there is an `if` keyword in case statements in Gleam. There isn't one, sadly.

EDIT: I am wrong. Apparently there are, but it's a bit of a strange thing where they can only be used as clauses in `if` statements, and without doing any calculations.

replies(1): >>WJW+O1
3. ngruhn+K[view] [source] 2025-12-13 19:42:03
>>WJW+(OP)
Ah right, I remember now.

> Guards are a bit limited in that they cannot contain function calls,

I feel like that's not a small sacrifice.

> but that's a problem of the BEAM and not something Gleam could control.

Could Gleam desugar to a case expression like I wrote above?

replies(1): >>zelphi+Wk1
◧◩
4. WJW+O1[view] [source] [discussion] 2025-12-13 19:48:26
>>tymsca+p
There is though?

https://tour.gleam.run/flow-control/guards/

◧◩
5. zelphi+Wk1[view] [source] [discussion] 2025-12-14 11:44:12
>>ngruhn+K
Guards also eliminate checking for whether a pattern matching is comprehensive. Or do I remember wrong and the language does not check it at all?
[go to top]