Skip to content

Instantly share code, notes, and snippets.

@alanz
alanz / Simple.hs
Created April 22, 2012 17:43
Updated Simple.hs to not emit Maybe fields without values
{-# LANGUAGE OverloadedStrings #-}
import Control.Applicative ((<$>), (<*>), empty)
import Data.Aeson
import Data.Aeson.Types
import qualified Data.ByteString.Lazy.Char8 as BL
data Coord = Coord { x :: Double, y :: Double, c :: Maybe String }
deriving (Show)
@alanz
alanz / CleanWhite.hs
Created January 9, 2016 13:30
haskell code to clean up whitespace, replaces tabs with spaces and deletes trailing whitespace
-- |strip trailing whitespace, and turn tabs into spaces
-- Note: using Text as its append performance beats String
cleanupWhiteSpace :: FilePath -> IO T.Text
cleanupWhiteSpace file = do
contents <- T.readFile file
let fixed = map cleanupOneLine (T.lines contents)
return (T.unlines fixed)
tabWidth :: Int
tabWidth = 8
@alanz
alanz / Foo.hs
Last active January 21, 2016 11:26
-- trying our emacs gist-buffer
main = putStrLn "hello"
#!/bin/sh
# Based on #ghc conversations, the following results in a working build on
# Debian testing with binutils-2.27.9+b1
# First, make sure that the following patches have been applied
#
# arc patch --nobranch D2672
# arc patch --nobranch D2673
# arc patch --nobranch D2674

Keybase proof

I hereby claim:

  • I am alanz on github.
  • I am alanz (https://keybase.io/alanz) on keybase.
  • I have a public key ASAcBzN91Tcu_ThkEm8J9-7mBpb-2v43c_vP35ibuk9MfAo

To claim this, I am signing this object:

@alanz
alanz / cabal-changes.sh
Created September 23, 2018 18:03
Show recent changes to the local hackage index file
#!/bin/sh
# Show last 20 changes to the hackage repo
tar tvf ~/.cabal/packages/hackage.haskell.org/01-index.tar | tail -n 20
@alanz
alanz / .emacs
Created March 20, 2021 15:46
org-roam todo's in agenda
;;----------------------------------------------------------------------
;; Picking up TODO items from org-roam notes
;; Via https://magnus.therning.org/2021-03-14-keeping-todo-items-in-org-roam.html
(defun roam-extra:todo-p ()
"Return non-nil if current buffer has any TODO entry.
TODO entries marked as done are ignored, meaning the this
function returns nil if current buffer contains only completed
tasks."
@alanz
alanz / exact_print_annotations_ghc_910_changes.md
Last active May 31, 2024 10:51
Exact Print Annotation GHC Changes for GHC 9.10

Exact Print Annotation GHC 9.10 Changes

TLDR survival guide

  • remove makeDeltaAst, otherwise there will be no SrcSpan anywhere in the AST (but when ready to make a change, using it to capture spacing of the local thing being edited may help)
  • EpAnnNotUsed is gone, use noAnn instead
  • uniqueSrcSpanT is no longer needed, use an appropriate EpaDelta location instead
  • EpaDelta (DifferentLine row col) interprets col differently. You must add 1 to get the prior spacing.
  • If you add something to a list (possible via hsDecls / replaceDecls), the following item only needs to have setEntryDP called on it, to get the spacing right