Skip to content

Instantly share code, notes, and snippets.

View cdparks's full-sized avatar
🍓

Chris Parks cdparks

🍓
View GitHub Profile
@cdparks
cdparks / Main.hs
Created June 22, 2015 16:31
Generic RNF
{-# LANGUAGE DeriveGeneric #-}
module Main where
import Control.DeepSeq
import Control.DeepSeq.Generics (genericRnf)
import GHC.Generics
data List a = Nil | Cons a (List a) deriving (Generic)
@cdparks
cdparks / gist:f18373921c7a59156cd7
Created March 21, 2015 18:16
Partially initialized record
data Point2D = Point2D { x :: Double, y :: Double }
p = Point2D { x = 1 }
-- Point2D (D# 1.0) (recConError "x.hs:3:5-21|y"#)
main = do
print (x p)
print (y p) -- BOOM
@cdparks
cdparks / Stream.hs
Created February 25, 2015 18:50
Lazy infinite streams in Haskell, Swift, and Python
module Main where
import Prelude hiding (
iterate, repeat, map, filter, zipWith, zip,
take, takeWhile, drop, dropWhile)
import qualified Prelude as P
import Text.Printf (printf)
import Data.List (intercalate)
infixr 5 :>
import Data.Char (ord)
main = print $ rot13 "unccl oveguqnl, funqra!"
where
rot13 = foldr replace []
alpha = ['a'..'z']
index x = (ord x - ord 'a' + 13) `mod` 26
replace x xs
| x `elem` alpha = alpha !! index x:xs
| otherwise = x:xs