Maxximiliann
Error: ** (Protocol.UndefinedError) protocol Enumerable not implemented for "WAVES" of type BitString
Given:
market_data =
[
%{
asset: "3QvxP6YFBKpWJSMAfYtL8Niv8KmmKsnpb9uQwQpg8QN2",
last_price: 0.1249534,
priced_in: "WAVES",
volume: 13793.6013752778
},
%{
asset: "3QvxP6YFBKpWJSMAfYtL8Niv8KmmKsnpb9uQwQpg8QN2",
last_price: 1.626e-5,
priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
volume: 10311.7855749146
},
%{
asset: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu",
last_price: 189.658785,
priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
volume: 52373.8805236538
},
%{
asset: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu",
last_price: 186.06,
priced_in: "WAVES",
volume: 24023.1442492862
},
%{
asset: "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu",
last_price: 0.02497085,
priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
volume: 8690.02335386836
},
%{
asset: "4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8",
last_price: 0.08150997,
priced_in: "WAVES",
volume: 40979.8114711376
},
%{
asset: "4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8",
last_price: 1.097e-5,
priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
volume: 252.945468613465
},
%{
asset: "4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8",
last_price: 0.08329,
priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
volume: 201.247929171753
},
%{
asset: "5WvPKSJXzVE2orvbkJ8wsQmmQKqTv9sGBPksV4adViw3",
last_price: 0.00808268,
priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
volume: 3248.6225669422
},
%{
asset: "5WvPKSJXzVE2orvbkJ8wsQmmQKqTv9sGBPksV4adViw3",
last_price: 60.20503371,
priced_in: "WAVES",
volume: 516.180493091221
},
%{
asset: "7Z5peMVTuyEesJcYn7B6DDtV8oqKAFueBA52vPuf59rh",
last_price: 0.91104345,
priced_in: "WAVES",
volume: 26300.1502283905
},
%{
asset: "7Z5peMVTuyEesJcYn7B6DDtV8oqKAFueBA52vPuf59rh",
last_price: 1.2554e-4,
priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
volume: 577.404317777729
},
%{
asset: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
last_price: 7532.54,
priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
volume: 163617.091159899
},
%{
asset: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
last_price: 8250,
priced_in: "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ",
volume: 1489.58529413729
},
%{
asset: "Bwn3tDxj1rqqFGsnEy7Z829aj8Gs2UVQA7yktaJ6auHN",
last_price: 7.1e-7,
priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
volume: 1259.50422417225
},
%{
asset: "Bwn3tDxj1rqqFGsnEy7Z829aj8Gs2UVQA7yktaJ6auHN",
last_price: 0.00430558,
priced_in: "WAVES",
volume: 290.292294688471
},
%{
asset: "DHgwrRvVyqJsepd32YbBqUeDH4GJ1N984X8QoekjgH8J",
last_price: 300000000005,
priced_in: "7b4tRbsy8zNDW35gW9DETdRU5yaNoFGm2SvmwRuCns3f",
volume: 447641.500005591
},
%{
asset: "DHgwrRvVyqJsepd32YbBqUeDH4GJ1N984X8QoekjgH8J",
last_price: 0.05229596,
priced_in: "WAVES",
volume: 14287.8709376739
},
%{
asset: "DHgwrRvVyqJsepd32YbBqUeDH4GJ1N984X8QoekjgH8J",
last_price: 0.05294568,
priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
volume: 13348.2393706553
},
%{
asset: "DHgwrRvVyqJsepd32YbBqUeDH4GJ1N984X8QoekjgH8J",
last_price: 7.94e-6,
priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
volume: 10824.4211299108
},
%{
asset: "EYz8Zvs62D4d7F5ZgXHCWuzuFaZg63FYnfVQrTWQoLSK",
last_price: 7.9e-5,
priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
volume: 1666.02995108187
},
%{
asset: "EYz8Zvs62D4d7F5ZgXHCWuzuFaZg63FYnfVQrTWQoLSK",
last_price: 0.57,
priced_in: "WAVES",
volume: 1582.6257
},
%{
asset: "HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk",
last_price: 0.00594059,
priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
volume: 4020.64881215575
},
%{
asset: "HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk",
last_price: 43.9669216,
priced_in: "WAVES",
volume: 2384.30279291976
},
%{
asset: "WAVES",
last_price: 1.010899,
priced_in: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p",
volume: 383661.118208469
},
%{
asset: "WAVES",
last_price: 1.3345e-4,
priced_in: "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS",
volume: 51539.1607843401
},
%{
asset: "WAVES",
last_price: 1.0467,
priced_in: "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ",
volume: 705.83415129
}
]
Code:
def conversions do
market_data
|> Enum.map(fn map -> if Enum.member?(map.priced_in, "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS") do
%{
asset: map.asset,
btc_price: map.last_price
}
else
%{
asset: map.asset,
price: map.last_price,
priced_in: map.priced_in,
asset_to_btc_rate: asset_to_btc_rate(map.priced_in),
btc_price: map.last_price * asset_to_btc_rate(map.priced_in)
}
end
end)
end
Error: ** (Protocol.UndefinedError) protocol Enumerable not implemented for "WAVES" of type BitString. This protocol is implemented for the following type(s): Ecto.Adapters.SQL.Stream, Postgrex.Stream, DBConnection.PrepareStream, DBConnection.Stream, HashSet, Map, Function, List, File.Stream, Date.Range, Range, HashDict, MapSet, Stream, IO.Stream, GenEvent.Stream
What’s going on here and how do I resolve this issue? Thanks for your patient help! 
Marked As Solved
Marcus
Hello,
you are mapping over a list of maps. Therefore you get a map and map.prieced_in is a binary and this you give to Enum.member?, but Enum.member? needs an enumerable not a binary. The first data, in this case, is "WAVES" and for this protocol Enumerable not implemented ...
Also Liked
andreolvr
The compile error is happening because this is not the correct syntax for case, take a look at https://elixir-lang.org/getting-started/case-cond-and-if.html. Another problem in this logic is that the third clause (_) will never be reached, the value is equals 8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS or not. There is no third option. Maybe you are looking for an if/else instead of a case?
Marcus
Maybe, you needs …
def conversions(nil), do: nil
def conversions(market_data) do
Enum.map(market_data, fn map ->
if map.priced_in != "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS" do
%{
asset: map.asset,
price: map.last_price,
priced_in: map.priced_in,
asset_to_btc_rate: asset_to_btc_rate(map.priced_in),
btc_price: map.last_price * asset_to_btc_rate(map.priced_in)
}
else
%{
asset: map.asset,
btc_price: map.last_price
}
end
end)
end







