Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
kapp
kapp is a simple deployment tool focused on the concept of "Kubernetes application" — a set of resources with the same label
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
taskell
Discontinued Command-line Kanban board/task manager with support for Trello boards and GitHub projects
-
implicit
A math-inspired CAD program in haskell. CSG, bevels, and shells; 2D & 3D geometry; 2D gcode generation...
-
Hasura
Blazing fast, instant realtime GraphQL APIs on your DB with fine grained access control, also trigger webhooks on database events.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
No I didn't understand every sub-function in this function. That isn't necessary to get an idea of what a function does. All of your questions can be answered incredible quickly though using https://hoogle.haskell.org/
> What does Optics.rewriteOf do?
Hoogling show this is an alias of https://hackage.haskell.org/package/lens-5.1.1/docs/Control-....
> What's the purpose of Lint.useToMap?
Hoogle again shows https://hackage.haskell.org/package/dhall-1.41.1/docs/Dhall-.... If your function is not indexed you can look at what is qualified as `Lint` and look it up that way.
> How about D.subExpressions ? How does that composition work with the loop function?
https://hackage.haskell.org/package/dhall-1.41.1/docs/Dhall-... All nicely documented... I'm not sure what you mean by composition with the loop function. First the loop function is executed and then afterwards over the result the expression in the first argument to fmap is applied. There is no weird interaction going on here. It's just run this over the result of the loop function if it didn't produce an error.
> Even better. How would you go about finding the source code containing the definition of the function `D.subExpressions` ?
Use hoogle or just look at the imports at the top of the file. Just like any other programming language. Or even better, use the language server to find it for you.
To me statically typed config languages sound like a neat idea to pursue, although I'm not sure how promising this this particular one is.
https://dhall-lang.org/
Ok, lets be specific. Lets write a comment to explain this function:
https://github.com/dhall-lang/dhall-haskell/blob/master/dhal...
since you mentioned Kubernetes...
> It would be nice if there was a separate state reconciliation system that one could adapt to use with Cue or Dhall or any other frontend
this exactly was thinking behind https://carvel.dev/kapp for Kubernetes (i'm one of the maintainers). it makes a point to not know how you decided to generate your Kubernetes config -- just takes it as input.
> In particular the ability to import other files as semantic hashes seems like a great feature.
it's an interesting feature but seems like it should be unnecessary given that config can be easily checked into git (your own and its dependencies).
The documentation of lenses is geared towards people know what lenses are. Of course this single fragment of documentation doesn't make sense if you don't know what lenses are. If you want to understand what lenses are the package links to a helpful wiki and tutorial: https://github.com/ekmett/lens/wiki/Overview
All within reach within seconds of discovering the function.
I don't really think many people are calling it a panacea. From my experience in the community most people I know who write Haskell write it for productivity reasons (including me, I'd rather be using Idris 2 with algebraic effects though.)
I'm not saying it's somehow magically more productive than other languages, because it's useless to throw around stuff you can't really prove like that, I and other just find it to be the case.
I've never found "everyone writing their own DSL" to be problematic, because it's all exposed through the Monad/Applicative/Functor classes, so the way you use them are all very similar. Honestly, the usage of such eDSLs is one of my favourite parts of writing Haskell.
I use Haskell at my work for our main application, and we've been looking at adopting a style guide like https://kowainik.github.io/posts/2019-02-06-style-guide
And about interesting applications in Haskell, I'd consider https://hasura.io/ pretty interesting!
A few more:
https://github.com/simonmichael/hledger - Robust, fast, intuitive plain text accounting tool with CLI, TUI and web interfaces
https://github.com/simonmichael/shelltestrunner - Easy, repeatable testing of CLI programs/commands
https://github.com/simonmichael/quickbench - Easily time one or more commands with one or more executables and show tabular results
https://github.com/haskell-game/fungen - A lightweight, cross-platform, OpenGL-based 2D game engine in Haskell
https://haskell-game.dev - a small selection of many games written in Haskell
A few more:
https://github.com/simonmichael/hledger - Robust, fast, intuitive plain text accounting tool with CLI, TUI and web interfaces
https://github.com/simonmichael/shelltestrunner - Easy, repeatable testing of CLI programs/commands
https://github.com/simonmichael/quickbench - Easily time one or more commands with one or more executables and show tabular results
https://github.com/haskell-game/fungen - A lightweight, cross-platform, OpenGL-based 2D game engine in Haskell
https://haskell-game.dev - a small selection of many games written in Haskell
A few more:
https://github.com/simonmichael/hledger - Robust, fast, intuitive plain text accounting tool with CLI, TUI and web interfaces
https://github.com/simonmichael/shelltestrunner - Easy, repeatable testing of CLI programs/commands
https://github.com/simonmichael/quickbench - Easily time one or more commands with one or more executables and show tabular results
https://github.com/haskell-game/fungen - A lightweight, cross-platform, OpenGL-based 2D game engine in Haskell
https://haskell-game.dev - a small selection of many games written in Haskell
A few more:
https://github.com/simonmichael/hledger - Robust, fast, intuitive plain text accounting tool with CLI, TUI and web interfaces
https://github.com/simonmichael/shelltestrunner - Easy, repeatable testing of CLI programs/commands
https://github.com/simonmichael/quickbench - Easily time one or more commands with one or more executables and show tabular results
https://github.com/haskell-game/fungen - A lightweight, cross-platform, OpenGL-based 2D game engine in Haskell
https://haskell-game.dev - a small selection of many games written in Haskell