zlacker

[return to "Nimony (Nim 3.0) Design Principles"]
1. mwkauf+M2[view] [source] 2025-12-02 01:00:22
>>andsoi+(OP)
Big "college freshman" energy in this take:

  I personally prefer to make the error state part of the objects: Streams can be in an error state, floats can be NaN and integers should be low(int) if they are invalid (low(int) is a pointless value anyway as it has no positive equivalent).
It's fine to pick sentinel values for errors in context, but describing 0x80000000 as "pointless" in general with such a weak justification doesn't inspire confidence.
◧◩
2. sevens+QKb[view] [source] 2025-12-05 13:24:12
>>mwkauf+M2
I have been burned by sentinel values every time. Give me sum types instead. And while I’m piling on, this example makes no sense to me:

    proc fib[T: Fibable](a: T): T =
      if a <= 2:
        result = 1
      else:
        result = fib(a-1) + fib(a-2)
Integer is the only possible type for T in this implementation, so what was the point of defining Fibable?
◧◩◪
3. treefo+Snc[view] [source] 2025-12-05 16:18:06
>>sevens+QKb
There can be a lot of different integers, int16, int32 ... and unsigned variants. Even huge BigNum integers of any lengths.
[go to top]