Skip to content

Instantly share code, notes, and snippets.

@soupi
soupi / Pixels.hs
Created September 1, 2018 11:05
Generate a .ppm file with a pixel image
{-# LANGUAGE OverloadedStrings #-}
module Main where
import qualified Data.ByteString.Char8 as BS
import qualified Data.Vector as V
import Data.Word
import Data.Monoid
main :: IO ()
@soupi
soupi / typing.md
Created September 21, 2018 22:18 — forked from chrisdone/typing.md
Typing Haskell in Haskell

Typing Haskell in Haskell

MARK P. JONES

Pacific Software Research Center

Department of Computer Science and Engineering

Oregon Graduate Institute of Science and Technology

@soupi
soupi / CS.org
Last active August 22, 2022 20:18
@soupi
soupi / Plate.hs
Last active January 30, 2020 22:35
Uniplate.Data vs hand written Lens.Plated vs generic-lens
-- stack exec --package uniplate --package criterion -- ghc Plate.hs -O
-- ./Plate --output=results.html
{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, FlexibleContexts, UndecidableInstances #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE MonoLocalBinds #-}
@soupi
soupi / Main.hs
Created June 14, 2019 07:36
stack exec does not find executable after stack build --profile
module Main where
main :: IO ()
main = print 5
@soupi
soupi / generic-transform.hs
Last active January 30, 2020 13:05
implementation of transform using generics
data Expr
= Lit Int
| Add Expr Expr
| Mul Expr Expr
| Div Expr Expr
| Sub Expr Expr
| Neg Expr
deriving (Show, Eq, Generic)
@soupi
soupi / Plate-dump.hs
Last active January 31, 2020 08:36
Plate dump
[1 of 2] Compiling Transform ( Transform.hs, Transform.o ) [Optimisation flags changed]
==================== Tidy Core ====================
Result size of Tidy Core
= {terms: 353, types: 864, coercions: 374, joins: 0/0}
-- RHS size: {terms: 4, types: 9, coercions: 3, joins: 0/0}
gtransform
gtransform = \ @ a_a1p2 @ struct_a1p3 v_B1 -> v_B1 `cast` <Co:3>
@soupi
soupi / Plate-for-dump.hs
Last active February 1, 2020 06:45
Plate.hs src
-- stack exec --package uniplate --package criterion -- ghc Plate.hs -O2 -ddump-simpl -dsuppress-all > /tmp/Plate-dump.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE LambdaCase #-}
import GHC.Generics
import Transform
data Expr
@soupi
soupi / cmus_now_playing.hs
Last active July 21, 2020 05:57
Fancily write to file which song is playing in cmus (can be read from obs using textmonitor script)
#!/usr/bin/env stack
-- stack --resolver lts-15.7 script --package text --package process
{-# LANGUAGE OverloadedStrings #-}
import Control.Monad
import qualified Data.Text as T
import qualified Data.Text.IO as T
import System.Process
@soupi
soupi / setup-stack-ghc-shortcuts.sh
Last active May 10, 2020 08:18
stack ghc shortcuts
#!/bin/bash
if [ ! -f ~/.local/bin/ghc ]; then
echo '#!/bin/bash' > ~/.local/bin/ghc;
echo 'stack exec -- ghc $@' >> ~/.local/bin/ghc;
chmod +x ~/.local/bin/ghc;
echo "~/.local/bin/ghc created."
else
echo "~/.local/bin/ghc already exists."
fi