Skip to content

Instantly share code, notes, and snippets.

View tonymorris's full-sized avatar

Tony Morris tonymorris

View GitHub Profile
class Semigroup a where
(<>) ::
a
-> a
-> a
newtype T a =
T ([a] -> a)
instance Semigroup (T a) where
// sequence :: [Maybe a] -> Maybe [a]
args(list)
result = new List;
foreach el in list
if(el == null)
return null;
else
result.add(el);
return result;
* Emphasise that this is already possible in older Java (just heavier syntax)
* Free monad for I/O (e.g. terminal I/O)
* Trampolining for performance (Can we please, please have TCO?)
* Coproduct for combining interpreters (bye bye trampolining)
@tonymorris
tonymorris / traversals.hs
Created March 28, 2014 23:54
Lens traversals
import Control.Lens
import Control.Applicative
data T a =
T (Maybe a)
deriving (Eq, Show)
traverseT ::
Traversal' (T a) a
traverseT _ (T Nothing) =
@tonymorris
tonymorris / ride-report-20140330.md
Created March 30, 2014 13:33
Ride Report 20130330 Jason&Tony

Ride Report 20130330

Bloody awesome loop

  • Jason: Triumph 800XC
  • Tony: Trumph 800XC

Left Jason's house (Coomera) at 1700 and headed toward Beaudesert. Took a detour

@tonymorris
tonymorris / ConstructorN.hs
Last active August 29, 2015 13:58
Dual to FieldN?
{-
Is this even sensible?
Does this exist already?
-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE FlexibleInstances #-}
@tonymorris
tonymorris / everyN.hs
Last active August 29, 2015 13:58 — forked from anonymous/everyN.hs
module Every where
import Control.Lens
import Control.Monad.Fix
-- |
--
-- >>> everyN 2 []
-- []
--
\documentclass{beamer}
\usepackage{amsmath}
\usepackage[utf8]{inputenc}
\usepackage{graphics}
\usepackage{hyperref}
\usepackage{xcolor}
\usepackage{wasysym}
\usepackage{listings}
\usepackage{tikz}
\usepackage{amssymb}
@tonymorris
tonymorris / .gitignore
Last active August 29, 2015 13:59
Ride plan for 22/23 April 2014
/.cabal-sandbox/
/cabal.sandbox.config
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xmlns:wptx1="http://www.garmin.com/xmlschemas/WaypointExtension/v1" xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1" creator="GPSMAP 62s" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www8.garmin.com/xmlschemas/GpxExtensionsv3.xsd http://www.garmin.com/xmlschemas/WaypointExtension/v1 http://www8.garmin.com/xmlschemas/WaypointExtensionv1.xsd http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd"><metadata><link href="http://www.garmin.com"><text>Garmin International</text></link><time>2014-02-22T23:10:33Z</time></metadata><trk><name>2014-02-09 10:47:27 Day</name><extensions><gpxx:TrackExtension>