Need help understanding some Erlang syntax

I’m trying to redo a piece of Erlang code in Elixir:

odd_parity(N) ->
    Set = length([1 || <<1:1>> <= <<N>>]), % how does this translate?
    Set rem 2 == 1.
defp _odd_parity(n) do
    lst = for <<r::1 <- n>>, do: r
    set = length([1 || lst ])
    rem(set, 2) == 1
  end

Please how would the commented line above translate?

1 Like

I think you will find this stack overflow post to be helpful in translating the required syntax for binary comprehensions.

4 Likes

Thanks, solved.

def _odd_parity(n) do
    l = for <<(r::1 <- <<n>>)>>, r == 1, do: r
    rem(Enum.count(l), 2) == 1
end

You can use Efe (Elixir Flavoured Erlang).
It is a Erlang → Elixir transpiler

The project is awesome!

This is what generates

  def odd_parity(n) do
    set =
      length(
        for <<(<<1::size(1)>> <- <<n>>)>> do
          1
        end
      )

    rem(set, 2) == 1
  end
7 Likes

This is really cool! Thanks.