Skip to content

Instantly share code, notes, and snippets.

@dmjio
dmjio / rbt.hs
Created October 9, 2022 19:18 — forked from abiodun0/rbt.hs
Red black tree, Haskell
View rbt.hs
module RedBlackTree
(
Tree,
empty,
member,
insert)
where
data Color = R | B deriving Show
View test.lhs
> natVal (Proxy :: Proxy (10 * 10))
<interactive>:280:25-31: error:
• Expected kind ‘* -> Natural -> k0’, but ‘10’ has kind ‘Natural’
• In the first argument of ‘Proxy’, namely ‘(10 (*) 10)’
In an expression type signature: Proxy (10 (*) 10)
In the first argument of ‘natVal’, namely
‘(Proxy :: Proxy (10 (*)
View Main.hs
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE DataKinds #-}
import GHC.TypeLits
-- λ> :kind! F "Foo_" "Foo_Bar"
-- F "Foo_" "Foo_Bar" :: Symbol
-- = "bar"
View .gitlab-ci.yml
################################################################################
# GitLab docs on types of pipelines:
# https://docs.gitlab.com/ee/ci/pipelines/pipeline_architectures.html
#
# This one is set to be a basic pipeline of the following steps:
#
# build binaries -> test binaries -> build and push image -> deploy image
#
# we do fan out during deploy and push to all environments at once since our
# deployes are driven by infra changes
View haskell-survey.md

Haskell Survey

Proficiency scale

  1. Not aware of the feature/concept/package in question, what it is or when to use it. Reading the description of this feature/concept/package is the first time I've heard of it.
  2. Have heard of said feature/concept/package, vaguely familiar with usage, not familiar with implementation.
  3. Moderate usage, familiar with best practices, have used in personal projects or on the job.
  4. Used feature/concept/package heavily, know when to use, advanced understanding.
  5. Commanding understanding of the feature/concept/package, comprehensive knowledge of trade-offs to make with said feature/concept/package. She knows when not to use it, expert level understanding and familiarity with implementation, can create pedagoical implementation where/if applicable.
View Replace.hs
module Main where
import qualified Data.ByteString.Lazy as BL
import qualified Data.ByteString.Lazy.Char8 as BL8
import System.Environment
import Debug.Trace
main :: IO ()
main = do
fileName:currentPath:newPath:[] <- getArgs
View Lexer.x
{
module Lexer98 ( scanTokens ) where
import Data.Text (Text)
import qualified Data.Text as Text
}
%wrapper "basic"
@dmjio
dmjio / SplitOn.hs
Last active December 4, 2020 07:06
View SplitOn.hs
import qualified Data.ByteString as B
import Data.ByteString (ByteString)
splitOn' :: ByteString -> ByteString -> [ByteString]
splitOn' del bs | B.null bs = []
splitOn' del bs =
case B.breakSubstring del bs of
(ls, rest) ->
if B.null rest
View nix-fix-catalina.sh
# run these two lines first
echo 'nix' | sudo tee -a /etc/synthetic.conf # or edit this file and just add nix
/System/Library/Filesystems/apfs.fs/Contents/Resources/apfs.util -B
[ 0 -ne "$?" ] && echo "Restarting APFS failed, please reboot your computer"
# reboot if it tells you to reboot
# then run this
sudo diskutil apfs addVolume disk1 APFSX Nix -mountpoint /nix # make sure disk1 is correct
sudo diskutil enableOwnership /nix
sudo chown -R $(whoami) /nix
sudo chflags hidden /nix # if you don't want to see Nix volume in finder
View DList.hs
newtype DL a = DL { unDL :: [a] -> [a] }
instance Show a => Show (DL a) where
show = show . toList
instance Semigroup (DL a) where