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
  • SonarQube - Static code analysis for 29 languages.
  • Scout APM - Less time debugging, more time building
  • 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/

  • SonarQube

    Static code analysis for 29 languages.. Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.

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

  • carvel-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 new home of the CUE language! Validate and define text-based and dynamic configuration (by cue-lang)

  • ShellCheck

    ShellCheck, a static analysis tool for shell scripts

  • Scout APM

    Less time debugging, more time building. Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.

  • postgrest

    REST API for any Postgres database

  • hadolint

    Dockerfile linter, validate inline bash, written in Haskell

  • patat

    Terminal-based presentations using Pandoc

  • taskell

    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 (by mattgreen)

  • 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

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