Skip to content

Instantly share code, notes, and snippets.

@i-am-tom
i-am-tom / ZipDisjointRecord.purs
Created September 1, 2017 20:32
Zipping records with mismatched keys.
module Main (main, zip, zipRecord, class ZipRowList) where
import Control.Monad.Eff (Eff)
import Control.Monad.Eff.Console (CONSOLE, log)
import Data.Record (get, insert)
import Data.Symbol (class IsSymbol, SProxy(..))
import Data.These (These(..))
import Global.Unsafe (unsafeStringify)
import Prelude (Unit, discard)
import Type.Row
@i-am-tom
i-am-tom / Bag.purs
Last active May 3, 2018 10:06
PureScript port of Will Jones' type-indexed config "bag".
module Main where
import Control.Alternative ((<|>))
import Control.Apply (lift2)
import Control.Monad.Eff (Eff)
import Control.Monad.Eff.Console (CONSOLE, logShow)
import Data.Argonaut.Core (Json)
import Data.Argonaut.Decode (class DecodeJson, decodeJson)
import Data.Argonaut.Encode (class EncodeJson, encodeJson)
import Data.Either (hush)
@i-am-tom
i-am-tom / Main.purs
Created May 11, 2018 23:16
Super Circles
module Main where
import Color (rotateHue)
import Color as Color
import Color.Scheme.MaterialDesign (red)
import Control.Apply (lift3)
import Control.Monad.Eff (Eff)
import Control.Monad.Eff.Console (logShow)
import Data.Maybe (Maybe(..))
import Data.Monoid (mempty)
@i-am-tom
i-am-tom / STLC.hs
Last active May 21, 2018 20:10
Simply-Typed Lambda Calculus written in "glorious" "dependent" Haskell.
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeInType #-}
{-# LANGUAGE TypeOperators #-}
module Main (test01, test02, main) where
import Data.Kind
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
module Main where
data Nil
data Cons x xs
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
module YassQueen where
data Nil
data Cons x xs
type family First xs where
First (Cons x xs) = x
@i-am-tom
i-am-tom / Controller-SignUp.purs
Last active July 5, 2018 13:30
A little (hand-split-and-then-not-re-typechecked) demo of Panda's current state.
module Controller.SignUp where
import View.SignUp
( Input (..)
, Output (..)
, Message (..)
, State (..)
, Error (..)
, view
@i-am-tom
i-am-tom / Form.hs
Created July 15, 2018 15:26
Messing around with Typeable.
{-# LANGUAGE
DataKinds
, DeriveAnyClass
, DeriveGeneric
, DerivingStrategies
, FlexibleContexts
, FlexibleInstances
, FunctionalDependencies
, GeneralizedNewtypeDeriving
, PolyKinds
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeInType #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
module Tree where
import Data.Kind
import GHC.TypeLits
data Tree a
@i-am-tom
i-am-tom / Talk.idr
Created September 2, 2018 11:07
LambdAle code talk. A love letter to Idris and its perhaps-too-bendy syntax.
module Talk
-- Tom Harding
--
-- Blog: tomharding.me
-- GitHub: github.com/i-am-tom
-- Twitter: twitter.com/am_i_tom
-- Work: habito.com
-- github.com/i-am-tom/LICK