stryrckt
Why don’t Binary types implement the Enumerable protocol so that they can be used with the Enum library? It seems like it would be useful and easy enough to write the reduce, slice, count, and member? functions for binaries.
I tried doing so, but it only seems to work if I define the implementation for BitString and use guards or pattern matching to make sure that binaries are being passed.
defmodule BinaryEnumerable do
defimpl Enumerable, for: BitString do
def slice(_string), do: {:error, __MODULE__}
def slice(string, range) when is_binary(string),
do: String.slice(string, range)
def slice("", _start, _count), do: ""
def slice(_string, _start, 0), do: ""
def slice(string, start, len) when is_binary(string),
do: String.slice(string, start, len)
def count(string) when is_binary(string),
do: {:ok, String.length(string)}
def member?(string, <<char::binary-1>>) when is_binary(string),
do: {:ok, String.contains?(string, char)}
def member?(_string, _char), do: {:error, __MODULE__}
def reduce(_string, {:halt, acc}, _fun), do: {:halted, acc}
def reduce(string, {:suspend, acc}, fun), do: {:suspended, acc, &reduce(string, &1, fun)}
def reduce(<<>>, {:cont, acc}, _fun), do: {:done, acc}
def reduce(<<head::binary-1, tail::binary>>, {:cont, acc}, fun),
do: reduce(tail, fun.(head, acc), fun)
end
end
Trending in Questions
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Hi everyone.
My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
Hello,
I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind.
However, when I launch mix phx.server, I get an error...
New
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
Hello folks!
So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
How Can I Optimise Compile Time Dependencies
I have been building an elixir application for about 2 years now. Many modules and files ha...
New
Other Trending Topics
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with.
But I don’t use it anymore.
Serverless was the promis...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #ai
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixirconf-us
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #security
- #metaprogramming











Showing Posts 1 to 1- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
Eiji
First of all
Enumis module inElixircore code - not library, so topic should be closed.ok, but seriously now …
seemsis good word here. It would be definitelyuseful, but also definitely noteasy.Let’s take a look at simplest example
Enum.count/1. Do you want to countgraphemes,bytesor maybebites?Enumdoes not support options in its functions, so it would be hard to write anEnumerableimplementation which satisfies everyone.<<…>>syntax have lots of useful types likebits,bytes,utf8and many more. Such protocol implementation can’t guess based on which type you want to enumerate.There are probably also some internal reasons for doing that, but I can’t give example here as I’m not a member of lots core discussions. I think that people from Elixir Core Team could say more about it.