Dhall: A Gateway Drug to Haskell

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • hoogle

    Haskell API search engine

  • 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.

  • dhall-lang

    Maintainable configuration files

  • 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/

  • 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.

    WorkOS logo
  • dhall

    Maintainable configuration files

  • Ok, lets be specific. Lets write a comment to explain this function:

    https://github.com/dhall-lang/dhall-haskell/blob/master/dhal...

  • kapp

    kapp is a simple deployment tool focused on the concept of "Kubernetes application" — a set of resources with the same label

  • 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).

  • lens

    Lenses, Folds, and Traversals - Join us on web.libera.chat #haskell-lens (by ekmett)

  • 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.

  • cue

    The home of the CUE language! Validate and define text-based and dynamic configuration

  • ShellCheck

    ShellCheck, a static analysis tool for shell scripts

  • 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.

    InfluxDB logo
  • postgrest

    REST API for any Postgres database

  • hadolint

    Dockerfile linter, validate inline bash, written in Haskell

  • patat

    Terminal-based presentations using Pandoc

  • taskell

    Discontinued Command-line Kanban board/task manager with support for Trello boards and GitHub projects

  • aur

    A secure, multilingual package manager for Arch Linux and the AUR.

  • grenade

    Deep Learning in Haskell

  • implicit

    A math-inspired CAD program in haskell. CSG, bevels, and shells; 2D & 3D geometry; 2D gcode generation...

  • Gifcurry

    😎 The open-source, Haskell-built video editor for GIF makers.

  • pboy

    a small .pdf management tool with a command-line UI

  • rasa-example-config

    Extremely modular text editor built in Haskell (by ChrisPenner)

  • tetris

    A terminal interface for Tetris

  • hython

    Haskell-powered Python 3 interpreter

  • movie-monad

    :tv: A free and simple to use video player made with Haskell.

  • hnes

    :video_game: NES Emulator written in Haskell (by dbousamra)

  • Hasura

    Blazing fast, instant realtime GraphQL APIs on your DB with fine grained access control, also trigger webhooks on database events.

  • 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!

  • hledger

    Robust, fast, intuitive plain text accounting tool with CLI, TUI and web interfaces.

  • 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

  • shelltestrunner

    Easy, repeatable testing of CLI programs/commands

  • 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

  • quickbench

    Easily time one or more commands with one or more executables and show tabular results

  • 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

  • FunGEn

    A lightweight, cross-platform, OpenGL-based 2D game engine in Haskell (by haskell-game)

  • 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

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts