Skip to content

Instantly share code, notes, and snippets.

View danbornside's full-sized avatar

Dan Bornside danbornside

View GitHub Profile
{-# LANGUAGE DeriveTraversable #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE RecursiveDo #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE TemplateHaskell #-}
import Control.Lens
import Reflex.Patch
import Data.Dependent.Sum
@danbornside
danbornside / SemigroupAt.hs
Last active September 9, 2018 02:21
semigroups via wrapped `At`/`FoldableWithIndex`
import Control.Monad.State
import Control.Lens.At
import Control.Lens.Indexed
import Data.Functor.Identity
unionWith
:: (FoldableWithIndex (Index s) t, At s)
=> (a -> IxValue s) -> (a -> IxValue s -> IxValue s)
-> s -> t a -> s
unionWith a2b ab2b xs ys = execState (itraverse_ f ys) xs
{- errors:
common/src/Common/WrappedShow1.hs:42:43: error:
• Couldn't match expected type ‘[a] -> ShowS’ with actual type ‘a’
‘a’ is a rigid type variable bound by
the type signature for:
reifyShow :: forall a t.
(a -> a -> a)
-> a
-> (forall s. Reifies s (ReifiedShow a) => t -> ReflectedShow a s)
-> t
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DeriveTraversable #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ConstraintKinds , ScopedTypeVariables , UndecidableInstances , FlexibleContexts , FlexibleInstances , DeriveTraversable , FunctionalDependencies , GeneralizedNewtypeDeriving , InstanceSigs , LambdaCase , MultiParamTypeClasses , PolyKinds , Rank2Types , StandaloneDeriving , TupleSections , TypeFamilies , TypeOperators #-}
{-
name: view-selector
version: 0.1.0.0
license: BSD3
license-file: LICENSE
author: dan bornside
maintainer: dan.bornside@gmail.com
build-type: Simple
{-# LANGUAGE PartialTypeSignatures, ConstraintKinds, InstanceSigs, ScopedTypeVariables, RankNTypes, UndecidableInstances, TypeFamilies, DataKinds, PolyKinds, MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances, FlexibleContexts, GADTs, DeriveTraversable, StandaloneDeriving #-}
-- | Quick(slow) and dirty typesafe vectors
module Vector where
import Prelude hiding (id, (.))
import Control.Category
import Data.Semigroupoid
import Data.Proxy
import Data.Kind
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE NoMonomorphismRestriction #-}
class MyMutableClass(object):
def __init__(self, foo, bar):
"This is a chore"
self.foo, self.bar = foo, bar
def mutateThing(self, baz=None, quux=None, wibble=None, wobble=None, wubble=None)
"I hope i didnt miss any arguments there"
if baz is not None:
self.baz = baz
if quux is not None: