« This library implements several of the more commonly useful immutable data structures for Rust.
What are immutable data structures?
Immutable data structures are data structures which can be copied and modified efficiently without altering the original. The most uncomplicated example of this is the venerable cons list. This crate offers a selection of more modern and flexible data structures with similar properties, tuned for the needs of Rust developers.
Briefly, the following data structures are provided:
Vectors based on RRB trees;
Hash maps/sets based on hash array mapped tries;
* Ordered maps/sets based on B-trees.
Why Would I Want This?
While immutable data structures can be a game changer for other programming languages, the most obvious benefit - avoiding the accidental mutation of data - is already handled so well by Rust’s type system that it’s just not something a Rust programmer needs to worry about even when using data structures that would send a conscientious Clojure programmer into a panic.
Immutable data structures offer other benefits, though, some of which are useful even in a language like Rust. The most prominent is structural sharing, which means that if two data structures are mostly copies of each other, most of the memory they take up will be shared between them. […] »
#clojure Immutable and Persistent #data Structures
What Clojure is?Clojure is modern dialect of old school programming language named as LISP. Clojure strongly believes in Code as Data and Data as Code philosophy just like LISP. Clojure is a dynamic, general purpose programming language that runs in the Java Virtual Machine. Clojure emphasizesGet Clojure set upClojure needs JVM as its runs on top of JVM. Make sure you have min Java 1.7 installed on your systemmkdir -p ~/bin && cd ~/bin curl -O ▻https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein chmod a+x leinexport PATH="$PATH":~/binorcurl -O ▻https://download.clojure.org/install/linux-install-22.214.171.1243.shchmod +x linux-install-126.96.36.1993.shsudo ./linux-install-188.8.131.523.shData Structures4 fundamental Data Structure of Clojure.List ()Vector Sets (...)
I dare you to find me a more hilarious calculus textbook
▻https://medium.com/media/eded683cfbc85fe39bffef85ff9d44ef/hrefUnicornLaunching Launches Unicorns Worth Launching▻https://medium.com/media/eded683cfbc85fe39bffef85ff9d44ef/hrefJust Dao It — S01E01 — Flying Butterfly GodsThe Last of the Human FreedomsUnicornLaunching - Hacker NoonLearn Functional Programming without all that Arcane Math Jargon Nonsense SpellCasting PhD Jive…The Man Who Called Bullshit on AIThe Tragedy of Artificial IntelligenceJust Dao It — S01E01 — Flying Butterfly GodsTHE GLOBAL BANKING DISRUPTION EXPLAINEDBlockchains that SCALE into the BILLIONSWhy Do Humans Execute Actions?Before You Change The WorldHow To Win A Nobel PrizeMichael Jagdeo | LinkedInI dare you to find me a more hilarious calculus textbook was originally published in Hacker Noon on Medium, where people are (...)
The Last of the Human Freedoms
One day, naked and alone in a small room, he began to become aware of what he later called “the last of the human freedoms” … — Stephen Covey describing Dr. Frankl’s Eureka! MomentWith his parents, his brother, and his wife already dead — victims of the lethal Nazi Regime — Dr. Viktor Frankl didn’t know whether he was going to live or die.Two years earlier, in 1942, US President Roosevelt finally agreed to enter the World War II. The Allied Forces, lead by Great Britain’s Winston Churchill, breathed a huge sigh of relief.Roosevelt finally gave in as a last-ditch attempt to rescue Europe from devolving into a Nazi Totalitarian Mega-State. After the war, Albert Camus — The Philosopher God who once believed life was absurd — revised his thesis. Life was absurd until evil came knocking. Then it made sense to (...)
Learn Functional Programming without all that Arcane Math Jargon Nonsense SpellCasting PhD Jive Talk
Learn Functional Programming without all that Arcane Math Jargon Nonsense Spell-Casting PhD Monad Jive TalkThe Principal stood there, puzzled.“Why do you have your ear to the book?” she asked the young boy.“Because Teacher told me that every letter makes a sound,” he replied.Take your ear off the page and listen to Scott Wlaschin.— Breathe —I know. Transitioning from OO to FP is difficult. I know it’s difficult. We can do this. We’ve done difficult things before.And if you’ve never programmed before?— Phew —You won’t have to be retrained.In fact, given that beginner developers don’t have to displace a long history of ingrained inert ideas, they’re actually becoming the world’s best developers seemingly overnight. See Thiel Foundation, Vitalik, et. al. Just wait till Zoologists get a hold of this. Then (...)
Up and running with #clojurescript in 2018
The ClojureScript (CLJS) story has been moving so quickly for a few years now that occasionally it’s worth putting together a quick post on how to get started with a productive dev environment as simply as possible.Here’s my version for late 2018 (November).tl;dr the best way to get rolling is nowFigwheel (the newest version, Figwheel Main)The CLJ command line build toolsReagent to give you #react bindingsFirst you need a new and up-to-date #clojure.$ brew install clojure(or brew upgrade clojure if you already have a 1.9+ version and want to get the latest)Create the basic project structure:mkdir -p my-project/src/my-projectcd my-projectmkdir -p resources/publicCreate a deps.edn in the project root — this is effectively your build file and for a simple project replaces Leiningen or Boot.:deps (...)
Keeping your connections alive — A #clojure - #redis story
Created with ▻https://canva.comPuns definitely intended, keeping some connections alive is very essential for a healthy life in reality and production.Redis pubsub is pretty awesome, along with the awesome Carmine — all-clojure redis client(Clojure because we at Swym like our functions lispy :)). Redis standard Documentation reads that the pubsub connections are never-dying, meaning they can survive long idle times.Source — ▻https://redis.io/topics/clientsSounds like the perfect story. And like every perfect story, it is not perfect :/ , a paradox. Redis client connections have been the topic of numerous discussions, across tech stacks (Issue links at the bottom of the post).How does one ensure long living connections or undying connections for their pubsub clients?How do the connections get (...)
Building a #jira integration with #clojure & #atlassian Connect
Atlassian JIRA is the market leading issue-tracking and agile project management tool, and is in heavy use at companies around the globe.For #ctx, my team search app I wanted to build a slick integration to JIRA to help my customers to search their JIRA issues alongside their Slack messages, Trello cards, files, GitHub issues and emails.When it came to actually building the integration, I was pleasantly surprised by the APIs available, and especially the Atlassian Connect API and the simple integration patterns it promotes.While there’s lots of documentation — and even a short blog series about integrating Bitbucket with a Clojure application, I couldn’t find a single, simple tutorial that covered Connect, the webhook interface and the main JIRA API in one place.So I wrote one.The full source (...)
4 tips to help you understand #clojure
Clojure is a dynamic, general-purpose programming language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming.Clojure is functional programming, all is function you can see the basic pattren :(fn param-1..param-n)(fn (fn-1 (fn-2 param-2–1) param-1–1))Stop pulling your hair out while understanding existing Clojure project, here four tips that I can share with you while right now I also still suffering understanding Clojure codeReading function by function starts from the last child function to the first parentso value from get-user-profile will be collected by for and store to :data , than protobuf will build user-batch, then publish-topic from protobuf valuethis technique will be pain (...)
Cognitect Vase – Unlocking hidden value in your data ▻http://blog.cognitect.com/blog/2017/1/30/unlocking-hidden-value-in-your-data-1
« Vase is a library for writing declarative, data-driven microservices. A single HTTP service, complete with database integration and data validation, can be created within minutes.
We achieve this acceleration through Vase’s declarative nature- Vase does all of the mundane data-plumbing of a service, so you can focus on delivering value to your customers. The microservices we build with Vase easily evolve and grow to meet new business demands. Individual teams can each evolve their Vase services independently, ensuring that no team is blocked from delivering value. […] »
Un de mes « souhait » pour 2015 est de découvrir un peu plus de #programmation_fonctionnelle (un autre étant de faire moins de « technique » dans mon boulot... oui oui).
Mais, ça m’intéresse, car je me suis aperçu que ce sont les aspects « fonctionnels » de JS qui m’ont un peu redonné goût à la programmation.
Par contre, ce paradigme de programmation — qui est en train de devenir très « hype », j’ai l’impression — est réputé très difficile et exigeant (parfait pour le « dyslexique des maths » que je suis... ironie inside).
On m’a recommandé :
Bref, si vous avez des conseils sur le sujet... je prends tout :)
Il me reste à me trouver une petite idée de projet motivant et sympathique (un truc visuel, poétique et/ou inutile) pour jouer.
Overtone is an open source audio environment designed to explore new musical ideas from synthesis and sampling to instrument building, live-coding and collaborative jamming. We combine the powerful SuperCollider audio engine, with Clojure, a state of-the-art lisp, to create an intoxicating interactive sonic experience.