Skip to content

Instantly share code, notes, and snippets.

import Control.Applicative
import Control.Monad
import Data.Char
import Data.List.Split
import Data.SBV
main :: IO ()
main = do
t <- map read . words <$> getLine
case t of
@tanakh
tanakh / file0.txt
Created November 27, 2012 07:44
エクスポートモジュールの楽な追加 ref: http://qiita.com/items/dc8641a618b39e875ea1
module Foo (
module Bar,
module Baz,
...
) where
import Bar
import Baz
...
@tanakh
tanakh / hoge.hs
Created November 27, 2012 05:55
ADTをUnboxed Vectorにして、Lens経由でアクセスする ref: http://qiita.com/items/3a2053bea740ca423407
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
import Control.Lens hiding (Rep, from, to)
@tanakh
tanakh / gist:4123137
Created November 21, 2012 05:09
Jigen-zan proto
{-# LANGUAGE DeriveFunctor, TypeFamilies, EmptyDataDecls, PolyKinds, DataKinds, ConstraintKinds #-}
newtype Dimensional (dim :: Dimension) a = Dimensional a
deriving (Eq, Ord, Show, Functor)
data Dimension = Dim0 | Dim String Int Dimension
type family Insert (a :: Dimension) (k :: String) (v :: Int) :: Dimension
type instance Insert (Dim0 k v) = Dim k v Dim0
type instance (k < a) => Insert (Dim a b l) k v = Dim k v (Dim a b l)
@tanakh
tanakh / file0.txt
Created November 15, 2012 10:09
C vs Python vs Ruby vs Haskell(無意味な処理deベンチマーク) ref: http://qiita.com/items/c53751e780a89941243a
mylist :: Int -> [[Int]]
mylist n = take n $ iterate (map (+n)) [1..n]
main :: IO ()
main = print.last.last $ map reverse $ mylist 4000
-- Initial iconv-conduit.cabal generated by cabal init. For further
-- documentation, see http://haskell.org/cabal/users-guide/
name: iconv-conduit
version: 0.1.0.0
-- synopsis:
-- description:
license: BSD3
license-file: LICENSE
author: Hideyuki Tanaka
@tanakh
tanakh / gist:3985084
Created October 31, 2012 05:44
Lens study
import Control.Category
import Prelude hiding (id, (.))
data Lens a b
= Lens
{ get :: a -> b
, set :: b -> a -> a
}
import Control.Lens
import Control.Monad
import Control.Monad.State
import Data.List
import qualified Data.Map as M
paint :: M.Map (Int, Int) Char -> (Int, Int) -> Int
paint mm pos = evalState (go pos) mm where
go (i, j) = do
b <- use $ at (i, j)
@tanakh
tanakh / gist:3871207
Created October 11, 2012 09:19
binary-shared test
{-# LANGUAGE DeriveDataTypeable #-}
import Data.Binary as B
import Data.Binary.Shared as S
import qualified Data.ByteString.Lazy as L
import Data.Typeable
import Data.List
import System.Random
import Control.Monad
@tanakh
tanakh / file0.txt
Created September 14, 2012 06:22
threadedにすると何故か遅い ref: http://qiita.com/items/6755af56e53ce184d327
{-# LANGUAGE OverloadedStrings #-}
import Control.Applicative
import Control.Concurrent (threadDelay)
import Control.Concurrent.Async (async, race_, wait)
import Control.Monad
import qualified Data.ByteString as S
import Data.ByteString.Char8 ()
import Data.Conduit
import Data.Conduit.Network