<html xmlns="http://www.w3.org/1999/xhtml" ><head ><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js" ></script ></head ><body ><pre ><span class="hs-pragma" >{-# LANGUAGE TypeFamilies #-}</span ><span > </span ><span id="line-2" ></span ><span > </span ><span id="line-3" ></span ><span > </span ><span id="line-4" ></span ><span class="hs-keyword" >module</span ><span > </span ><span class="hs-identifier" >Types</span ><span > </span ><span class="hs-keyword" >where</span ><span > </span ><span id="line-5" ></span ><span > </span ><span id="line-6" ></span ><span > </span ><span id="line-7" ></span ><span class="hs-keyword" >data</span ><span > </span ><span id="Quux" ><span class="annot" ><a href="Types.html#Quux" ><span class="hs-identifier hs-var" >Quux</span ></a ></span ></span ><span > </span ><span class="hs-glyph" >=</span ><span > </span ><span id="Bar" ><span class="annot" ><a href="Types.html#Bar" ><span class="hs-identifier hs-var" >Bar</span ></a ></span ></span ><span > </span ><span class="hs-glyph" >|</span ><span > </span ><span id="Baz" ><span class="annot" ><a href="Types.html#Baz" ><span class="hs-identifier hs-var" >Baz</span ></a ></span ></span ><span > </span ><span id="line-8" ></span ><span > </span ><span id="line-9" ></span ><span class="hs-keyword" >newtype</span ><span > </span ><span id="Foo" ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-var" >Foo</span ></a ></span ></span ><span > </span ><span class="hs-glyph" >=</span ><span > </span ><span id="Foo" ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-var" >Foo</span ></a ></span ></span ><span > </span ><span class="hs-special" >(</span ><span class="hs-special" >)</span ><span > </span ><span id="line-10" ></span ><span > </span ><span id="line-11" ></span ><span class="hs-keyword" >type</span ><span > </span ><span id="FooQuux" ><span class="annot" ><a href="Types.html#FooQuux" ><span class="hs-identifier hs-var" >FooQuux</span ></a ></span ></span ><span > </span ><span class="hs-glyph" >=</span ><span > </span ><span class="hs-special" >(</span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span class="hs-special" >,</span ><span > </span ><span class="annot" ><a href="Types.html#Quux" ><span class="hs-identifier hs-type" >Quux</span ></a ></span ><span class="hs-special" >)</span ><span > </span ><span id="line-12" ></span ><span class="hs-keyword" >type</span ><span > </span ><span id="QuuxFoo" ><span class="annot" ><a href="Types.html#QuuxFoo" ><span class="hs-identifier hs-var" >QuuxFoo</span ></a ></span ></span ><span > </span ><span class="hs-glyph" >=</span ><span > </span ><span class="hs-special" >(</span ><span class="annot" ><a href="Types.html#Quux" ><span class="hs-identifier hs-type" >Quux</span ></a ></span ><span class="hs-special" >,</span ><span > </span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span class="hs-special" >)</span ><span > </span ><span id="line-13" ></span ><span > </span ><span id="line-14" ></span ><span > </span ><span id="line-15" ></span ><span class="hs-keyword" >data</span ><span > </span ><span class="hs-keyword" >family</span ><span > </span ><span id="Norf" ><span class="annot" ><a href="Types.html#Norf" ><span class="hs-identifier hs-var" >Norf</span ></a ></span ></span ><span > </span ><span id="" ><span class="annot" ><a href="#" ><span class="hs-identifier hs-type" >a</span ></a ></span ></span ><span > </span ><span id="" ><span class="annot" ><a href="#" ><span class="hs-identifier hs-type" >b</span ></a ></span ></span ><span > </span ><span id="line-16" ></span ><span > </span ><span id="line-17" ></span ><span class="hs-keyword" >data</span ><span > </span ><span class="hs-keyword" >instance</span ><span > </span ><span id="Norf" ><span class="annot" ><a href="Types.html#Norf" ><span class="hs-identifier hs-var" >Norf</span ></a ></span ></span ><span > </span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span class="annot" ><a href="Types.html#Quux" ><span class="hs-identifier hs-type" >Quux</span ></a ></span ><span > </span ><span class="hs-glyph" >=</span ><span > </span ><span id="NFQ" ><span class="annot" ><a href="Types.html#NFQ" ><span class="hs-identifier hs-var" >NFQ</span ></a ></span ></span ><span > </span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span class="annot" ><a href="Types.html#Quux" ><span class="hs-identifier hs-type" >Quux</span ></a ></span ><span > </span ><span id="line-18" ></span ><span class="hs-keyword" >data</span ><span > </span ><span class="hs-keyword" >instance</span ><span > </span ><span id="Norf" ><span class="annot" ><a href="Types.html#Norf" ><span class="hs-identifier hs-var" >Norf</span ></a ></span ></span ><span > </span ><span class="annot" ><a href="Types.html#Quux" ><span class="hs-identifier hs-type" >Quux</span ></a ></span ><span > </span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span class="hs-glyph" >=</span ><span > </span ><span id="NQF" ><span class="annot" ><a href="Types.html#NQF" ><span class="hs-identifier hs-var" >NQF</span ></a ></span ></span ><span > </span ><span class="annot" ><a href="Types.html#Quux" ><span class="hs-identifier hs-type" >Quux</span ></a ></span ><span > </span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span id="line-19" ></span ><span > </span ><span id="line-20" ></span ><span > </span ><span id="line-21" ></span ><span class="hs-keyword" >type</span ><span > </span ><span class="hs-keyword" >family</span ><span > </span ><span id="Norf%27" ><span class="annot" ><a href="Types.html#Norf%27" ><span class="hs-identifier hs-var" >Norf'</span ></a ></span ></span ><span > </span ><span id="" ><span class="annot" ><a href="#" ><span class="hs-identifier hs-type" >a</span ></a ></span ></span ><span > </span ><span id="" ><span class="annot" ><a href="#" ><span class="hs-identifier hs-type" >b</span ></a ></span ></span ><span > </span ><span id="line-22" ></span ><span > </span ><span id="line-23" ></span ><span class="hs-keyword" >type</span ><span > </span ><span class="hs-keyword" >instance</span ><span > </span ><span id="Norf%27" ><span class="annot" ><a href="Types.html#Norf%27" ><span class="hs-identifier hs-var" >Norf'</span ></a ></span ></span ><span > </span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span class="annot" ><a href="Types.html#Quux" ><span class="hs-identifier hs-type" >Quux</span ></a ></span ><span > </span ><span class="hs-glyph" >=</span ><span > </span ><span class="hs-special" >(</span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span class="hs-special" >,</span ><span > </span ><span class="annot" ><a href="Types.html#Quux" ><span class="hs-identifier hs-type" >Quux</span ></a ></span ><span class="hs-special" >)</span ><span > </span ><span id="line-24" ></span ><span class="hs-keyword" >type</span ><span > </span ><span class="hs-keyword" >instance</span ><span > </span ><span id="Norf%27" ><span class="annot" ><a href="Types.html#Norf%27" ><span class="hs-identifier hs-var" >Norf'</span ></a ></span ></span ><span > </span ><span class="annot" ><a href="Types.html#Quux" ><span class="hs-identifier hs-type" >Quux</span ></a ></span ><span > </span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span class="hs-glyph" >=</span ><span > </span ><span class="hs-special" >(</span ><span class="annot" ><a href="Types.html#Quux" ><span class="hs-identifier hs-type" >Quux</span ></a ></span ><span class="hs-special" >,</span ><span > </span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span class="hs-special" >)</span ><span > </span ><span id="line-25" ></span ><span > </span ><span id="line-26" ></span ><span > </span ><span id="line-27" ></span ><span class="annot" ><a href="Types.html#norf1" ><span class="hs-identifier hs-type" >norf1</span ></a ></span ><span > </span ><span class="hs-glyph" >::</span ><span > </span ><span class="annot" ><a href="Types.html#Norf" ><span class="hs-identifier hs-type" >Norf</span ></a ></span ><span > </span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span class="annot" ><a href="Types.html#Quux" ><span class="hs-identifier hs-type" >Quux</span ></a ></span ><span > </span ><span class="hs-glyph" >-></span ><span > </span ><span class="annot" ><span class="hs-identifier hs-type" >Int</span ></span ><span > </span ><span id="line-28" ></span ><span id="norf1" ><span class="annot" ><span class="annottext" >norf1 :: Norf Foo Quux -> Int </span ><a href="Types.html#norf1" ><span class="hs-identifier hs-var hs-var" >norf1</span ></a ></span ></span ><span > </span ><span class="hs-special" >(</span ><span class="annot" ><a href="Types.html#NFQ" ><span class="hs-identifier hs-type" >NFQ</span ></a ></span ><span > </span ><span class="hs-special" >(</span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span class="hs-special" >(</span ><span class="hs-special" >)</span ><span class="hs-special" >)</span ><span > </span ><span class="annot" ><span class="annottext" >Quux </span ><a href="Types.html#Bar" ><span class="hs-identifier hs-var" >Bar</span ></a ></span ><span class="hs-special" >)</span ><span > </span ><span class="hs-glyph" >=</span ><span > </span ><span class="annot" ><span class="annottext" >Int </span ><span class="hs-number" >0</span ></span ><span > </span ><span id="line-29" ></span ><span class="annot" ><a href="Types.html#norf1" ><span class="hs-identifier hs-var" >norf1</span ></a ></span ><span > </span ><span class="hs-special" >(</span ><span class="annot" ><a href="Types.html#NFQ" ><span class="hs-identifier hs-type" >NFQ</span ></a ></span ><span > </span ><span class="hs-special" >(</span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span class="hs-special" >(</span ><span class="hs-special" >)</span ><span class="hs-special" >)</span ><span > </span ><span class="annot" ><span class="annottext" >Quux </span ><a href="Types.html#Baz" ><span class="hs-identifier hs-var" >Baz</span ></a ></span ><span class="hs-special" >)</span ><span > </span ><span class="hs-glyph" >=</span ><span > </span ><span class="annot" ><span class="annottext" >Int </span ><span class="hs-number" >1</span ></span ><span > </span ><span id="line-30" ></span ><span > </span ><span id="line-31" ></span ><span class="annot" ><a href="Types.html#norf2" ><span class="hs-identifier hs-type" >norf2</span ></a ></span ><span > </span ><span class="hs-glyph" >::</span ><span > </span ><span class="annot" ><a href="Types.html#Norf" ><span class="hs-identifier hs-type" >Norf</span ></a ></span ><span > </span ><span class="annot" ><a href="Types.html#Quux" ><span class="hs-identifier hs-type" >Quux</span ></a ></span ><span > </span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span class="hs-glyph" >-></span ><span > </span ><span class="annot" ><span class="hs-identifier hs-type" >Int</span ></span ><span > </span ><span id="line-32" ></span ><span id="norf2" ><span class="annot" ><span class="annottext" >norf2 :: Norf Quux Foo -> Int </span ><a href="Types.html#norf2" ><span class="hs-identifier hs-var hs-var" >norf2</span ></a ></span ></span ><span > </span ><span class="hs-special" >(</span ><span class="annot" ><a href="Types.html#NQF" ><span class="hs-identifier hs-type" >NQF</span ></a ></span ><span > </span ><span class="annot" ><span class="annottext" >Quux </span ><a href="Types.html#Bar" ><span class="hs-identifier hs-var" >Bar</span ></a ></span ><span > </span ><span class="hs-special" >(</span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span class="hs-special" >(</span ><span class="hs-special" >)</span ><span class="hs-special" >)</span ><span class="hs-special" >)</span ><span > </span ><span class="hs-glyph" >=</span ><span > </span ><span class="annot" ><span class="annottext" >Int </span ><span class="hs-number" >0</span ></span ><span > </span ><span id="line-33" ></span ><span class="annot" ><a href="Types.html#norf2" ><span class="hs-identifier hs-var" >norf2</span ></a ></span ><span > </span ><span class="hs-special" >(</span ><span class="annot" ><a href="Types.html#NQF" ><span class="hs-identifier hs-type" >NQF</span ></a ></span ><span > </span ><span class="annot" ><span class="annottext" >Quux </span ><a href="Types.html#Baz" ><span class="hs-identifier hs-var" >Baz</span ></a ></span ><span > </span ><span class="hs-special" >(</span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span class="hs-special" >(</span ><span class="hs-special" >)</span ><span class="hs-special" >)</span ><span class="hs-special" >)</span ><span > </span ><span class="hs-glyph" >=</span ><span > </span ><span class="annot" ><span class="annottext" >Int </span ><span class="hs-number" >1</span ></span ><span > </span ><span id="line-34" ></span ><span > </span ><span id="line-35" ></span ><span > </span ><span id="line-36" ></span ><span class="annot" ><a href="Types.html#norf1%27" ><span class="hs-identifier hs-type" >norf1'</span ></a ></span ><span > </span ><span class="hs-glyph" >::</span ><span > </span ><span class="annot" ><a href="Types.html#Norf%27" ><span class="hs-identifier hs-type" >Norf'</span ></a ></span ><span > </span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span class="annot" ><a href="Types.html#Quux" ><span class="hs-identifier hs-type" >Quux</span ></a ></span ><span > </span ><span class="hs-glyph" >-></span ><span > </span ><span class="annot" ><span class="hs-identifier hs-type" >Int</span ></span ><span > </span ><span id="line-37" ></span ><span id="norf1%27" ><span class="annot" ><span class="annottext" >norf1' :: Norf' Foo Quux -> Int </span ><a href="Types.html#norf1%27" ><span class="hs-identifier hs-var hs-var" >norf1'</span ></a ></span ></span ><span > </span ><span class="hs-special" >(</span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span class="hs-special" >(</span ><span class="hs-special" >)</span ><span class="hs-special" >,</span ><span > </span ><span class="annot" ><span class="annottext" >Quux </span ><a href="Types.html#Bar" ><span class="hs-identifier hs-var" >Bar</span ></a ></span ><span class="hs-special" >)</span ><span > </span ><span class="hs-glyph" >=</span ><span > </span ><span class="annot" ><span class="annottext" >Int </span ><span class="hs-number" >0</span ></span ><span > </span ><span id="line-38" ></span ><span class="annot" ><a href="Types.html#norf1%27" ><span class="hs-identifier hs-var" >norf1'</span ></a ></span ><span > </span ><span class="hs-special" >(</span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span class="hs-special" >(</span ><span class="hs-special" >)</span ><span class="hs-special" >,</span ><span > </span ><span class="annot" ><span class="annottext" >Quux </span ><a href="Types.html#Baz" ><span class="hs-identifier hs-var" >Baz</span ></a ></span ><span class="hs-special" >)</span ><span > </span ><span class="hs-glyph" >=</span ><span > </span ><span class="annot" ><span class="annottext" >Int </span ><span class="hs-number" >1</span ></span ><span > </span ><span id="line-39" ></span ><span > </span ><span id="line-40" ></span ><span class="annot" ><a href="Types.html#norf2%27" ><span class="hs-identifier hs-type" >norf2'</span ></a ></span ><span > </span ><span class="hs-glyph" >::</span ><span > </span ><span class="annot" ><a href="Types.html#Norf%27" ><span class="hs-identifier hs-type" >Norf'</span ></a ></span ><span > </span ><span class="annot" ><a href="Types.html#Quux" ><span class="hs-identifier hs-type" >Quux</span ></a ></span ><span > </span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span class="hs-glyph" >-></span ><span > </span ><span class="annot" ><span class="hs-identifier hs-type" >Int</span ></span ><span > </span ><span id="line-41" ></span ><span id="norf2%27" ><span class="annot" ><span class="annottext" >norf2' :: Norf' Quux Foo -> Int </span ><a href="Types.html#norf2%27" ><span class="hs-identifier hs-var hs-var" >norf2'</span ></a ></span ></span ><span > </span ><span class="hs-special" >(</span ><span class="annot" ><span class="annottext" >Quux </span ><a href="Types.html#Bar" ><span class="hs-identifier hs-var" >Bar</span ></a ></span ><span class="hs-special" >,</span ><span > </span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span class="hs-special" >(</span ><span class="hs-special" >)</span ><span class="hs-special" >)</span ><span > </span ><span class="hs-glyph" >=</span ><span > </span ><span class="annot" ><span class="annottext" >Int </span ><span class="hs-number" >0</span ></span ><span > </span ><span id="line-42" ></span ><span class="annot" ><a href="Types.html#norf2%27" ><span class="hs-identifier hs-var" >norf2'</span ></a ></span ><span > </span ><span class="hs-special" >(</span ><span class="annot" ><span class="annottext" >Quux </span ><a href="Types.html#Baz" ><span class="hs-identifier hs-var" >Baz</span ></a ></span ><span class="hs-special" >,</span ><span > </span ><span class="annot" ><a href="Types.html#Foo" ><span class="hs-identifier hs-type" >Foo</span ></a ></span ><span > </span ><span class="hs-special" >(</span ><span class="hs-special" >)</span ><span class="hs-special" >)</span ><span > </span ><span class="hs-glyph" >=</span ><span > </span ><span class="annot" ><span class="annottext" >Int </span ><span class="hs-number" >1</span ></span ><span > </span ><span id="line-43" ></span ></pre ></body ></html >