Fl4m3Ph03n1x

Fl4m3Ph03n1x

Monadex bind operator

Background

I am trying a new library called Monadex and in specific I am trying the Result Monad. The documentation mentions a function called Result.bind and I have made it work with the following code snippet:

defmodule TestMonadex do
  use Monad.Operators

  import Monad.Result

  def p1(x) do
    x
    |> success()
    |> bind(&plus_1/1)
  end

  defp plus_1(n), do: n + 1
end

And so far so good.

Problem

The problem arises when I try to use the bind operator. According to the docs, this operator is the same thing as the Result.bind function. Following this logic, the following code snippet should work:

defmodule TestMonadex do
  use Monad.Operators

  import Monad.Result

  def p2(x) do
    success(x) ->> (&plus_1/1) # This does not compile!
  end

  defp plus_1(n), do: n + 1
end

Unfortunately, this is not compiling:

(SyntaxError) syntax error before: '>'

Stacktrace:
  │ (elixir 1.11.2) lib/kernel/parallel_compiler.ex:314: anonymous fn/4 in Kernel.ParallelCompiler.spawn_workers/7

an expression is always required on the right side of ->. Please provide a value after ->

At this point I strongly believe I am not understanding something from the docs or from the library.

Question

What a I doing wrong?

Marked As Solved

dorgan

dorgan

I still see a tilde, but the font choice may be a poor one and it’s easy to not spot the difference
It’s clearer looking at the source: MonadEx/lib/monad/operators.ex at master · rob-brown/MonadEx · GitHub
Or zooming:

Definitely an accessibility issue

Also Liked

dorgan

dorgan

The default one, it think it’s Arial since I’m on windows.
I do see the same as in your screenshot though, and the difference is barely noticeable.

Where Next?

Popular in Questions Top

senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New
yawaramin
In the Dialyzer docs ( http://erlang.org/doc/man/dialyzer.html#requesting-or-suppressing-warnings-in-source-files ), there is a way to tu...
New
_russellb
I want to try my hand at web scraping. What tools/libraries do I need to use. I’m hoping to turn this into something professional so don’...
New
Werner
Hi, I’m using Ubuntu 18.04 and after updating to OTP-24.0 yesterday i have this warning when I run “mix local.hex”: 14:57:30.512 [warn] ...
New
quazar
How to set Jason to encode all fields in ecto schema, I don’t care about security and implementing only is taking long list of attributes...
New
Jim
As a follow up to my earlier question: I have the code compiling and running but not getting a successful login from the rest server. ...
New
polypush135
As many of you may have realized by now (sorry for all the posts here) I’ve been working on a db problem where I’m trying to aggregate a ...
New
freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
fayddelight
I tried installing elixir 1.11.2 erlang 23.3.4 via asdf in my zsh shell. Enabled the versions locally and globally. When I list them ...
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New

Other popular topics Top

JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1140 51847 244
New
peerreynders
Manning 2016 Halloween weekend sale via Deal of the Day Friday, October 28 - Half off all MEAPs - code WM102816LT Saturday, October 29 ...
326 29600 154
New
srinivasu
How to handle excepions in elixir? Suppose i have A, B, C ,D, E modules. and each module has get() function. A.get() method will call th...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? https://hexdocs.pm/ecto/Ecto.Repo.h...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers' Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
aesmail
Hello guys, I have finally made it. I created an admin interface for a framework. It’s been on my todo list for years and with the curre...
New

We're in Beta

About us Mission Statement