On Tuesday, August 13, 2019 at 3:04:03 AM UTC-6, José Valim wrote:
>
> I really want to avoid new syntactical constructs or special casing 
> anonymous functions as I believe it will be more confusing in the long term.
>

At that point adding in `.()` isn't a big deal, that's why it's pretty well 
fine as it is honestly for those kind of things.

The main issue is just piping into another 'argument' of a function call, 
like the erlang standard library very much expects the 'subject' to be at 
the end, so I end up having to do a lot of things like:
```
args
|> transform_them()
|> (&send(pid, &1)).()
```
When it would look and feel so much more clean via anything like:
```
args
|> transform_them()
|> &send(pid, &1) # Special case when `&` is in first position, though that 
does run into the expecting passing a `fun` to work

args
|> transform_them()
|> send(pid, _) # Pipe into the 'hole'

args
|> transform_them()
|> send(pid, _1) # Maybe index it, though this seems entirely needless

args
|> transform_them()
|> send(pid, &0) # Or use `&0` as a pipe value, though then it looks less 
like an obvious hole and thus more easy to 'scan' past

args
|> transform_them()
~> send(pid, _) # Perhaps a different pipe operator for piping into, but 
this seems needless when `|>` can do it just fine
```

All of which are much more easily read.  And there are libraries for doing 
just this, they 'feel' so much more clean when I use them.  With all of all 
of the above no closures even need to be created, it doesn't look like an 
anonymous function (except maybe the `&0` one), the prior value is just 
dumped into 'that' slot instead of the front slot.  Honestly I'd prefer if 
it always required `_`, no magic 'stuff into front position' or anything, 
this would even allow you to reference the value more than once (set it to 
a gensym'd name then and put that in the holes).

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/0f96553b-4db8-43f3-9565-b7749526c6d5%40googlegroups.com.

Reply via email to