atomic
zod-plugins
atomic | zod-plugins | |
---|---|---|
12 | 2 | |
32 | 547 | |
- | 3.3% | |
6.8 | 8.1 | |
6 days ago | about 1 month ago | |
JavaScript | TypeScript | |
MIT License | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
atomic
-
Should all Clojure functions be polymorphic by default?
I wanted ClojureScript, without transpilation, in the browser so badly I implemented much of it in plain JS. But JS still lacks first-class protocols (although there is a T39 proposal for them) so I have to implement protocols first. And I can tell you from having implemented much of Clojure myself in plain JS that it's protocols all the way down. 80% of my library are types and their protocols.
-
Do you do full-on FP in JavaScript? Want it?
I've watched a lot of talks, but it was Rich Hickey's which most captivated me and, ultimately, inspired big change in how I coded. After discovering Clojure I was so desiring FP (i.e. ClojureScript) in the browser without a build step and hoard of dependencies that I wrote my own library.
-
FP and JavaScript/TypeScript
I fell in love with Clojure and ported most of the tools to plain ol' JavaScript. I stole reactives and FRP from Elm. I write a functional core then wrap it with an imperative shell. It's been my mainstay for 10 years now.
-
What do functional programmers like functional programming?
What I did was looked past the languages at the ideas and saw they could be applied everywhere, including JavaScript. Take a look at my example programs (via prior link) and you can see Clojure applied to the JavaScript/browser realm.
-
Writing Javascript without a build system
I have found that the amount of code needed to support any page/app need not be massive. I have implemented modern board games with 250-300KB of js and the core lib I use on all my projects maxes out around 250KB, unminified. The lib itself is built on the premise of build avoidance.
-
Do you guys work with other languages?
I do JavaScript most of the time, but I was so inspired that I ported the Clojure mindset into the web development world so I could use it even in the absence of Clojure. I know there's ClojureScript, but I wanted the goodness without transpilation.
-
On Not Drinking the FP Kool-Aid
So I don't even do Clojure per se. I do Clojure in JavaScript without ClojureScript.
-
side effects in fp: to accept or not to accept
I use functional core, imperative shell. It would have you write a core which is a pure simulation. Write everything in the core using immutable data and pure functions. I elaborate on that here, along with examples.
- GitHub - mlanza/atomic: Write Clojuresque functional core, imperative shell programs in JavaScript.
- Clojuresque functional core, imperative shell programs in JavaScript
zod-plugins
-
FP and JavaScript/TypeScript
I use zod to ensure that the typing can be trusted and derive my types from it. Finally, I generate test data using zod-mock. It works great.
-
How do you handle runtime validation / API documentation?
You could try zod for runtime validation and types with zod-openapi to derive open API schema from the validator. An example of the alternative approach is something like generate-runtypes or runtyping to generate runtypes validators from a JSON schema (and separately generate the Open API definitions from the JSON schema).
What are some alternatives?
vscode-haskell - VS Code extension for Haskell, powered by haskell-language-server
json-schema-to-ts - Infer TS types from JSON schemas 📝
episode-code-samples - 💾 Point-Free episode code.
generate-runtypes - A code generator for Runtypes types. Perfect to create tooling to generate code for Runtypes!
electric - a reactive Clojure dialect for web development that uses a compiler to infer the frontend/backend boundary
runtyping - Generate runtype validation from static types & JSON schema.
squint - Light-weight ClojureScript dialect
typebox - Json Schema Type Builder with Static Type Resolution for TypeScript
proposal-command-syntax - Proposal: Command Syntax for JavaScript
euphoria - The Euphoria programming language (https://openeuphoria.org/)
learn-you-a-haskell - “Learn You a Haskell for Great Good!” by Miran Lipovača
elm-architecture-tutorial - How to create modular Elm code that scales nicely with your app