Skip to content

Instantly share code, notes, and snippets.

View gist:6baa39093104028b2876019ca33c3731
import System.Posix.Signals
main = do
mainId <- RIO.myThreadId
_ <-
installHandler
softwareTermination
(CatchOnce
(do S8.putStrLn "Received SIGTERM. Killing main thread."
killThread mainId))
@chrisdone
chrisdone / cell-load.hs
Last active May 4, 2022
Document cell-load pipeline
View cell-load.hs
-- | Load a renamed cell.
resolveRenamedCell ::
Map Hash (Either LoadError LoadedExpression)
-> FillerEnv LoadError
-> IsRenamed (Expression Renamed)
-> RIO DocumentReader (Either LoadError (IsResolved (Expression Resolved)))
resolveRenamedCell globalTypes globalHashes isRenamed = do
hasConstraints <-
pure $
first LoadGenerateError $
@chrisdone
chrisdone / Basic type solver tests.hs
Created May 2, 2022
Basic unification tests for type checkers
View Basic type solver tests.hs
fineGrained :: Spec
fineGrained = do
describe
"Successful"
(do it "a ~ a" (shouldReturn (unifyConstraints' [a .~ a]) (pure []))
it
"Integer ~ Integer"
(shouldReturn (unifyConstraints' [_Integer .~ _Integer]) (pure []))
it
"a ~ b"
View hindent
22-03-21 13:32:52.939 $ cat /opt/hindent-ormolu
#!/bin/bash
/opt/ormolu-0.1.4.1 \
"--ghc-opt" "-XBangPatterns" \
"--ghc-opt" "-XNumericUnderscores" \
"--ghc-opt" "-XOverloadedLabels" \
"--ghc-opt" "-XPatternSynonyms" \
"--ghc-opt" "-XTypeApplications" \
"--mode" "stdout"
View README.md

Installing a TLS SSL certificate in HAProxy from Namecheap - Sectigo Limited certificate

When buying an SSL certificate from Namecheap, you generate a CSR, which generates a private key, save that for later as private.key.

After you've paid for your certificate, you recieve a zip file that looks like this:

$ ls -alh
total 52K
View Int-taking-funcs.hs
Prelude/Data.List/Data.Vector/Data.Map:
(!!) :: [a] -> Int -> a
replicate :: Int -> a -> [a]
take :: Int -> [a] -> [a]
drop :: Int -> [a] -> [a]
splitAt :: Int -> [a] -> ([a], [a])
@chrisdone
chrisdone / 0README.md
Last active Jan 6, 2022
Various type inference designs/sketches
View 0README.md

Type Inference: Various Designs

I'm exploring the right data types for writing a type inference with higher kinds and poly types.

Putting more things in the type system can force you to think about more things, but it also can make it harder and more verbose to write and read algorithms.

View types.hs
{-# LANGUAGE TypeOperators, LambdaCase, StandaloneDeriving, GADTs #-}
data Type env t where
-- A constant type. Add kinds?
-- Maybe, (), Int, Either, (->), etc.
Constructor :: kind -> Type env kind
-- A free variable.
-- a
FreeVariable :: kind -> Type env kind
-- Type application.
@chrisdone
chrisdone / ackermann.dhall
Last active Apr 7, 2020 — forked from Gabriella439/ackermann.dhall
Ackermann function in Dhall
View ackermann.dhall
-- Credit to: https://news.ycombinator.com/item?id=15186988
let iterate
: (Natural Natural) Natural Natural
= \f n ->
fold (n + 1) f 1
let increment : Natural Natural = \n -> n + 1
let ackermann
@chrisdone
chrisdone / normalized applicative.hs
Last active Mar 20, 2020
normalized applicative.hs
View normalized applicative.hs
{-# LANGUAGE Strict #-}
{-# LANGUAGE Strict #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE RankNTypes, InstanceSigs, KindSignatures, GADTs, ConstraintKinds, ScopedTypeVariables #-}
-- http://neilsculthorpe.com/publications/constrained-monad-problem.pdf
import Data.Function
import Data.List.NonEmpty (NonEmpty(..))