TODO comments are in the source
This spec must be validated by implementing it in at least one library. I may do this in Haskell's optparse-applicative.
| /* | |
| minimod: A stripped down module system | |
| TODO Comparison: | |
| - [ ] Come up with a benchmark "logic" using plain old functions and let bindings | |
| - [ ] Write the benchmark for the module system | |
| - [ ] Write the benchmark for POP? | |
| - [ ] Qualitative comparison of extensibility in the context of composable | |
| Nixpkgs packaging logic | |
| TODO Fine-tuning: |
| {-# LANGUAGE GADTs #-} | |
| {-# LANGUAGE GeneralizedNewtypeDeriving #-} | |
| module Hasql.Extras.QueryPart where | |
| import Data.Functor.Compose | |
| import Data.String (IsString (..)) | |
| import qualified Hasql.Decoders as HD | |
| import qualified Hasql.Encoders as HE | |
| import qualified Hasql.Statement as HQ |
| {-# LANGUAGE DerivingStrategies #-} | |
| {-# LANGUAGE DerivingVia #-} | |
| {-# LANGUAGE ExistentialQuantification #-} | |
| {-# LANGUAGE GeneralizedNewtypeDeriving #-} | |
| {-# LANGUAGE StandaloneDeriving #-} | |
| -- | This is a strict, somewhat efficient implementation of something between 'Data.List.partition' and Beautiful Folding. | |
| -- | |
| -- It allows a (pure or ST) stream of values to be processed into multiple fields, using a nice 'Applicative' interface. |
The main problem with the 👎 reaction is that it does not carry any constructive feedback or explanation.
In some cases, it is added to a pull request early on, before the author has had a chance to improve their proposal. The person placing the reaction often will not receive a notification of the improvements and even if they did, they may forget to remove the 👎.
These effects are not obvious to the author or the person reacting; let alone to the reader. This causes friction for everyone involved.
| {-# LANGUAGE DerivingStrategies #-} | |
| {-# LANGUAGE ExistentialQuantification #-} | |
| {-# LANGUAGE GeneralizedNewtypeDeriving #-} | |
| {-# LANGUAGE PatternSynonyms #-} | |
| {-# LANGUAGE RankNTypes #-} | |
| {-# LANGUAGE ViewPatterns #-} | |
| {-# LANGUAGE ExplicitNamespaces #-} | |
| {-# LANGUAGE TypeOperators #-} | |
| -- | An alternate implementation of the Ghosts of Departed Proofs <https://kataskeue.com/gdp.pdf idea>, |
| #!./interpret.nix | |
| { io, args, ... }: | |
| let | |
| main = | |
| io.printLine "I'm hi, who are you?" ask; | |
| ask = | |
| io.readLine (name: |
| # Import this module from an arion service to enable the nix daemon. | |
| { pkgs, lib, ... }: | |
| { | |
| # ENABLING THIS WILL MOST LIKELY DAMAGE THE HOST. | |
| # You're probably looking for service.useHostNixDaemon instead of this module. | |
| service.useHostStore = lib.mkForce false; # DID YOU READ THE COMMENT? | |
| nixos.configuration = { pkgs, lib, ...}: { |
| git checkout feature-branch | |
| git commit -m 'Buffer' --allow-empty | |
| git rebase -i <origin/master or similar> | |
| # uncomment buffer commit, reorder into | |
| # pick Buffer | |
| # <pick feature-branch commits> | |
| git filter-branch --tree-filter './scripts/format-all' <origin/master or similar>..HEAD | |
| # inspect the new Buffer commit and act accordingly |
| module Control.Concurrent.Extras.Gate where | |
| import Protolude | |
| import Data.IORef | |
| import Control.Concurrent.STM | |
| import Data.UUID | |
| import qualified Data.UUID.V4 as UUID | |
| import qualified Data.Map as M | |
| -- | State of a multi-task process to help with graceful termination |