Skip to content

Instantly share code, notes, and snippets.

View kazu-yamamoto's full-sized avatar
💭
QUIC and TLS 1.3

Kazu Yamamoto kazu-yamamoto

💭
QUIC and TLS 1.3
View GitHub Profile
@kazu-yamamoto
kazu-yamamoto / gist:4711284
Last active December 12, 2015 03:59
Free Monad example with DeriveFunctor
{-# LANGUAGE DeriveFunctor #-}
module Main where
import Control.Monad
import Control.Monad.Free
import Prelude hiding (putChar, getChar)
import qualified System.IO as IO
import Test.QuickCheck
@kazu-yamamoto
kazu-yamamoto / gist:4652121
Created January 28, 2013 01:41
QuickSort with differential list
module QuickSortWithDL where
import Data.Monoid
data DL a = DL ([a] -> [a])
instance Monoid (DL a) where
mempty = DL ([] ++)
DL f `mappend` DL g = DL (f . g)
@kazu-yamamoto
kazu-yamamoto / gist:4481465
Created January 8, 2013 05:25
A program to check which socket flags are inherited.
#include <errno.h>
#include <fcntl.h>
#include <netdb.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
@kazu-yamamoto
kazu-yamamoto / gist:4084462
Created November 16, 2012 05:33
Testing typeclass with QuickCheck
{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-}
module Main where
import Control.Monad
import Control.Monad.Error
import Control.Monad.Trans.RWS.Strict
import Prelude hiding (putChar, getChar)
import qualified System.IO as IO
import Test.QuickCheck
@kazu-yamamoto
kazu-yamamoto / gist:4070268
Created November 14, 2012 04:32
Testing Monad with QuickCheck
module Main where
import Control.Monad
import Prelude hiding (putChar, getChar)
import qualified System.IO as IO
import Test.QuickCheck
----------------------------------------------------------------
-- Our DSL
@kazu-yamamoto
kazu-yamamoto / gist:4064634
Created November 13, 2012 08:20
Testing Free Monad with QuickCheck
module Main where
import Control.Monad
import Control.Monad.Free
import Prelude hiding (putChar, getChar)
import qualified System.IO as IO
import Test.QuickCheck
----------------------------------------------------------------
-- Our DSL
@kazu-yamamoto
kazu-yamamoto / gist:4063823
Created November 13, 2012 03:50
Free Monad (RWH 15.8)
----------------------------------------------------------------
-- Free Monad example agaist RWH 15.8
--
-- Original code: http://ideone.com/F49k71
import Control.Applicative
import Control.Monad.Free
import System.IO (Handle, IOMode(..), stdout)
import qualified System.IO as IO
import System.IO.Unsafe
@kazu-yamamoto
kazu-yamamoto / gist:3977911
Created October 30, 2012 02:11
多相再帰
data Bin a = Bin a a deriving Show
data List a = Nil | Cons a (List (Bin a)) deriving Show
len :: List a -> Int
len Nil = 0
len (Cons _ t) = 1 + 2 * len t
{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}
import Data.Map (Map)
import qualified Data.Map as M
import Data.Maybe
data Trie m ks v = Trie (Maybe v) (m (Trie m ks v))
class FiniteMap m k where
empty :: m k v
{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}
import Data.Map (Map)
import qualified Data.Map as M
import Data.Maybe
data Trie m k v = Trie (Maybe v) (m k (Trie m k v))
class FiniteMap m k where
empty' :: m k v