< B / >

Things I Want In A Programming Language

I feel like I’m a simple human being and not asking for much.

I’m just looking for a programming language that has exactly the right set of features:

  1. Pattern matching in every reasonable binding position (Elixir Style)
  2. Everything is an expression, and every scope returns its last element (aka. no return fuckery)
  3. Strong and Static Gradual typing with me basically never having to write down types
  4. explicit modules that can be defined, nested, and imported in the most sensible way. That is:
    • Modules aren’t coupled with file names
    • You can import a module locally in another module
    • You can nest modules
  5. Some way to do piping: (-> )(Clojure), ->(ReScript), |> (Elixir) and &(Haskell) are all fine.
  6. Some very easy way to extend my standard language: import MyPrelude, open Utils, …, all fine.
  7. Some very direct way to interact with client-side JS
  8. No commas in lists. Seriously. It’s not that hard to write a parser that handles that sensibly and correctly.
  9. No. lazyness. by. default. I know what I’m doing, and I’ll gladly litter my code memoizes to make it go faster if I really need it. But lazyness by default makes my code harder to reason about, and I’m not willing to pay that price.
Draft in Progress

§ Nice to haves I could work around

  • good documentation that’s not hidden in some markdown files in a repo.
  • immutability by default
  • Type Classes

§ Things I’m unsure about

§ being able to drop down machine level

  • Rust-style or C-style

§ lambdas vs non-lambdas

§ (parens (syntax))

I think I want Racket-style macros (or at least I see their case pretty clearly, and if you want any Macros, you should have Racket Macros), but I’m way less sure about syntax here. Elixir’s syntax seems to go a long way here.

§ Simplicity

§ Syntax Likings

  • Elixir’s syntax, basically.

Is that really too much to ask?

≺≻ Where ClojureScript Feels... Weird