0x3d.Site
is designed for aggregating information.
check repository here
Datastructures for Elixir
This is a collection of protocols, implementations and wrappers to work with datastructures.
The stdlib of Elixir right now is very poor and every now so you end up using the Erlang libraries, which have different APIs from the rest of idiomatic Elixir, and on top of that they lose all the protocol goodies.
Protocols
Sequence
first/1
- returns the first element in the sequence or nilnext/1
- returns a new sequence with the first element removed or nil
Counted
count
- returns the length of the structure
Emptyable
empty?/1
- checks if the structure is emptyclear/1
- returns an empty structure
Reducible
reduce/3
- reduces the structures
Sequenceable
to_sequence/1
- converts the structure to a sequence
Listable
to_list/1
- converts the structure to a list
Peekable
peek/1
- peeks and returns nil if the structure emptypeek/2
- peeks and returns the default value if the structure emptypeek!/1
- peeks and raises if the structure is empty
Reversible
reverse/1
- reverses the structure
Contains
contains?/2
- checks if the structure contains the passed value
Queue
enq/2
- enqueues a value in the structuredeq/1
- dequeues a value from the structure, returning nil if it's emptydeq/2
- dequeues a value from the structure, returning the default if it's emptydeq!/1
- dequeues a value from the structure, raising if it's empty
Stack
push/2
- pushes a value in the structurepop/1
- pops a value from the structure, returning nil if it's emptypop/2
- pops a value from the structure, returning the default if it's emptypop!/1
- pops a value from the structure, raising if it's empty
Set
add/2
- adds a value to the structuredelete/2
- deletes a value from the structureunion/2
- returns the union of the two structuresintersection/2
- returns the intersection of the two structuressubset?/2
- checks if the two structures are subsetsdisjoint?/2
- checks if the two structures are disjoint
Dictionary
get/2
- gets a value from the structure by its key, returning nil if there isn't oneget/3
- gets a value from the structure by its key, returning the default if there isn't oneget!/2
- gets a value from the structure by its key, raising if there isn't oneput/3
- puts a value in the structure with its keydelete/2
- delete a value from the structure by its keykeys/1
- returns a list of the keys in the structurevalues/1
- returns a list of the values in the structure
Helpers
Dict
get/2
- gets a value from the structure by its key, returning nil if there isn't oneget/3
- gets a value from the structure by its key, returning the default if there isn't oneget!/2
- gets a value from the structure by its key, raising if there isn't oneput/3
- puts a value in the structure with its keydelete/2
- delete a value from the structure by its keykeys/1
- returns a list of the keys in the structurevalues/1
- returns a list of the values in the structureput_new/3
- puts a value in the structure unless there's already one with that keyupdate/3
- updates the structure with an updater function, raises if there's no value with that keyupdate/4
- updates the structure with an updater function, the initial value is passed if there's no value with that key
Seq
with_index/1
- returns a sequence wrapping the sequence and returning indexesall?/1
- checks all elements in the sequence are truthyall?/2
- checks all elements are truthy with the given predicateany?/1
- checks if any element in the sequence is truthyany?/2
- checks if any element in the sequence is truthy with the given predicateat/2
- gets the element at the given index, returns nil if the sequence is shorterat/3
- gets the element at the given index, returns the default value if the sequence is shorterdrop/2
- drops the given number of elements from the sequencedrop_while/2
- drops elements from the sequence as long as the predicate returns a truthy valuetake/2
- take the given number of elements from the sequencetake_while/2
- take elements from the sequence as long as the predicate returns a truthy valueeach/2
- iterate over the sequenceselect/2
- filters the elements from the sequence returning the ones the predicate returns a truthy value forreject/2
- filters the elements from the sequence returning the ones the predicate returns a falsy value formap/2
- returns the sequence mapped with the given functionreduce/3
- reduce the sequencesort/1
- sort the sequencesort/2
- sort the sequence with the given predicatecount/1
- count the elements in the sequencecount/2
- count the elements in the sequence that match the predicatezip/2
- zip two sequences togethermax/1
- return the max value in the sequencemax/2
- return the max value in the sequence using a mappermin/1
- return the min value in the sequencemin/2
- return the min value in the sequence using a mapperuniq/1
- returns the elements without repetitionsuniq/2
- returns the elements without repetitions using a mapperreverse/1
- reverse the sequenceto_list/1
- convert the sequence to a list
You're awful, those names are long
I know right? Just use alias
.
alias Data.Set, as: S
alias Data.Set.BalancedTree, as: SBT
SBT.new |> S.add(23) |> S.add(42) # => #Set<[23,42]>
Elixir
Elixir is a dynamic, functional programming language designed for building scalable and maintainable applications. Built on the Erlang VM, it's known for its high concurrency and fault tolerance, making it ideal for real-time systems and web services.
GitHub - chrismccord/atlas: Object Relational Mapper for Elixir
GitHub - mbuhot/ecto_job: Transactional job queue with Ecto, PostgreSQL and GenStage
GitHub - zamith/tomlex: A TOML parser for elixir
GitHub - pablomartinezalvarez/glayu: A static site generator for mid-sized sites.
GitHub - jui/mustachex: Mustache for Elixir
GitHub - joaothallis/elixir-auto-test: Run test when file is saved
GitHub - campezzi/ignorant: Simplify comparison of Elixir data structures by ensuring fields are present but ignoring their values.
GitHub - Driftrock/mockingbird: A set of helpers to create http-aware modules that are easy to test.
GitHub - gutschilla/elixir-pdf-generator: Create PDFs with wkhtmltopdf or puppeteer/chromium from Elixir.
GitHub - antirez/disque: Disque is a distributed message broker
GitHub - jcomellas/ex_hl7: HL7 Parser for Elixir
GitHub - Cirru/parser.ex: Cirru Parser in Elixir
GitHub - thiamsantos/pwned: Check if your password has been pwned
GitHub - suvash/hulaaki: DEPRECATED : An Elixir library (driver) for clients communicating with MQTT brokers(via the MQTT 3.1.1 protocol).
GitHub - sinetris/factory_girl_elixir: Minimal implementation of Ruby's factory_girl in Elixir.
GitHub - navinpeiris/ex_unit_notifier: Desktop notifications for ExUnit
GitHub - DefactoSoftware/test_selector: Elixir library to help selecting the right elements in your tests.
GitHub - xerions/ecto_migrate: Automatic migrations for ecto
GitHub - meh/reagent: You need more reagents to conjure this server.
GitHub - stevegraham/hypermock: HTTP request stubbing and expectation Elixir library
GitHub - msharp/elixir-statistics: Statistical functions and distributions for Elixir
GitHub - Joe-noh/colorful: colorful is justice
GitHub - ijcd/taggart: HTML as code in Elixir
Build software better, together
GitHub - yeshan333/ex_integration_coveralls: A library for run-time system code line-level coverage analysis.
GitHub - PSPDFKit-labs/cobertura_cover: Output test coverage information in Cobertura-compatible format
GitHub - basho/enm: Erlang driver for nanomsg
GitHub - pawurb/ecto_psql_extras: Ecto PostgreSQL database performance insights. Locks, index usage, buffer cache hit ratios, vacuum stats and more.
GitHub - crate/craterl: Client Libraries for Erlang
GitHub - sheharyarn/ecto_rut: Ecto Model shortcuts to make your life easier! :tada:
More on Elixir
Programming Tips & Tricks
Code smarter, not harder—insider tips and tricks for developers.
Using Lua's Garbage Collector for Fine-Tuned Memory Management in Large Applications
#1
Leveraging Lua's Environment for Dynamic Code Execution and Security
#2
Mastering Lua's Table Manipulation: Advanced Techniques for Handling Large Data Sets
#3
Enhancing Code Readability and Debugging with Lua's Debug Library
#4
Leveraging Lua's Coroutines for Efficient Concurrency and Asynchronous Programming
#5
Leveraging Lua's Tail Call Optimization for Efficient Recursion and Avoiding Stack Overflow in Deep Recursive Functions
#6
Creating Custom Iterators in Lua for Traversing Complex Data Structures Like Graphs or Trees
#7
How to Maximize the Speed of Data Lookup in Lua Using Hash Tables and Optimized Table Management
#8
Advanced Techniques for Asynchronous Programming in Lua Using Coroutines for High-Performance Systems
#9
Mastering Efficient Memory Management in Lua with Weak Tables for Optimal Resource Utilization
#10
Error Solutions
Turn frustration into progress—fix errors faster than ever.
Visual Studio Crashes When Opening a File or Debugging a Project
#1
Visual Studio Cannot Connect to GitHub or Other Version Control System
#2
Visual Studio Freezes During Build or Debug Process
#3
Visual Studio Fails to Build Project with "Unable to Start Program" Error
#4
Visual Studio Shows "Cannot Open the Solution" Error Message When Opening a Project
#5
Visual Studio Crashes on Startup with "The application has encountered an error" Message
#6
Visual Studio Fails to Detect Changes in Files When Using Git Integration
#7
Visual Studio Crashes with "Unknown Exception" When Trying to Build Solution
#8
Visual Studio Hangs During Debugging with "Unable to Start Program" Error
#9
Visual Studio Fails to Load Solution with "The system cannot find the file specified" Error
#10
Shortcuts
The art of speed—shortcuts to supercharge your workflow.
Maximize Your Code Navigation with Cmd + Option + Left Arrow!
#1
Feel Like a Pro with Cmd + Control + D: Quickly View Definitions Like Never Before!
#2
Unlock Speed and Precision with Cmd + Shift + M: Maximize Your Productivity!
#3
Don’t Panic, Use Cmd + Option + I to Open the Developer Tools Now!
#4
Stop Wasting Time and Jump to Your File in an Instant with Cmd + Shift + O!
#5
Quickly Fix Your Code with ‘Cmd + Option + L’ for Instant Code Formatting!
#6
Transform Your Workflow with ‘Cmd + Shift + N’ to Open a New Window in No Time!
#7
Say Goodbye to Mouse: Master ‘Cmd + Shift + F’ to Search Your Entire Codebase!
#8
Struggling to Find Files? Hit ‘Cmd + P’ and Jump Right to Your File!
#9
Never Lose Your Progress Again: Use ‘Cmd + Z’ to Undo Mistakes Instantly!
#10
Made with ❤️
to provide resources in various ares.