Skip to content

Instantly share code, notes, and snippets.

@co-dan
co-dan / gist:c874b9624ef09399a2c7
Last active December 17, 2017 23:50
Yoneda lemma for fmap fusion
--------------------------------------------------
-- Yoneda lemma
newtype Yoneda f a =
Yoneda (forall b. (a -> b) -> f b)
-- Nat (Hom(a, -), F) ~~ F a
-- this is `liftYoneda`
yoneda :: (Functor f) => f a -> Yoneda f a
yoneda x = Yoneda $ \f -> fmap f x
@co-dan
co-dan / SeqFoldable.hs
Created April 7, 2014 06:48
Sequence-algebras
{-# LANGUAGE TypeFamilies, FlexibleInstances #-}
module SeqFoldable where
import Prelude hiding (drop, take)
import Data.Functor.Foldable
import Data.Sequence (Seq, ViewL (..), (<|))
import qualified Data.Sequence as S
@co-dan
co-dan / .zshrc
Last active December 31, 2015 08:49
Cabal sandbox status in your ZSH prompt
#
# This simple script displays whether you are in a cabal sandbox
# the the result of checking for a sandbox is cached, but now that I
# actually think about it, it was probably an unnecessary step.
# Don't forget to customize the PROMPT variable at the bottom
#
# Looks like this with my prompt: https://files.app.net/rjphjAG9.png
#
function update_cabal_sandbox_info () {
Resolving dependencies...
Configuring diagrams-contrib-1.0.0.1...
Building diagrams-contrib-1.0.0.1...
Preprocessing library diagrams-contrib-1.0.0.1...
src/Diagrams/TwoD/Tilings.hs:94:39:
warning: missing terminating ' character [-Winvalid-pp-token]
-- Instead of using Doubles, which can't be compared for equality, it
^
@co-dan
co-dan / interactive.hs
Last active December 24, 2015 16:29 — forked from luite/interactive.hs
{-# LANGUAGE TypeFamilies,
MultiParamTypeClasses,
FlexibleInstances,
UndecidableInstances,
FunctionalDependencies #-}
import Control.Concurrent
import Control.Monad
import Control.Monad.Fix
import JavaScript.JQuery
/* FNV-1 hash
*
* The FNV-1 hash description: http://isthe.com/chongo/tech/comp/fnv/
* The FNV-1 hash is public domain: http://isthe.com/chongo/tech/comp/fnv/#public_domain
long hashable_fnv_hash(const unsigned char* str, long len, long hash) {
while (len--) {
hash = (hash * 16777619) ^ *str++;
}
> modifyMatch :: LMatch RdrName (LHsExpr RdrName)
> -> LMatch RdrName (LHsExpr RdrName)
> modifyMatch (L l1 (Match lpat lty rs@(GRHSs{..}))) =
> let f (L l1 (GRHS guards body)) =
> L l1 (GRHS guards (modifyExpr body))
> in L l1 (Match lpat lty (rs
> { grhssGRHSs = map f grhssGRHSs }))
instance (a ~ D.SVG, b ~ D.R2, c ~ Any) => Display (D.QDiagram a b c) where
instance Display (D.QDiagram D.SVG D.R2 Any) where
src/Diagrams/Trail.hs:150:1:
Can't make a derived instance of `Transformable (SegTree v)'
(even with cunning newtype deriving):
it is not type-safe to use GeneralizedNewtypeDeriving on this class;
the last parameter of `Transformable' is at role N
In the stand-alone deriving instance for
`(HasLinearMap v, InnerSpace v, OrderedField (Scalar v)) =>
Transformable (SegTree v)'
match "gallery/*.lhs" $ version "gallery" $ do
route $ setExtension "html"
compile $ do
getResourceBody >>= saveSnapshot "rawcontent"
withMathJax
>>= loadAndApplyTemplate "templates/exampleHi.html"
( mconcat
[ field "code" readSource
, setImgURL
, setHtmlURL