nim-wiki/Feature-suggestions.md

2.4 KiB

What features would you like to see in Nim or the Nim Ecosystem:

  • "pure" mode - force usage of scoped variables (unless imported by from... import) and exact case match (like golang does).

  • lightweight threads with network io multiplexed.

    • if Nim had something like goroutine (ie multiplexed on networking and use native threads for other syscalls), then it will be ultimate language for server programming.
  • gem like functionality (gem install sinatra)

  • A cookbook site similar to Python, where users can share code, mostly snippets. Driven by normal users rather by experts-only.

  • A wiki functionality for parts of the documentation so that users could update the documentation in a simple way (and Araq could take these suggestions and approve or reject them quickly).

  • A pastebin for nim on the Nim Homepage or somewhere else.

  • Allow multiple ranges (eg 1..3,5..8), handle reverse ranges (eg 5..1, 3.. -3)

  • echo automatically handle simple display of sequences (similar to repr)

  • vector and matrix maths (or include a port of an existing library)

  • include a do while loop (or equivalent)

  • % formating extended to include math precision (like provided by formatFloat, but in a concise % syntax way)

  • easier sorting, that doesn't need wrestling with types.

  • a ternary condition - like ?: in C, or iif()

    • You can do: if cond: a else: b, IIRC the ?: won't make it into Nim.
  • a simple way of indexing the last element of an array or sequence, to avoid long-hand code like arr[arr.len-1]

    • You can do: arr[arr.high] or arr[arr.low] for indexing the last and first element or an array or sequence.
    • If it is thisismylongname[thisismylongname.high] thats not helpfull. thisismylongname[>] and thisismylongname[<] looks nice for that in my eyes.
  • a shorthand way of discarding the return value of a proc (to improve readability)

  • a shorthand initialization of arrays or sequences, eg var x: array[0..25, int] = -1 would initialize all elements of x to -1

  • array/sequence comprehension

  • introspection like python's dir()

  • scoped imports, like D, Ada, and Ocaml

  • Nim documentation provided as .epub (tutorials + manual)

  • Missing features from C++/D template (generics in Nim) system, eg variadic generics and generic generic parameters