Hacker News new | comments | show | ask | jobs | submit login
Show HN: Erlang REST framework (github.com)
96 points by shinemonad 12 months ago | hide | past | web | favorite | 28 comments

I'm not sure why you would use this over cowboy's REST handler. Cowboy is the thing that powers Phoenix -- you really can't beat it for concurrent performance.

(Loïc of NineNines is an absolutely incredible guy that does a ton of really important work, and you all should consider supporting him at https://salt.bountysource.com/teams/ninenines)

> you really can't beat it for concurrent performance

You can. Cowboy is not the most performant web server in Erlang.

you are comparing apples and oranges :) I would go in that way: -> compare cowboy with mochiweb and leptus with rooster.

Perhaps in part, yes. But cowboy does have a very powerful REST handler built into it that does a lot of the same things: https://ninenines.eu/docs/en/cowboy/2.1/guide/rest_flowchart...

nothing "REST" about it. 100% HTTP

PS: if anyone is interested in a language-agnostic artifact like cowboy's or webmachine's, see https://github.com/for-GET/http-decision-diagram

Erlang is amazing language in its simplicity. And it was the perfect language for the web. I keep wondering why it never really took off.

Syntax as well as just that it's a really weird way of thinking about things compared to languages like Java, Python, etc. Elixir seems to be helping some with this, so I guess we'll see.

It's Prolog inspired. It's weird because it never took off like C/C++ like languages.

The language syntax is small enough that I believe it'll take a short time to learn and get use to the syntax versus other languages.

> The language syntax is small enough that I believe it'll take a short time to learn and get use to the syntax versus other languages.

I'm not sure size of syntax has all that much to do with adoption. Case in point: Lisp.

It’s funny because I would take Erlang’s syntax over Elixir’s anyday.

Likewise. I wish I could have Erlang the language w/ Elixir's community and growth.

Can't you? I mean, aren't they interoperable?

The canonical argument order in Elixir is backwards from Erlang (and I will argue just "wrong" with respect to the functional programming paradigm: it is essentially object-oriented corruption... the subject pretty much needs to be the final argument for various forms of functional composition to work; the place where this really becomes clear is when trying to call "reduce", which continues to have the "correct" argument ordering even while almost nothing else does <- though watch me be misremembering the exact place where this clicks as it hasn't been years since I spent a lot of time trying to be happy programming with Elixir :/), so there is a massive impedance mismatch tying to reuse functions and primitives codes in one language from the other (and it almost seems like many Elixir wrappers exist only to reverse the argument order). So, sure: they are "interoperable"... but so are C and Python ;P.

Erlang does not support currying, so having the subject in the last arg does not help much.

Also, the actual ordering is not `func(Args..., Subject)` but instead `func(Args..., Subject, OptionalArgs...)` which bit me more than once.

I like Elixir's consistent use of the first arg for the subject along with the pipe operator, which gives you essentially currying-like behaviour in the first argument.

> it's a really weird way of thinking about things compared to languages like Java, Python

This depends on your background. I have a very hard time thinking about procedural behaviour and state mutations, Erlang's (and other functional language's) model is much easier to keep in my head.

Yeah, syntax is a bit different than the mainstream, but it only takes a week or so to get used to it.

People are creatures of habit the syntax looks "weird" to many.

To the point of rewriting syntax just because of it, e.g. ReasonML vs OCaml...

For network applications, yes. Web? no.

It actually shares a lot of the usecase with golang, I would say, if the program can be distributed as binary, there would probably no golang.

> For network applications, yes. Web? no.


Why no comparison to webmachine? Webmachine has a really robust mapping to the HTTP standard, and sits on top of mochiweb.

I have used webmachine for web services in erlang, which I liked a lot. Not sure it's much maintained anymore.


Edit: apparently it's still at least somewhat alive... http://lists.therestfulway.com/pipermail/webmachine_lists.th...

I wasn't aware anyone was still maintaining mochiweb, thats actually somewhat comforting to know!

Hows this compare to something like Elixir + Phoenix?

I think you cannot. The Phoenix is a solid and stable framework. rooster still just a simple implementation of a basic REST framework.

Anything out there that accepts GraphQL queries?

There is also this, in Elixir:


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