Skip to content

Instantly share code, notes, and snippets.

pop :: State (Seq Int, Set Int) (Maybe [Int])
pop = do
(x :< xs) <- viewl <$> gets fst
modify $ const xs *** id
return x
pop :: State (Seq Int, Set Int) (Maybe [Int])
pop = do
(x :< xs) <- viewl <$> gets fst
modify $ const xs *** id
return x
No instance for (MonadState
(Seq (Maybe [Int]), Set Int)
(StateT (Seq Int, Set Int) Data.Functor.Identity.Identity))
arising from a use of `gets'
In the second argument of `(<$>)', namely `gets fst'
In a stmt of a 'do' block: (x :< xs) <- viewl <$> gets fst
In the expression:
do { (x :< xs) <- viewl <$> gets fst;
modify $ const xs *** id;
pop :: MaybeT (State BfsState) [Int]
pop = do
(x :< xs) <- viewl <$> gets queue
modify $ \y -> y { queue = xs }
return x
push :: [Int] -> MaybeT (State BfsState) ()
push x = do q <- gets queue
modify $ \y -> y { queue = q |> x }
type Graph = Vector [Int]
data BfsState = BfsState { queue :: Seq [Int]
, visited :: Set Int }
pop :: MaybeT (State BfsState) [Int]
pop = do
(x :< xs) <- viewl <$> gets queue
modify $ \y -> y { queue = xs }
return x
class Hashable a where
hash :: Bits b => a -> b
instance Hashable Int where
hash = id
fib :: Int -> Int
fib = memo fib'
where fib' 0 = 1
fib' 1 = 1
fib' n = fib' (n - 1) + fib' (n - 2)
{-# LANGUAGE ViewPatterns #-}
module Memo where
import Data.Bits (testBit, setBit, finiteBitSize)
data Memo a b = Fork (Memo a b) b (Memo a b)
deriving Show
type Bit = Bool
newtype Bits = Bits [Bit]
{-# LANGUAGE ViewPatterns #-}
module Memo where
import Data.Bits (testBit, setBit, finiteBitSize)
data Memo a b = Fork (Memo a b) b (Memo a b)
deriving Show
type Bit = Bool
newtype Bits = Bits [Bit]
{-
(x - xs)^2 + (y - ys)^2 + (z - zs)^2 = r^2
x(t) = xr + t * xv
y(t) = yr + t * yv
z(t) = zr + t * zv
(xr - xs + t * xv)^2 + (yr - ys + t * yv)^2 + (zr - zs + t * zv)^2 = r^2
t^2(xv^2 + yv^2 + zv^2) + 2t(xv(xr - xs) + yv(yr - ys) + zv(zr - zs)) +
(xr - xs)^2 + (yr - ys)^2 + (zr - zs)^2 - r^2 = 0