Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Able to abstract concisely at a high level, provides decent facilities for modeling business logic in a succinct yet correct manner etc.

Elixir and Erlang both lack a type system and maintain a focus on keeping the language constructs simple rather than providing various high level abstractions some other more expressive languages have.



I mean sure, you are right, but is there a language that is expressive by your criteria?

You seem to be describing DSLs -- that can be done by all LISPs and some others -- and not programming languages per se.

Elixir has very powerful macros by the way, they are compile-time and not the runtime `method_missing` stuff that Ruby does, so they are basically code generation that you don't get to see but get all the benefits from.

With those macros you can go quite far creating business DSLs with Elixir (and a bunch more language, in the interest if full honesty). That's why many people qualify Elixir as "LISP-y".

The lack of static typing is indeed something that is poking my eyes as well, but so far I have been managing. The extra cognitive load due to it -- plus the need to utilise the strong but dynamic typing system -- is definitely there though, cannot deny that.


I'm aware, I'm running Elixir in production, including custom macros.

That said, even the macro system pales in comparison with say, Haskell, in terms of expressiveness. Haskell has such a depth of constructs and allows highly sophisticated (& safe) abstractions that you often don't feel like you'd even need a separate DSL or an embedded DSL.

If anything, writing Elixir macros feels a lot like writing Typescript AST transformers to me.


That they are indeed.

And yeah, I am aware others have more powerful macro systems. OCaml is also pretty amazing at similar workloads.

Doesn't seem that we disagree on anything. You seem dissatisfied with the maturity of certain areas and that's okay.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: