massimo
How difficult would it be to add the infix notation à la Haskell?
How difficult would it be to add the infix notation à la Haskell?
I think it could improve readability on several occasions
For example
rem(5, 3)
could be written as
5 `rem` 3
or
Enum.into(list, %{})
list |> Enum.into(%{})
could become
list `Enum.into` %{}
Most Liked
josevalim
Even if it more readable in some cases, we need very strong reasons to add yet another way of doing things to the language, and I am afraid we don’t have enough pros here to justify it, especially because “more natural” and “readability” mostly boils down to personal preference.
Such feature will complicate the grammar and understanding of the language. If we add it, now every team will ask themselves: when do we use the infix notation? Should we always use it? Never use it? And this is time better spent elsewhere.
peerreynders
That’s an entirely subjective judgement.
In my personal view Haskell got a bit sidetracked from “lambda calculus” by trying to mimic “mathematical notation”.
What’s so special about functions of arity 2 that they deserve some special place in the universe to be “promoted to operators”? Functions are simple, operators merely confuse the issue (then there is the ternary operator - but there can’t be an infix notation for that).
And I’m fully aware that my opinion is informed, coloured, biased from Clojure (i.e. Lisp) - what can be more simple than (fn a b c d)?
(+ a b) may not look very mathematical but it conforms in a world built on functions …
rvirding
Parentheses rule!
And it is simple and extremely consistent as everything has the same format.
Last Post!
dorgan
Is that really more clear/expressive than this?
fn x ->
x
|> Binary.new!()
|> then(& &1.raw)
|> B.mk_url!()
end
or even
fn x ->
binary = Binary.new!(x)
B.mk_url(binary.raw)
end
I guess it’s a matter of preference but the only thing valuable I see in your example is map as a more general(as in generic functor map) instead of just Enum.map.
I get the value of a Functor and maybe even Monad or Monoid in your codebase if you enjoy these generalised operations in your codebase, but when it comes to functional composition I find the examples in this thread rather alien and fail to see what’s so pragmatic about it in this language.
Popular in Discussions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #hex










