やりたいことや興味のあること、新規性のありそうなことをまとめておく。時期が来たら整理したり実行したり削除したりすればいいってワケ。
- 辞書のリンク構造の調査:単語の生成と定義文章をパターンから生成するのは異なる問題として捉えるべき?
- スクリプト->魔法陣生成器
{-# LANGUAGE GADTs, DataKinds, TypeFamilies, ConstraintKinds, TypeOperators, UndecidableInstances #-} | |
import GHC.Prim (Constraint) | |
import Data.Ratio ((%)) | |
type family All (cx :: * -> Constraint) (xs :: [*]) :: Constraint | |
type instance All cx '[] = () | |
type instance All cx (x ': xs) = (cx x, All cx xs) | |
data HList (as :: [*]) where |
{-# LANGUAGE DataKinds, GADTs, KindSignatures, FlexibleInstances, FlexibleContexts, TypeFamilies #-} | |
import Control.Applicative | |
data Nat = Zero | Succ Nat | |
type family Plus (n :: Nat) (m :: Nat) :: Nat | |
type instance Plus (Succ n) m = Succ (Plus n m) | |
type instance Plus Zero m = m | |
data LengthList n a where | |
Nil :: LengthList Zero a |
{-# LANGUAGE GADTs, TemplateHaskell, FlexibleContexts #-} | |
import Control.Arrow | |
import Data.List | |
import Control.Monad.Operational.Mini | |
import Control.Monad.Operational.TH (makeSingletons) | |
import Control.Monad.State | |
data Pattern p q x where | |
GetLocal :: Pattern p q p | |
PutLocal :: p -> Pattern p q () |
{-# 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 |
{-# 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 () |
{-# 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 () |
{-# 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] |
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 |
問題: https://paiza.jp/poh/kirishima | |
結果: http://paiza.jp/poh/kirishima/result/c7b9268a3c4b60e5c40aff903b3b9d96 |