Skip to content

Instantly share code, notes, and snippets.

@k0001
k0001 / hello.hs
Last active September 25, 2015 19:32
-- | Add a prefix and a suffix to a given monoid. Problem: which of the arguments is which?
surround :: (Monoid a) => a -> a -> a -> a
-- | Add a prefix and a suffix to a given monoid. No problem!
surround :: (Monoid a, prefix ~ a, suffix ~ a) => prefix -> suffix -> a -> a
# nixos-rebuild test
building Nix...
building the system configuration...
these derivations will be built:
/nix/store/rp3nj1xr0i81hlajz5ld7fdwdvy9flxc-nixos-14.12.335.676e8d7.drv
building path(s) ‘/nix/store/gq44w0rr8m11lb595y5zdjnihk0bdzl4-nixos-14.12.335.676e8d7’
building /nix/store/gq44w0rr8m11lb595y5zdjnihk0bdzl4-nixos-14.12.335.676e8d7
cp: cannot stat '/etc/nixos/configuration.nix': No such file or directory
builder for ‘/nix/store/rp3nj1xr0i81hlajz5ld7fdwdvy9flxc-nixos-14.12.335.676e8d7.drv’ failed with exit code 1
error: build of ‘/nix/store/rp3nj1xr0i81hlajz5ld7fdwdvy9flxc-nixos-14.12.335.676e8d7.drv’ failed
@k0001
k0001 / Main.hs
Last active August 29, 2015 14:07
{-# LANGUAGE JavaScriptFFI #-}
{- This code compiles and runs just fine -}
module Main where
import Control.Concurrent.MVar
import qualified Control.Exception as Ex
import GHCJS.Types
import GHCJS.Foreign
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.12 (GNU/Linux)
mQENBEwjWc8BCACrUV/Axqjdq39BoBmGAzC4MlfltqZxvekF61n3V1WSpQDxUbPO
2Ljj59Nrqtqyzvl5uMslWgWeV2APVTai6aYZdNkxucTdW9UYn/pevJTiyYB67lcL
DzCkKrTMLBOcWmZznuQv4lvuZVAKs5M05GEOxprikYxT1fc4ks6pBkl2VfcCtHAB
I5sXEdLcaFy+n61vUjAjwveUDtlV8rc07T+0VI5a/O33maw+S5VHA+8EGIbUFNkS
Sj6DWs6XGL0nbBYeM71EyHmmi9o48VbE26ifZJTeDAOtS8agF6mB60cVEd9CpT5y
SVxnOAWXBUeXYf4KixrBT2ZY17BlcgmFcJj5ABEBAAG0MlJlbnpvIENhcmJvbmFy
YSA8cmVuem8uY2FyYm9uYXJhQGJpbmFyaWFncm91cC5jb20+iQE+BBMBAgAoAhsD
import Data.Attoparsec as A
import Data.Attoparsec.Binary as A
import Data.Attoparsec.Combinator as A
import Data.ByteString as B (pack, ByteString)
import Control.Concurrent.Async
import Control.Proxy as P
import Control.Proxy.TCP as P
@k0001
k0001 / hello.hs
Last active December 17, 2015 22:39
import Control.Proxy ((>->), (\>\))
import qualified Control.Proxy as P
import qualified Control.Proxy.Trans.State as P
import qualified Control.Proxy.Trans.Either as P
import qualified Control.Proxy.Parse as Pa
import qualified Control.Proxy.Binary as Pb
import qualified Data.Binary as Bin
import qualified Data.ByteString.Lazy as BL
import qualified Data.ByteString as BS
import Data.Monoid
{-# LANGUAGE OverloadedStrings #-}
module Main (main) where
import Control.Applicative
import qualified Data.Attoparsec.Text as A
import qualified Data.Text as T
import Control.Monad
import Control.Monad.Trans.Class
import Control.Monad.ST
{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -fno-warn-unused-do-bind #-}
module Main where
import Control.Applicative
import Control.Error
import Control.Monad.Trans.Class
import Control.Monad
import Control.Proxy
@k0001
k0001 / ex1.hs
Last active December 13, 2015 21:38
Simple pipes-network benchmark
module Main where
import Control.Monad
import Control.Proxy ((>->))
import qualified Control.Proxy as P
import qualified Control.Proxy.Safe as P
import qualified Control.Proxy.Network.TCP as NT
import qualified Control.Proxy.Safe.Network.TCP as NTS
import qualified Network.Socket.ByteString as NSB (recv)
@k0001
k0001 / Eip.hs
Last active December 31, 2018 14:45
-- | This module holds the messy code I wrote while walking through:
--
-- The Essence of the Iterator Pattern
-- Jeremy Gibbons, Bruno César dos Santos Oliveira. 2009.
-- http://www.cs.ox.ac.uk/publications/publication1409-abstract.html
--
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FunctionalDependencies #-}