Skip to content

Instantly share code, notes, and snippets.

{-# LANGUAGE TemplateHaskell, RankNTypes, GADTs, FlexibleContexts #-}
import Control.Lens
import Control.Monad.State
import Control.Monad.Operational.Mini
import Control.Monad.Operational.TH (makeSingletons)
import Data.Maybe (fromJust)
data Pattern p q x where
Hook :: Lens' q a -> State a () -> Pattern p q ()
Pick :: Lens' q a -> Pattern p q a
@myuon
myuon / LookAt.hs
Last active August 29, 2015 13:56
LookAtパターン・改改
{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, TypeSynonymInstances #-}
{-# LANGUAGE FlexibleInstances, GADTs, FlexibleContexts #-}
import Control.Monad.State
import Control.Lens
import Control.Monad.Operational.TH (makeSingletons)
import Control.Monad.Operational.Mini
import Data.Functor.Product
data Pattern p q x where
Hook :: Either (State p ()) (State q ()) -> Pattern p q ()
@myuon
myuon / Yield.hs
Last active August 29, 2015 13:57
(Storeコモナドによる) LookAtパターンCoroutineバージョン
{-# LANGUAGE GADTs, TemplateHaskell, FlexibleContexts #-}
import Control.Lens
import Control.Arrow
import Data.Functor.Product
import Control.Monad.State
import Control.Monad.Operational.Mini
import Control.Comonad.Store
data Pattern p q x where
Hook :: Either (p -> p) (q -> q) -> Pattern p q ()
@myuon
myuon / lens-cheatsheet.md
Created April 6, 2014 06:41
Lens CheatSheet
@myuon
myuon / hoge.md
Last active August 29, 2015 14:00
ネタ帳

ネタ帳

やりたいことや興味のあること、新規性のありそうなことをまとめておく。時期が来たら整理したり実行したり削除したりすればいいってワケ。

Chimera関連

  • 辞書のリンク構造の調査:単語の生成と定義文章をパターンから生成するのは異なる問題として捉えるべき?
  • スクリプト->魔法陣生成器
@myuon
myuon / Main.hs
Last active August 29, 2015 14:02
{-# LANGUAGE DeriveFunctor, FlexibleInstances, TemplateHaskell #-}
import Data.IORef
import TH
import PList
data Parent = Parent { _x :: Int, children :: [Address] } deriving Show
data Child = Child { _y :: Int, parent :: Address } deriving Show
makeManager [''Parent, ''Child]
@myuon
myuon / Main.hs
Last active August 29, 2015 14:04
Conway's Game of Life
import FreeGame
import qualified Data.IntMap as IM
import Control.Monad.State.Strict
import Control.Arrow
data Cells a = Cells (IM.IntMap a) (Int,Int)
instance Functor Cells where
fmap f (Cells m k) = Cells (fmap f m) k
type Board = Cells Bool
@myuon
myuon / _paiza
Last active August 29, 2015 14:04
paiza Online Hackathon
問題: https://paiza.jp/poh/kirishima
結果: http://paiza.jp/poh/kirishima/result/c7b9268a3c4b60e5c40aff903b3b9d96
{-# LANGUAGE DataKinds, TypeOperators, KindSignatures, TypeFamilies #-}
{-# LANGUAGE UndecidableInstances, FlexibleInstances, FlexibleContexts #-}
{-# LANGUAGE ScopedTypeVariables, GADTs, MultiParamTypeClasses, FunctionalDependencies #-}
import GHC.TypeLits
import Data.Type.Equality
import Data.Proxy
type family (a :: Nat) % (b :: Nat) :: Nat where
a % b = Mod a b (CmpNat a b)
@myuon
myuon / progLA.hs
Last active August 29, 2015 14:05
Control.Comonad.Env
{-# LANGUAGE GADTs, FlexibleContexts, TemplateHaskell #-}
import Control.Comonad.Env
import Control.Comonad
import Control.Monad.Operational.Mini
import qualified Data.IntMap as M
data Field = Field String (M.IntMap Chara) deriving (Show)
data Chara = Chara String deriving (Show)
updateField f (Field s m) = Field (f s) m
updateChara f (Chara s) = Chara (f s)