Skip to content

Instantly share code, notes, and snippets.

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"
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
View Permutations.hs
perms [] = []
perms [x] = [pure x]
perms k@(z:zs) = do
(ls,rs) <-
splitAt
<$> [ 0 .. length zs ]
<*> perms zs
pure (ls ++ [z] ++ rs)
View Test.dump-cmm
==================== Output Cmm ====================
2020-06-27 01:29:07.434663996 UTC
[Test.test_entry() { // [R2]
{ info_tbls: [(cA7,
label: Test.test_info
rep: HeapRep static { Fun {arity: 1 fun_type: ArgSpec 5} }
srt: Just GHC.Num.$fNumInt_closure)]
stack_info: arg_space: 8
View Foo.hs
{-# LANGUAGE
DeriveGeneric,
FlexibleInstances,
FlexibleContexts,
AllowAmbiguousTypes,
ScopedTypeVariables,
TypeApplications,
TypeFamilies,
TypeOperators,
PartialTypeSignatures,
View ok.json
This file has been truncated, but you can view the full file.
{
"id": "0x7fb639848808",
"kind": "TranslationUnitDecl",
"loc": {},
"range": {
"begin": {},
"end": {}
},
"inner": [