Functional Programming in 40 Minutes.
Speaker: Russ Olsen - Author of Getting Clojure and Eloquent Ruby, VP at Cognitect
Functional programming has finally escaped from academia. These days developers are building real systems in functional programming languages like Clojure, Scala, Elixir and F#. Functional techniques are also seeping into more traditional languages like Java and Ruby. Unfortunately somewhere along the way functional programming has also developed a reputation for being deep and mysterious: Good programs achieve the Zen-like state of being functional which somehow involves immutability, higher order functions...
#video, #clojure #functional #programming #fp
Speaker: Russ Olsen - Author of Getting Clojure and Eloquent Ruby, VP at Cognitect
Functional programming has finally escaped from academia. These days developers are building real systems in functional programming languages like Clojure, Scala, Elixir and F#. Functional techniques are also seeping into more traditional languages like Java and Ruby. Unfortunately somewhere along the way functional programming has also developed a reputation for being deep and mysterious: Good programs achieve the Zen-like state of being functional which somehow involves immutability, higher order functions...
#video, #clojure #functional #programming #fp
YouTube
Functional Programming in 40 Minutes • Russ Olsen • GOTO 2018
This presentation was recorded at GOTO Berlin 2018. #gotocon #gotober
http://gotober.com
Russ Olsen - Author of Getting Clojure and Eloquent Ruby, VP at Cognitect @russolsen3122
ABSTRACT
Functional programming has finally escaped from academia. These days…
http://gotober.com
Russ Olsen - Author of Getting Clojure and Eloquent Ruby, VP at Cognitect @russolsen3122
ABSTRACT
Functional programming has finally escaped from academia. These days…
❤1👍1🔥1
You have to know about persistent data structures.
In this article author talking about persistent data structures and how they work.
#article #clojure #persistent #data #structures
In this article author talking about persistent data structures and how they work.
#article #clojure #persistent #data #structures
❤1👍1🔥1
Tongue is a do-it-yourself i18n library for Clojure and ClojureScript.
Tongue is very simple yet capable:
- Dictionaries are just Clojure maps.
- Translations are either strings, template strings or arbitrary functions.
- No additional build steps, no runtime resource loading.
- It comes with no built-in knowledge of world locales. It has all the tooling for you to define locales yourself though.
- Pure Clojure implementation, no dependencies.
- Can be used from both Clojure and ClojureScript.
In contrast with other i18n solutions relying on complex and limiting string-based syntax for defining pluralization, wording, special cases etc, Tongue lets you use arbitrary functions. It gives you convenience, code reuse and endless possibilities.
#clojure #clojurescript #i18n #jvm
Tongue is very simple yet capable:
- Dictionaries are just Clojure maps.
- Translations are either strings, template strings or arbitrary functions.
- No additional build steps, no runtime resource loading.
- It comes with no built-in knowledge of world locales. It has all the tooling for you to define locales yourself though.
- Pure Clojure implementation, no dependencies.
- Can be used from both Clojure and ClojureScript.
In contrast with other i18n solutions relying on complex and limiting string-based syntax for defining pluralization, wording, special cases etc, Tongue lets you use arbitrary functions. It gives you convenience, code reuse and endless possibilities.
#clojure #clojurescript #i18n #jvm
👍1🔥1👏1
Pathom is a logic engine for attribute processing for Clojure and Clojurescript.
#clojure #graphql #eql #clojurescript #attribute #processing
#clojure #graphql #eql #clojurescript #attribute #processing
👍1🔥1👏1
bidi is a bi-directional URI dispatch. Like Compojure, but when you want to go both ways. If you are serving REST resources, you should be providing links to other resources, and without full support for forming URIs from handlers your code will become coupled with your routing. In short, hard-coded URIs will eventually break.
#clojure #clojurescript #dispatcher #router #url #uri #routing
#clojure #clojurescript #dispatcher #router #url #uri #routing
❤1🔥1👏1
Nippy is a high-performance serialization library for Clojure.
— Small, uncomplicated all-Clojure library
— Terrific performance (the fastest for Clojure that I'm aware of)
— Comprehesive support for all standard data types
— Easily extendable to custom data types (v2.1+)
— Java's Serializable fallback when available (v2.5+)
— Reader-fallback for all other types (including Clojure 1.4+ tagged literals)
— Full test coverage for every supported type
— Fully pluggable compression, including built-in high-performance LZ4 compressor
— Fully pluggable encryption, including built-in high-strength AES128 enabled with a single
— Utils for easy integration into 3rd-party tools/libraries (v2+)
#clojure #jvm #serialization #compression #encryption #edn
— Small, uncomplicated all-Clojure library
— Terrific performance (the fastest for Clojure that I'm aware of)
— Comprehesive support for all standard data types
— Easily extendable to custom data types (v2.1+)
— Java's Serializable fallback when available (v2.5+)
— Reader-fallback for all other types (including Clojure 1.4+ tagged literals)
— Full test coverage for every supported type
— Fully pluggable compression, including built-in high-performance LZ4 compressor
— Fully pluggable encryption, including built-in high-strength AES128 enabled with a single
:password [:salted "my-password"] option (v2+)— Utils for easy integration into 3rd-party tools/libraries (v2+)
#clojure #jvm #serialization #compression #encryption #edn
❤1👍1🔥1
Clerk is a local-first Notebooks for Clojure.
Clerk enables a rich, local-first notebook experience using standard Clojure namespaces and Markdown files with Clojure code fences. You bring your own editor and workflow, your own interactive computing habits, and Clerk enhances all of that with literate programming and rich visualizations.
#clojure #notebooks
Clerk enables a rich, local-first notebook experience using standard Clojure namespaces and Markdown files with Clojure code fences. You bring your own editor and workflow, your own interactive computing habits, and Clerk enhances all of that with literate programming and rich visualizations.
#clojure #notebooks
❤1🔥1👏1
Nbb’s main goal is to make it easy to get started with ad hoc CLJS scripting on Node.js.
Additional goals and features are:
• Fast startup without relying on a custom version of Node.js.
• Small artifact (current size is around 1.2MB).
• First class macros.
• Support building small TUI apps using Reagent.
• Complement babashka with libraries from the Node.js ecosystem.
#nodejs #clojure #clojurescript
Additional goals and features are:
• Fast startup without relying on a custom version of Node.js.
• Small artifact (current size is around 1.2MB).
• First class macros.
• Support building small TUI apps using Reagent.
• Complement babashka with libraries from the Node.js ecosystem.
#nodejs #clojure #clojurescript
🔥2❤1😁1
Jepsen is a Clojure library. A test is a Clojure program which uses the Jepsen library to set up a distributed system, run a bunch of operations against that system, and verify that the history of those operations makes sense. Jepsen has been used to verify everything from eventually-consistent commutative databases to linearizable coordination systems to distributed task schedulers. It can also generate graphs of performance and availability, helping you characterize how a system responds to different faults.
#clojure #distributed #systems
#clojure #distributed #systems
👍2❤1🔥1
Generating secrets in Clojure.
Generating secrets is a very important part of any data-sensitive application. In this article, I’m going to tell you about a low-level library that helps to generate secrets in Clojure.
If you’re familiar with Python, you might have heard of secrets module from Python’s standard library. Well, the secrets.clj is just like Python’s secrets, but for Clojure.
Read it: https://isaak.dev/2022/10/generating-secrets-in-clojure
#clojure #jvm #secrets #password #tokens #rng #csprng
Generating secrets is a very important part of any data-sensitive application. In this article, I’m going to tell you about a low-level library that helps to generate secrets in Clojure.
If you’re familiar with Python, you might have heard of secrets module from Python’s standard library. Well, the secrets.clj is just like Python’s secrets, but for Clojure.
Read it: https://isaak.dev/2022/10/generating-secrets-in-clojure
#clojure #jvm #secrets #password #tokens #rng #csprng
👍3❤1🔥1👏1
Calva: A Clojure & ClojureScript IDE in Visual Studio Code.
Calva is an integrated, REPL powered, development environment for enjoyable and productive Clojure and ClojureScript programming in Visual Studio Code.
It includes:
- inline code evaluation
- structural editing
- code formatting
- code navigation
- a debugger
- linting
- syntax highlighting
- Clojure aware rainbow brackets
- a test runner
- refactoring support
- and much more.
#clojure #clojurescript #vscode #vsc #calva #ide #repl
Calva is an integrated, REPL powered, development environment for enjoyable and productive Clojure and ClojureScript programming in Visual Studio Code.
It includes:
- inline code evaluation
- structural editing
- code formatting
- code navigation
- a debugger
- linting
- syntax highlighting
- Clojure aware rainbow brackets
- a test runner
- refactoring support
- and much more.
#clojure #clojurescript #vscode #vsc #calva #ide #repl
👏3❤1👍1🔥1
The Definitive Guide to Clojure on the JVM.
The Java ecosystem is big and it can be daunting. But fear not! You don't need to learn everything, and once you learn enough, it will be worth it. You will realize that it is not so intimidating.
This guide will be your . . . guide.
#clojure #jvm #guide
Clojure runs on the JVM and that is a huge asset to the Clojure language. In addition, Clojure was designed to be hosted. That means its semantics often defer to the underlying semantics of the host platform. All of that boils down to us needing to understand the Java ecosystem in order to get the most out of Clojure.The Java ecosystem is big and it can be daunting. But fear not! You don't need to learn everything, and once you learn enough, it will be worth it. You will realize that it is not so intimidating.
This guide will be your . . . guide.
#clojure #jvm #guide
❤5🍾2👍1👏1🏆1
Understanding Clojure's Persistent Vectors: Part 1
Understanding Clojure's Persistent Vectors: Part 2
You may or may not heard about Clojure’s persistent vectors. It is a data structure invented by Rich Hickey (influenced by Phil Bagwell’s paper on Ideal Hash Trees) for Clojure, which gives practically O(1) runtime for appends, updates, lookups and subvec. As they are persistent, every modification creates a new vector instead of changing the old one.
So, how do they work? I’ll try to explain them through a series of blogposts, in which we look at manageable parts each time. It will be a detailed explanation, with all the different oddities around the implementation as well.
For today, we’ll have a look at the basics and will cover updates, appends, and popping. The PersistentVector implementation in Clojure uses this as its core but also implements several speed optimisations, such transients and tails. We will have a look at those in later blog posts.
#clojure #persistent #vector #imutable #article
Understanding Clojure's Persistent Vectors: Part 2
You may or may not heard about Clojure’s persistent vectors. It is a data structure invented by Rich Hickey (influenced by Phil Bagwell’s paper on Ideal Hash Trees) for Clojure, which gives practically O(1) runtime for appends, updates, lookups and subvec. As they are persistent, every modification creates a new vector instead of changing the old one.
So, how do they work? I’ll try to explain them through a series of blogposts, in which we look at manageable parts each time. It will be a detailed explanation, with all the different oddities around the implementation as well.
For today, we’ll have a look at the basics and will cover updates, appends, and popping. The PersistentVector implementation in Clojure uses this as its core but also implements several speed optimisations, such transients and tails. We will have a look at those in later blog posts.
#clojure #persistent #vector #imutable #article
🔥8❤2🏆2
Practicalli Clojure.
Clojure - an elegant language for a more civilised development experience
A simple syntax means Clojure is quick to learn and a wide range of open source libraries provides a rapid way to build any kind of software. Designed as a hosted language, Clojure runs on many platforms including the Java Virtual Machine, GraalVM, Microsoft.Net, JavaScript engines. Simple host language interoperability provides access to libraries from a wide range of programming languages, further extending the reach of Clojure.
#clojure #jvm #fp #learning #tutorial #book
Clojure - an elegant language for a more civilised development experience
A simple syntax means Clojure is quick to learn and a wide range of open source libraries provides a rapid way to build any kind of software. Designed as a hosted language, Clojure runs on many platforms including the Java Virtual Machine, GraalVM, Microsoft.Net, JavaScript engines. Simple host language interoperability provides access to libraries from a wide range of programming languages, further extending the reach of Clojure.
#clojure #jvm #fp #learning #tutorial #book
❤5🔥1
Hiccup is a library for representing HTML in Clojure. It uses vectors to represent elements, and maps to represent an element's attributes.
Code example:
#clojure #jvm #htmll #rendering
Code example:
[:div {:id "email" :class "selected starred"} "..."]#clojure #jvm #htmll #rendering
🔥4❤2👍1