First commit

This commit is contained in:
Chris Done 2014-03-01 19:51:02 +01:00
commit ed39bee596
34 changed files with 6149 additions and 0 deletions

2
.ghci Executable file
View file

@ -0,0 +1,2 @@
:set -isrc
:set -hide-package monads-tf

9
.gitignore vendored Normal file
View file

@ -0,0 +1,9 @@
*.o
*.hi
*~
dist/
cabal-dev/
.hsenv
TAGS
tags
*.tag

24
LICENSE Normal file
View file

@ -0,0 +1,24 @@
Copyright (c) 2014, haskell-lang
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of haskell-lang nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

4
README.md Normal file
View file

@ -0,0 +1,4 @@
haskell-lang
=====
Haskell web site.

2
Setup.hs Normal file
View file

@ -0,0 +1,2 @@
import Distribution.Simple
main = defaultMain

2
config/routes Normal file
View file

@ -0,0 +1,2 @@
/static StaticR Static appStatic
/ HomeR GET

867
design/design.svg Normal file
View file

@ -0,0 +1,867 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1852.36"
height="1488.189"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="design.svg">
<defs
id="defs4">
<linearGradient
id="linearGradient6175">
<stop
style="stop-color:#f9f6ff;stop-opacity:1;"
offset="0"
id="stop6177" />
<stop
style="stop-color:#f9f6ff;stop-opacity:0;"
offset="1"
id="stop6179" />
</linearGradient>
<linearGradient
id="linearGradient6027">
<stop
style="stop-color:#4f4371;stop-opacity:1;"
offset="0"
id="stop6029" />
<stop
style="stop-color:#6e5d9d;stop-opacity:1;"
offset="1"
id="stop6031" />
</linearGradient>
<linearGradient
id="linearGradient6021"
osb:paint="solid">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6023" />
</linearGradient>
<linearGradient
id="linearGradient4579">
<stop
id="stop4581"
offset="0"
style="stop-color:#4f4371;stop-opacity:0.24705882;" />
<stop
id="stop4583"
offset="1"
style="stop-color:#4f4371;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient4567">
<stop
style="stop-color:#4f4371;stop-opacity:0.24705882;"
offset="0"
id="stop4577" />
<stop
style="stop-color:#4f4371;stop-opacity:0;"
offset="1"
id="stop4571" />
</linearGradient>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3848">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 1353,-1167.6374 143,217.99996 -139,218 26,12 434,2 -74,-113 c 0,0 161,-27 157,-26 -4,1 -54,-203.99996 -54,-203.99996 l -298,-92 -57,-26 z"
id="path3850"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3854">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 575,-882.63744 -148,-230.99996 -136,5 7,27 130,200.99996 -140,226 145,0 143,-219 z"
id="path3856"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3854-8">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 575,-882.63744 -148,-230.99996 -136,5 7,27 130,200.99996 -140,226 145,0 143,-219 z"
id="path3856-8"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3924">
<path
style="fill:#ffffff;stroke:none"
d="m 1354.5147,-1165.4256 144.7711,218.92217 -153.5986,231.28072 446.6719,-5.2965 -28.2481,-35.31004 -293.0732,-434.31345 z"
id="path3926"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3953">
<path
style="fill:#4f4371;fill-opacity:1;stroke:none"
d="m 1375.3258,-1364.6093 -150.0676,-234.8117 287.7767,12.3585 1.7656,213.6257 z"
id="path3955"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3953-0">
<path
style="fill:#4f4371;fill-opacity:1;stroke:none"
d="m 1375.3258,-1364.6093 -150.0676,-234.8117 287.7767,12.3585 1.7656,213.6257 z"
id="path3955-1"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3953-0-9">
<path
style="fill:#4f4371;fill-opacity:1;stroke:none"
d="m 1375.3258,-1364.6093 -150.0676,-234.8117 287.7767,12.3585 1.7656,213.6257 z"
id="path3955-1-6"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3924-0">
<path
style="fill:#ffffff;stroke:none"
d="m 1354.5147,-1165.4256 144.7711,218.92217 -153.5986,231.28072 446.6719,-5.2965 -28.2481,-35.31004 -293.0732,-434.31345 z"
id="path3926-1"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3854-8-0">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 575,-882.63744 -148,-230.99996 -136,5 7,27 130,200.99996 -140,226 145,0 143,-219 z"
id="path3856-8-7"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3953-0-9-1">
<path
style="fill:#4f4371;fill-opacity:1;stroke:none"
d="m 1375.3258,-1364.6093 -150.0676,-234.8117 287.7767,12.3585 1.7656,213.6257 z"
id="path3955-1-6-8"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3953-0-9-1-9">
<path
style="fill:#4f4371;fill-opacity:1;stroke:none"
d="m 1375.3258,-1364.6093 -150.0676,-234.8117 287.7767,12.3585 1.7656,213.6257 z"
id="path3955-1-6-8-0"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3854-8-0-2">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 575,-882.63744 -148,-230.99996 -136,5 7,27 130,200.99996 -140,226 145,0 143,-219 z"
id="path3856-8-7-6"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3924-0-8">
<path
style="fill:#ffffff;stroke:none"
d="m 1354.5147,-1165.4256 144.7711,218.92217 -153.5986,231.28072 446.6719,-5.2965 -28.2481,-35.31004 -293.0732,-434.31345 z"
id="path3926-1-5"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3953-0-9-1-1">
<path
style="fill:#4f4371;fill-opacity:1;stroke:none"
d="m 1375.3258,-1364.6093 -150.0676,-234.8117 287.7767,12.3585 1.7656,213.6257 z"
id="path3955-1-6-8-8"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3854-8-0-9">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 575,-882.63744 -148,-230.99996 -136,5 7,27 130,200.99996 -140,226 145,0 143,-219 z"
id="path3856-8-7-8"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3924-0-2">
<path
style="fill:#ffffff;stroke:none"
d="m 1354.5147,-1165.4256 144.7711,218.92217 -153.5986,231.28072 446.6719,-5.2965 -28.2481,-35.31004 -293.0732,-434.31345 z"
id="path3926-1-7"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3924-0-1">
<path
style="fill:#ffffff;stroke:none"
d="m 1354.5147,-1165.4256 144.7711,218.92217 -153.5986,231.28072 446.6719,-5.2965 -28.2481,-35.31004 -293.0732,-434.31345 z"
id="path3926-1-2"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3854-8-0-29">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 575,-882.63744 -148,-230.99996 -136,5 7,27 130,200.99996 -140,226 145,0 143,-219 z"
id="path3856-8-7-4"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3953-0-9-1-5">
<path
style="fill:#4f4371;fill-opacity:1;stroke:none"
d="m 1375.3258,-1364.6093 -150.0676,-234.8117 287.7767,12.3585 1.7656,213.6257 z"
id="path3955-1-6-8-1"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3924-0-1-0">
<path
style="fill:#ffffff;stroke:none"
d="m 1354.5147,-1165.4256 144.7711,218.92217 -153.5986,231.28072 446.6719,-5.2965 -28.2481,-35.31004 -293.0732,-434.31345 z"
id="path3926-1-2-4"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3854-8-0-29-5">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 575,-882.63744 -148,-230.99996 -136,5 7,27 130,200.99996 -140,226 145,0 143,-219 z"
id="path3856-8-7-4-2"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3953-0-9-1-5-7">
<path
style="fill:#4f4371;fill-opacity:1;stroke:none"
d="m 1375.3258,-1364.6093 -150.0676,-234.8117 287.7767,12.3585 1.7656,213.6257 z"
id="path3955-1-6-8-1-7"
inkscape:connector-curvature="0" />
</clipPath>
<filter
inkscape:collect="always"
id="filter4426"
color-interpolation-filters="sRGB">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="4.4552154"
id="feGaussianBlur4428" />
</filter>
<filter
color-interpolation-filters="sRGB"
inkscape:collect="always"
id="filter4426-1">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="4.4552154"
id="feGaussianBlur4428-1" />
</filter>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3924-0-1-0-7">
<path
style="fill:#ffffff;stroke:none"
d="m 1354.5147,-1165.4256 144.7711,218.92217 -153.5986,231.28072 446.6719,-5.2965 -28.2481,-35.31004 -293.0732,-434.31345 z"
id="path3926-1-2-4-1"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3854-8-0-29-5-3">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 575,-882.63744 -148,-230.99996 -136,5 7,27 130,200.99996 -140,226 145,0 143,-219 z"
id="path3856-8-7-4-2-0"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3953-0-9-1-5-7-5">
<path
style="fill:#4f4371;fill-opacity:1;stroke:none"
d="m 1375.3258,-1364.6093 -150.0676,-234.8117 287.7767,12.3585 1.7656,213.6257 z"
id="path3955-1-6-8-1-7-6"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3924-0-1-2">
<path
style="fill:#ffffff;stroke:none"
d="m 1354.5147,-1165.4256 144.7711,218.92217 -153.5986,231.28072 446.6719,-5.2965 -28.2481,-35.31004 -293.0732,-434.31345 z"
id="path3926-1-2-6"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3854-8-0-29-50">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 575,-882.63744 -148,-230.99996 -136,5 7,27 130,200.99996 -140,226 145,0 143,-219 z"
id="path3856-8-7-4-6"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3953-0-9-1-5-0">
<path
style="fill:#4f4371;fill-opacity:1;stroke:none"
d="m 1375.3258,-1364.6093 -150.0676,-234.8117 287.7767,12.3585 1.7656,213.6257 z"
id="path3955-1-6-8-1-2"
inkscape:connector-curvature="0" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6027"
id="linearGradient6035"
x1="1345.6873"
y1="-946.31982"
x2="1792.3591"
y2="-946.31982"
gradientUnits="userSpaceOnUse" />
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3953-0-9-1-5-0-2">
<path
style="fill:#4f4371;fill-opacity:1;stroke:none"
d="m 1375.3258,-1364.6093 -150.0676,-234.8117 287.7767,12.3585 1.7656,213.6257 z"
id="path3955-1-6-8-1-2-4"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3854-8-0-29-50-9">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 575,-882.63744 -148,-230.99996 -136,5 7,27 130,200.99996 -140,226 145,0 143,-219 z"
id="path3856-8-7-4-6-2"
inkscape:connector-curvature="0" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6027-6"
id="linearGradient6035-0"
x1="1345.6873"
y1="-946.31982"
x2="1792.3591"
y2="-946.31982"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient6027-6">
<stop
style="stop-color:#4f4371;stop-opacity:1;"
offset="0"
id="stop6029-6" />
<stop
style="stop-color:#6e5d9d;stop-opacity:1;"
offset="1"
id="stop6031-0" />
</linearGradient>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3924-0-1-2-5">
<path
style="fill:#ffffff;stroke:none"
d="m 1354.5147,-1165.4256 144.7711,218.92217 -153.5986,231.28072 446.6719,-5.2965 -28.2481,-35.31004 -293.0732,-434.31345 z"
id="path3926-1-2-6-2"
inkscape:connector-curvature="0" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6027-6"
id="linearGradient6057"
x1="1345.6873"
y1="-946.31982"
x2="1792.3591"
y2="-946.31982"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient6059">
<stop
style="stop-color:#4f4371;stop-opacity:1;"
offset="0"
id="stop6061" />
<stop
style="stop-color:#6e5d9d;stop-opacity:1;"
offset="1"
id="stop6063" />
</linearGradient>
<filter
color-interpolation-filters="sRGB"
inkscape:collect="always"
id="filter4426-1-7">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="4.4552154"
id="feGaussianBlur4428-1-9" />
</filter>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3924-0-1-0-7-6">
<path
style="fill:#ffffff;stroke:none"
d="m 1354.5147,-1165.4256 144.7711,218.92217 -153.5986,231.28072 446.6719,-5.2965 -28.2481,-35.31004 -293.0732,-434.31345 z"
id="path3926-1-2-4-1-7"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3854-8-0-29-5-3-7">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 575,-882.63744 -148,-230.99996 -136,5 7,27 130,200.99996 -140,226 145,0 143,-219 z"
id="path3856-8-7-4-2-0-9"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3953-0-9-1-5-7-5-0">
<path
style="fill:#4f4371;fill-opacity:1;stroke:none"
d="m 1375.3258,-1364.6093 -150.0676,-234.8117 287.7767,12.3585 1.7656,213.6257 z"
id="path3955-1-6-8-1-7-6-0"
inkscape:connector-curvature="0" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6187-2"
id="linearGradient6193-8"
x1="1020"
y1="101.86254"
x2="1085"
y2="101.86254"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.4307693,0,0,2.7118644,-1624.7472,-1379.2373)" />
<linearGradient
inkscape:collect="always"
id="linearGradient6187-2">
<stop
style="stop-color:#f1eff6;stop-opacity:1;"
offset="0"
id="stop6189-1" />
<stop
style="stop-color:#f1eff6;stop-opacity:0;"
offset="1"
id="stop6191-7" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6027"
id="linearGradient6264"
gradientUnits="userSpaceOnUse"
x1="1345.6873"
y1="-946.31982"
x2="1792.3591"
y2="-946.31982" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6027"
id="linearGradient6266"
gradientUnits="userSpaceOnUse"
x1="1345.6873"
y1="-946.31982"
x2="1792.3591"
y2="-946.31982" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6027-6"
id="linearGradient6268"
gradientUnits="userSpaceOnUse"
x1="1345.6873"
y1="-946.31982"
x2="1792.3591"
y2="-946.31982" />
<filter
color-interpolation-filters="sRGB"
inkscape:collect="always"
id="filter7536">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="4.2040901"
id="feGaussianBlur7538" />
</filter>
<filter
color-interpolation-filters="sRGB"
inkscape:collect="always"
id="filter4426-1-0">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="4.4552154"
id="feGaussianBlur4428-1-3" />
</filter>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3924-0-1-0-7-90">
<path
style="fill:#ffffff;stroke:none"
d="m 1354.5147,-1165.4256 144.7711,218.92217 -153.5986,231.28072 446.6719,-5.2965 -28.2481,-35.31004 -293.0732,-434.31345 z"
id="path3926-1-2-4-1-42"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3854-8-0-29-5-3-9">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 575,-882.63744 -148,-230.99996 -136,5 7,27 130,200.99996 -140,226 145,0 143,-219 z"
id="path3856-8-7-4-2-0-8"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3953-0-9-1-5-7-5-0-4">
<path
style="fill:#4f4371;fill-opacity:1;stroke:none"
d="m 1375.3258,-1364.6093 -150.0676,-234.8117 287.7767,12.3585 1.7656,213.6257 z"
id="path3955-1-6-8-1-7-6-9"
inkscape:connector-curvature="0" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6027-3"
id="linearGradient6266-6"
gradientUnits="userSpaceOnUse"
x1="1345.6873"
y1="-946.31982"
x2="1792.3591"
y2="-946.31982" />
<linearGradient
id="linearGradient6027-3">
<stop
style="stop-color:#4f4371;stop-opacity:1;"
offset="0"
id="stop6029-4" />
<stop
style="stop-color:#6e5d9d;stop-opacity:1;"
offset="1"
id="stop6031-0-2" />
</linearGradient>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3924-0-1-2-76">
<path
style="fill:#ffffff;stroke:none"
d="m 1354.5147,-1165.4256 144.7711,218.92217 -153.5986,231.28072 446.6719,-5.2965 -28.2481,-35.31004 -293.0732,-434.31345 z"
id="path3926-1-2-6-6"
inkscape:connector-curvature="0" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6027-3"
id="linearGradient7510"
gradientUnits="userSpaceOnUse"
x1="1345.6873"
y1="-946.31982"
x2="1792.3591"
y2="-946.31982" />
<linearGradient
id="linearGradient7586">
<stop
style="stop-color:#4f4371;stop-opacity:1;"
offset="0"
id="stop7588" />
<stop
style="stop-color:#6e5d9d;stop-opacity:1;"
offset="1"
id="stop7590" />
</linearGradient>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3854-8-0-29-50-0">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 575,-882.63744 -148,-230.99996 -136,5 7,27 130,200.99996 -140,226 145,0 143,-219 z"
id="path3856-8-7-4-6-2-4"
inkscape:connector-curvature="0" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3953-0-9-1-5-0-5">
<path
style="fill:#4f4371;fill-opacity:1;stroke:none"
d="m 1375.3258,-1364.6093 -150.0676,-234.8117 287.7767,12.3585 1.7656,213.6257 z"
id="path3955-1-6-8-1-2-3"
inkscape:connector-curvature="0" />
</clipPath>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#f1eff6"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="1081.9173"
inkscape:cy="739.33059"
inkscape:document-units="px"
inkscape:current-layer="g3901-3"
showgrid="false"
width="1852.36px"
inkscape:window-width="2880"
inkscape:window-height="1760"
inkscape:window-x="0"
inkscape:window-y="40"
inkscape:window-maximized="0"
showguides="false"
inkscape:guide-bbox="true">
<sodipodi:guide
orientation="1,0"
position="88,2443"
id="guide3766" />
<sodipodi:guide
orientation="1,0"
position="1972,2045"
id="guide3768" />
<sodipodi:guide
orientation="0,1"
position="527,2419"
id="guide3770" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,435.82642)">
<text
xml:space="preserve"
style="font-size:88.67983246px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#323232;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Medium"
x="833.70312"
y="201.72296"
id="text6272"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6274"
x="833.70312"
y="201.72296">Haskell</tspan></text>
<g
id="g6233"
transform="translate(-348,142)">
<g
style="opacity:0.15522389;fill:#000000;stroke:none;filter:url(#filter4426-1)"
transform="matrix(0.37113195,0,0,0.35490421,827.14867,354.13139)"
id="g3901-3-6">
<g
id="text2990-9-7"
style="font-size:417.63537598px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Haskell;-inkscape-font-specification:Haskell"
clip-path="url(#clipPath3924-0-1-0-7)"
transform="matrix(0.58399349,0,0,0.58399349,-155.23786,-363.83566)">
<path
style="fill:#000000;stroke:none"
inkscape:connector-curvature="0"
id="path4234-0-4"
d="m 1238.7188,-737.50216 138.6679,-208.81769 -138.6679,-208.81765 104.4088,0 138.668,208.81765 -138.668,208.81769 -104.4088,0 m 0,0 0,0 m 138.6679,0 139.4837,-208.81769 -139.4837,-208.81765 104.4089,0 278.1517,417.63534 -104.4089,0 -86.4635,-130.51105 -87.2793,130.51105 -104.4089,0 m 0,0 0,0 m 336.066,-121.53842 -46.4946,-70.14969 162.3232,0 0,70.14969 -115.8286,0 m 0,0 0,0 m -69.334,-104.40884 -46.4945,-70.14968 231.6571,0 0,70.14968 -185.1626,0 m 0,0 0,0" />
</g>
<g
id="text2990-2-1-2"
style="font-size:417.63537598px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Haskell;-inkscape-font-specification:Haskell"
clip-path="url(#clipPath3854-8-0-29-5-3)"
transform="matrix(0.58399349,0,0,0.58399349,379.97409,-402.37923)">
<path
style="fill:#000000;stroke:none"
inkscape:connector-curvature="0"
id="path4237-4-8"
d="m 319.71875,-671.81973 138.668,-208.81768 -138.668,-208.81769 104.40884,0 138.668,208.81769 -138.668,208.81768 -104.40884,0 m 0,0 0,0 m 138.668,0 139.48369,-208.81768 -139.48369,-208.81769 104.40884,0 278.15169,417.63537 -104.40885,0 -86.46357,-130.51105 -87.27927,130.51105 -104.40884,0 m 0,0 0,0 m 336.06596,-121.53841 -46.49456,-70.1497 162.32312,0 0,70.1497 -115.82856,0 m 0,0 0,0 m -69.334,-104.40885 -46.49456,-70.14969 231.65712,0 0,70.14969 -185.16256,0 m 0,0 0,0" />
</g>
<g
id="text2990-27-8-7"
style="font-size:417.63537598px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Haskell;-inkscape-font-specification:Haskell"
clip-path="url(#clipPath3953-0-9-1-5-7-5)"
transform="matrix(0.58399349,0,0,0.58399349,43.373964,-49.619889)">
<path
style="fill:#000000;stroke:none"
inkscape:connector-curvature="0"
id="path4240-0-3"
d="m 896.43237,-1273.5352 138.66803,-208.8177 -138.66803,-208.8177 104.40883,0 138.668,208.8177 -138.668,208.8177 -104.40883,0 m 0,0 0,0 m 138.66803,0 139.4837,-208.8177 -139.4837,-208.8177 104.4088,0 278.1517,417.6354 -104.4088,0 -86.4636,-130.5111 -87.2793,130.5111 -104.4088,0 m 0,0 0,0 m 336.0659,-121.5385 -46.4945,-70.1497 162.3231,0 0,70.1497 -115.8286,0 m 0,0 0,0 m -69.334,-104.4088 -46.4945,-70.1497 231.6571,0 0,70.1497 -185.1626,0 m 0,0 0,0" />
</g>
</g>
<g
style="stroke:#ffffff;stroke-width:4.11809635;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
transform="matrix(0.37113195,0,0,0.35490421,827.8207,354.45165)"
id="g3901-3">
<g
id="text2990-9"
style="font-size:417.63537598px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient6266);fill-opacity:1;stroke:#ffffff;stroke-width:7.05161333;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Haskell;-inkscape-font-specification:Haskell"
clip-path="url(#clipPath3924-0-1-2)"
transform="matrix(0.58399349,0,0,0.58399349,-155.23786,-363.83566)">
<path
style="fill:url(#linearGradient6264);fill-opacity:1;stroke:#ffffff;stroke-width:7.05161333;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
id="path4234-0"
d="m 1238.7188,-737.50216 138.6679,-208.81769 -138.6679,-208.81765 104.4088,0 138.668,208.81765 -138.668,208.81769 -104.4088,0 m 0,0 0,0 m 138.6679,0 139.4837,-208.81769 -139.4837,-208.81765 104.4089,0 278.1517,417.63534 -104.4089,0 -86.4635,-130.51105 -87.2793,130.51105 -104.4089,0 m 0,0 0,0 m 336.066,-121.53842 -46.4946,-70.14969 162.3232,0 0,70.14969 -115.8286,0 m 0,0 0,0 m -69.334,-104.40884 -46.4945,-70.14968 231.6571,0 0,70.14968 -185.1626,0 m 0,0 0,0" />
</g>
<g
id="text2990-2-1"
style="font-size:417.63537598px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#453a62;fill-opacity:1;stroke:#ffffff;stroke-width:7.05161333;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Haskell;-inkscape-font-specification:Haskell"
clip-path="url(#clipPath3854-8-0-29-50)"
transform="matrix(0.58399349,0,0,0.58399349,379.97409,-402.37923)">
<path
style="stroke:#ffffff;stroke-width:7.05161333;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
id="path4237-4"
d="m 319.71875,-671.81973 138.668,-208.81768 -138.668,-208.81769 104.40884,0 138.668,208.81769 -138.668,208.81768 -104.40884,0 m 0,0 0,0 m 138.668,0 139.48369,-208.81768 -139.48369,-208.81769 104.40884,0 278.15169,417.63537 -104.40885,0 -86.46357,-130.51105 -87.27927,130.51105 -104.40884,0 m 0,0 0,0 m 336.06596,-121.53841 -46.49456,-70.1497 162.32312,0 0,70.1497 -115.82856,0 m 0,0 0,0 m -69.334,-104.40885 -46.49456,-70.14969 231.65712,0 0,70.14969 -185.16256,0 m 0,0 0,0" />
</g>
<g
id="text2990-27-8"
style="font-size:417.63537598px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#8f4e8b;fill-opacity:1;stroke:#ffffff;stroke-width:7.05161333;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Haskell;-inkscape-font-specification:Haskell"
clip-path="url(#clipPath3953-0-9-1-5-0)"
transform="matrix(0.58399349,0,0,0.58399349,43.373964,-49.619889)">
<path
style="stroke:#ffffff;stroke-width:7.05161333;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
id="path4240-0"
d="m 896.43237,-1273.5352 138.66803,-208.8177 -138.66803,-208.8177 104.40883,0 138.668,208.8177 -138.668,208.8177 -104.40883,0 m 0,0 0,0 m 138.66803,0 139.4837,-208.8177 -139.4837,-208.8177 104.4088,0 278.1517,417.6354 -104.4088,0 -86.4636,-130.5111 -87.2793,130.5111 -104.4088,0 m 0,0 0,0 m 336.0659,-121.5385 -46.4945,-70.1497 162.3231,0 0,70.1497 -115.8286,0 m 0,0 0,0 m -69.334,-104.4088 -46.4945,-70.1497 231.6571,0 0,70.1497 -185.1626,0 m 0,0 0,0" />
</g>
<rect
style="opacity:0.45373134;color:#000000;fill:#323232;fill-opacity:0.09717868;fill-rule:nonzero;stroke:none;stroke-width:7;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect7376"
width="6"
height="11"
x="1089"
y="662.18896"
transform="matrix(2.6944595,0,0,2.8176617,-1292.8574,-2626.8442)"
rx="14.002699"
ry="11" />
<text
xml:space="preserve"
style="font-size:137.18835449px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;line-height:125%;letter-spacing:6.6699996px;word-spacing:0px;opacity:0.25400002;fill:#323232;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter7536);font-family:Ubuntu;-inkscape-font-specification:Ubuntu Medium"
x="228.27711"
y="126.65849"
id="text6272-8"
sodipodi:linespacing="125%"
transform="matrix(2.6944595,0,0,2.8176617,183.60222,-549.34544)"><tspan
sodipodi:role="line"
id="tspan6274-2"
x="228.27711"
y="126.65849">Haskell</tspan></text>
<g
style="opacity:0.15522389;fill:#000000;stroke:none;filter:url(#filter4426-1-0)"
transform="matrix(1.5470073,0,0,1.5470073,-676.52644,1073.9393)"
id="g3901-3-6-6">
<g
id="text2990-9-7-1"
style="font-size:417.63537598px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Haskell;-inkscape-font-specification:Haskell"
clip-path="url(#clipPath3924-0-1-0-7-90)"
transform="matrix(0.58399349,0,0,0.58399349,-155.23786,-363.83566)">
<path
style="fill:#000000;stroke:none"
inkscape:connector-curvature="0"
id="path4234-0-4-9"
d="m 1238.7188,-737.50216 138.6679,-208.81769 -138.6679,-208.81765 104.4088,0 138.668,208.81765 -138.668,208.81769 -104.4088,0 m 0,0 0,0 m 138.6679,0 139.4837,-208.81769 -139.4837,-208.81765 104.4089,0 278.1517,417.63534 -104.4089,0 -86.4635,-130.51105 -87.2793,130.51105 -104.4089,0 m 0,0 0,0 m 336.066,-121.53842 -46.4946,-70.14969 162.3232,0 0,70.14969 -115.8286,0 m 0,0 0,0 m -69.334,-104.40884 -46.4945,-70.14968 231.6571,0 0,70.14968 -185.1626,0 m 0,0 0,0" />
</g>
<g
id="text2990-2-1-2-7"
style="font-size:417.63537598px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Haskell;-inkscape-font-specification:Haskell"
clip-path="url(#clipPath3854-8-0-29-5-3-9)"
transform="matrix(0.58399349,0,0,0.58399349,379.97409,-402.37923)">
<path
style="fill:#000000;stroke:none"
inkscape:connector-curvature="0"
id="path4237-4-8-8"
d="m 319.71875,-671.81973 138.668,-208.81768 -138.668,-208.81769 104.40884,0 138.668,208.81769 -138.668,208.81768 -104.40884,0 m 0,0 0,0 m 138.668,0 139.48369,-208.81768 -139.48369,-208.81769 104.40884,0 278.15169,417.63537 -104.40885,0 -86.46357,-130.51105 -87.27927,130.51105 -104.40884,0 m 0,0 0,0 m 336.06596,-121.53841 -46.49456,-70.1497 162.32312,0 0,70.1497 -115.82856,0 m 0,0 0,0 m -69.334,-104.40885 -46.49456,-70.14969 231.65712,0 0,70.14969 -185.16256,0 m 0,0 0,0" />
</g>
<g
id="text2990-27-8-7-3"
style="font-size:417.63537598px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Haskell;-inkscape-font-specification:Haskell"
clip-path="url(#clipPath3953-0-9-1-5-7-5-0-4)"
transform="matrix(0.58399349,0,0,0.58399349,43.373964,-49.619889)">
<path
style="fill:#000000;stroke:none"
inkscape:connector-curvature="0"
id="path4240-0-3-6"
d="m 896.43237,-1273.5352 138.66803,-208.8177 -138.66803,-208.8177 104.40883,0 138.668,208.8177 -138.668,208.8177 -104.40883,0 m 0,0 0,0 m 138.66803,0 139.4837,-208.8177 -139.4837,-208.8177 104.4088,0 278.1517,417.6354 -104.4088,0 -86.4636,-130.5111 -87.2793,130.5111 -104.4088,0 m 0,0 0,0 m 336.0659,-121.5385 -46.4945,-70.1497 162.3231,0 0,70.1497 -115.8286,0 m 0,0 0,0 m -69.334,-104.4088 -46.4945,-70.1497 231.6571,0 0,70.1497 -185.1626,0 m 0,0 0,0" />
</g>
</g>
<g
id="text2990-9-4"
style="font-size:417.63537598px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient6266-6);fill-opacity:1;stroke:#ffffff;stroke-width:7.05161333;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Haskell;-inkscape-font-specification:Haskell"
clip-path="url(#clipPath3924-0-1-2-76)"
transform="matrix(0.90344221,0,0,0.90344226,-913.87934,512.47886)">
<path
style="fill:url(#linearGradient7510);fill-opacity:1;stroke:#ffffff;stroke-width:7.05161333;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
id="path4234-0-1"
d="m 1238.7188,-737.50216 138.6679,-208.81769 -138.6679,-208.81765 104.4088,0 138.668,208.81765 -138.668,208.81769 -104.4088,0 m 0,0 0,0 m 138.6679,0 139.4837,-208.81769 -139.4837,-208.81765 104.4089,0 278.1517,417.63534 -104.4089,0 -86.4635,-130.51105 -87.2793,130.51105 -104.4089,0 m 0,0 0,0 m 336.066,-121.53842 -46.4946,-70.14969 162.3232,0 0,70.14969 -115.8286,0 m 0,0 0,0 m -69.334,-104.40884 -46.4945,-70.14968 231.6571,0 0,70.14968 -185.1626,0 m 0,0 0,0" />
</g>
<g
id="text2990-2-1-6"
style="font-size:417.63537598px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#453a62;fill-opacity:1;stroke:#ffffff;stroke-width:7.05161333;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Haskell;-inkscape-font-specification:Haskell"
clip-path="url(#clipPath3854-8-0-29-50-0)"
transform="matrix(0.90344221,0,0,0.90344226,-85.902439,452.85176)">
<path
style="stroke:#ffffff;stroke-width:7.05161333;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
id="path4237-4-9"
d="m 319.71875,-671.81973 138.668,-208.81768 -138.668,-208.81769 104.40884,0 138.668,208.81769 -138.668,208.81768 -104.40884,0 m 0,0 0,0 m 138.668,0 139.48369,-208.81768 -139.48369,-208.81769 104.40884,0 278.15169,417.63537 -104.40885,0 -86.46357,-130.51105 -87.27927,130.51105 -104.40884,0 m 0,0 0,0 m 336.06596,-121.53841 -46.49456,-70.1497 162.32312,0 0,70.1497 -115.82856,0 m 0,0 0,0 m -69.334,-104.40885 -46.49456,-70.14969 231.65712,0 0,70.14969 -185.16256,0 m 0,0 0,0" />
</g>
<g
id="text2990-27-8-4"
style="font-size:417.63537598px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#8f4e8b;fill-opacity:1;stroke:#ffffff;stroke-width:7.05161333;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Haskell;-inkscape-font-specification:Haskell"
clip-path="url(#clipPath3953-0-9-1-5-0-5)"
transform="matrix(0.90344221,0,0,0.90344226,-606.62534,998.57303)">
<path
style="stroke:#ffffff;stroke-width:7.05161333;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0"
id="path4240-0-8"
d="m 896.43237,-1273.5352 138.66803,-208.8177 -138.66803,-208.8177 104.40883,0 138.668,208.8177 -138.668,208.8177 -104.40883,0 m 0,0 0,0 m 138.66803,0 139.4837,-208.8177 -139.4837,-208.8177 104.4088,0 278.1517,417.6354 -104.4088,0 -86.4636,-130.5111 -87.2793,130.5111 -104.4088,0 m 0,0 0,0 m 336.0659,-121.5385 -46.4945,-70.1497 162.3231,0 0,70.1497 -115.8286,0 m 0,0 0,0 m -69.334,-104.4088 -46.4945,-70.1497 231.6571,0 0,70.1497 -185.1626,0 m 0,0 0,0" />
</g>
<text
sodipodi:linespacing="125%"
id="text7524"
y="-188.20992"
x="816.74115"
style="font-size:378.00497437px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;line-height:125%;letter-spacing:18.37833023px;word-spacing:0px;fill:#323232;fill-opacity:1;stroke:#ffffff;stroke-width:4.68413258;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Medium"
xml:space="preserve"
transform="scale(0.97789316,1.0226066)"><tspan
y="-188.20992"
x="816.74115"
id="tspan7526"
sodipodi:role="line"
style="stroke-width:4.68413258">Haskell</tspan></text>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 39 KiB

1110
design/drawing.svg Normal file

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 39 KiB

2338
design/landing.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 703 KiB

1315
design/layout.svg Normal file

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 51 KiB

27
hl.cabal Normal file
View file

@ -0,0 +1,27 @@
name: hl
version: 0.0.0
synopsis: Haskell web site.
description: Haskell web site.
license: BSD3
license-file: LICENSE
author: Chris Done
maintainer: chrisdone@gmail.com
copyright: 2014 Chris Done
category: Web
build-type: Simple
cabal-version: >=1.8
executable hl
hs-source-dirs: src/
ghc-options: -Wall -O2
main-is: Main.hs
build-depends: wai-logger == 2.1.1,
fast-logger == 2.1.5,
yesod-core == 1.2.6.4,
text == 0.11.3.1,
lifted-base == 0.2.1.1,
yesod == 1.2.4,
yesod-static == 1.2.2.1,
base >= 4 && < 5,
foreign-store == 0.0,
blaze == 0.0.2

75
hl.org Normal file
View file

@ -0,0 +1,75 @@
* What do all existing language sites have?
** A theme
** Logo
** Menu
*** Download
- Platform http://www.haskell.org/platform/
- GHC https://www.haskell.org/ghc/
- Hackage http://hackage.haskell.org/
*** Community
*** Documentation
*** News
** Visual things
*** Opening paragraph
**** Python
Python is a programming language that lets you work quickly and
integrate systems more effectively.
**** Ruby
Ruby is...
A dynamic, open source programming language with a focus on simplicity
and productivity. It has an elegant syntax that is natural to read and
easy to write.
**** Clojure
Clojure is a dynamic programming language that targets the Java
Virtual Machine (and the CLR, and JavaScript). It is designed to be a
general-purpose language, combining the approachability and
interactive development of a scripting language with an efficient and
robust infrastructure for multithreaded programming. Clojure is a
compiled language - it compiles directly to JVM bytecode, yet remains
completely dynamic. Every feature supported by Clojure is supported at
runtime. Clojure provides easy access to the Java frameworks, with
optional type hints and type inference, to ensure that calls to Java
can avoid reflection.
**** F#
F# is a mature, open source, cross-platform, functional-first
programming language which empowers users and organizations to tackle
complex computing problems with simple, maintainable and robust code.
F# runs on Linux, Mac OS X, Android, iOS, Windows as well as HTML5 and
GPUs. F# is free to use and has an OSI-approved open source license.
F# is used in a wide range of application areas and is supported by
both industry-leading companies providing professional tools, and by
an active open community.
The F# Software Foundation exists to promote, protect, and advance F#,
and to support and foster the growth of a diverse international
community of F# users.
**** Haskell.org
Haskell is an advanced purely-functional programming language. An
open-source product of more than twenty years of cutting-edge
research, it allows rapid development of robust, concise, correct
software. With strong support for integration with other languages,
built-in concurrency and parallelism, debuggers, profilers, rich
libraries and an active community, Haskell makes it easier to produce
flexible, maintainable, high-quality software.
**** Scala
Have the best of both worlds. Construct elegant class hierarchies for
maximum code reuse and extensibility, implement their behavior using
higher-order functions. Or anything in-between.
*** Code sample
*** Thumbnails of videos
*** Pictures of community stuff
*** Screenshots
*** Selling points
- I like python.org's menu which shows Web Programming, GUI
Development, etc. and then next to each the library one would use
to accomplish that task.
- Linux, OS X, Windows.
*** News
*** Twitter
*** Supporters
** Other links
*** Application areas / success stories
*** Language options
** Footer with more links

2
src/.dir-locals.el Normal file
View file

@ -0,0 +1,2 @@
((haskell-mode . ((haskell-process-use-ghci . t)
(haskell-indent-spaces . 2))))

9
src/Blaze/Prelude.hs Normal file
View file

@ -0,0 +1,9 @@
-- | A prelude for when using blaze-html.
module Blaze.Prelude
(module Blaze
,module Prelude)
where
import Blaze
import Prelude hiding (head,div,max,span,id)

3
src/HL.hs Normal file
View file

@ -0,0 +1,3 @@
-- | Haskell web site.
module HL where

10
src/HL/C/Home.hs Normal file
View file

@ -0,0 +1,10 @@
-- | Home page controller.
module HL.C.Home where
import HL.Foundation
import HL.V.Home
-- | Home controller.
getHomeR :: Handler Html
getHomeR = blaze homeV

11
src/HL/Dispatch.hs Normal file
View file

@ -0,0 +1,11 @@
{-# OPTIONS -fno-warn-orphans -fno-warn-name-shadowing #-}
{-# LANGUAGE TemplateHaskell #-}
-- | Make the dispatcher.
module HL.Dispatch where
import HL.Foundation
import HL.C.Home
mkYesodDispatch "App" resourcesApp

39
src/HL/Foundation.hs Normal file
View file

@ -0,0 +1,39 @@
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS -fno-warn-name-shadowing #-}
-- | Yesod foundation.
module HL.Foundation
(module HL.Static
,module Yesod.Blaze
,App(..)
,Route(..)
,Handler
,Widget
,resourcesApp)
where
import HL.Static
import Network.Wai.Logger
import System.Log.FastLogger
import Yesod
import Yesod.Blaze
import Yesod.Core.Types
import Yesod.Static
-- | Application state.
data App = App
{ appStatic :: Static
}
-- | Generate boilerplate.
mkYesodData "App" $(parseRoutesFile "config/routes")
-- | Don't log anything to stdout.
instance Yesod App where
makeLogger _ = do set <- newFileLoggerSet 1000 "/dev/null"
(date,_) <- clockDateCacher
return (Logger {loggerSet = set
,loggerDate = date})

17
src/HL/Server.hs Normal file
View file

@ -0,0 +1,17 @@
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TemplateHaskell #-}
-- | Web server.
module HL.Server where
import HL.Foundation
import HL.Dispatch ()
import Yesod.Static
-- | Start the web server.
startServer :: IO ()
startServer =
do s <- static "static"
warp 1990 (App s)

7
src/HL/Static.hs Normal file
View file

@ -0,0 +1,7 @@
{-# LANGUAGE TemplateHaskell #-}
-- | Static files.
module HL.Static where
import Yesod.Static
staticFiles "static/"

23
src/HL/V/Home.hs Normal file
View file

@ -0,0 +1,23 @@
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE NoImplicitPrelude #-}
-- | Home page view.
module HL.V.Home where
import HL.Foundation
import HL.V.Template
import Blaze.Elements as E
import Blaze.Prelude
import Blaze.Bootstrap
-- | Home view.
homeV :: Blaze App
homeV =
template
(\url ->
container
(row
(span12
(do h1 "hi"
with a [class_ "btn btn-primary"] "test"))))

52
src/HL/V/Template.hs Normal file
View file

@ -0,0 +1,52 @@
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE NoImplicitPrelude #-}
-- | Templates.
module HL.V.Template where
import HL.Foundation
import Blaze.Elements as E
import Blaze.Attributes as A
import Blaze.Prelude
import Blaze.Bootstrap
-- | Render a template.
template :: Blaze App -- ^ Content.
-> Blaze App
template content url =
docTypeHtml
(do head
(do E.title "Haskell"
with meta [charset "utf-8"]
with meta [httpEquiv "X-UA-Compatible",A.content "IE edge"]
with meta [name "viewport",A.content "width=device-width, initial-scale=1"]
styles [css_bootstrap_min_css
,css_bootstrap_theme_min_css])
body
(do with div
[class_ "wrap"]
(do content url
with div
[class_ "footer"]
(container
(row
(span12
(with div
[class_ "muted credit"]
"Footer")))))
scripts [js_jquery_js
,js_jquery_cookie_js
,js_bootstrap_min_js]))
where
scripts =
mapM_ (\route ->
with script
[src (url (StaticR route))]
(return ()))
styles =
mapM_ (\route ->
with link
[rel "stylesheet"
,type_ "text/css"
,href (url (StaticR route))])

12
src/Main.hs Normal file
View file

@ -0,0 +1,12 @@
-- | Main entry point to haskell-lang.
--
-- Haskell web site.
module Main where
import HL.Server
-- | Main entry point.
main :: IO ()
main =
startServer

18
src/Yesod/Blaze.hs Normal file
View file

@ -0,0 +1,18 @@
-- | Useful utilities for using blaze-html with Yesod.
module Yesod.Blaze
(module Yesod.Blaze
,module Yesod
,module Blaze)
where
import Yesod hiding (object)
import Blaze
type Blaze a = (Route a -> AttributeValue) -> Html
-- | Output some blaze, passes a URL renderer to the continuation.
blaze :: MonadHandler m => ((Route (HandlerSite m) -> AttributeValue) -> b) -> m b
blaze f =
do render <- getUrlRender
return (f (toValue . render))

7
static/css/bootstrap-theme.min.css vendored Normal file

File diff suppressed because one or more lines are too long

7
static/css/bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

6
static/js/bootstrap.min.js vendored Normal file

File diff suppressed because one or more lines are too long

117
static/js/jquery.cookie.js Normal file
View file

@ -0,0 +1,117 @@
/*!
* jQuery Cookie Plugin v1.4.0
* https://github.com/carhartl/jquery-cookie
*
* Copyright 2013 Klaus Hartl
* Released under the MIT license
*/
(function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// CommonJS
factory(require('jquery'));
} else {
// Browser globals
factory(jQuery);
}
}(function ($) {
var pluses = /\+/g;
function encode(s) {
return config.raw ? s : encodeURIComponent(s);
}
function decode(s) {
return config.raw ? s : decodeURIComponent(s);
}
function stringifyCookieValue(value) {
return encode(config.json ? JSON.stringify(value) : String(value));
}
function parseCookieValue(s) {
if (s.indexOf('"') === 0) {
// This is a quoted cookie as according to RFC2068, unescape...
s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
}
try {
// Replace server-side written pluses with spaces.
// If we can't decode the cookie, ignore it, it's unusable.
// If we can't parse the cookie, ignore it, it's unusable.
s = decodeURIComponent(s.replace(pluses, ' '));
return config.json ? JSON.parse(s) : s;
} catch(e) {}
}
function read(s, converter) {
var value = config.raw ? s : parseCookieValue(s);
return $.isFunction(converter) ? converter(value) : value;
}
var config = $.cookie = function (key, value, options) {
// Write
if (value !== undefined && !$.isFunction(value)) {
options = $.extend({}, config.defaults, options);
if (typeof options.expires === 'number') {
var days = options.expires, t = options.expires = new Date();
t.setTime(+t + days * 864e+5);
}
return (document.cookie = [
encode(key), '=', stringifyCookieValue(value),
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
options.path ? '; path=' + options.path : '',
options.domain ? '; domain=' + options.domain : '',
options.secure ? '; secure' : ''
].join(''));
}
// Read
var result = key ? undefined : {};
// To prevent the for loop in the first place assign an empty array
// in case there are no cookies at all. Also prevents odd result when
// calling $.cookie().
var cookies = document.cookie ? document.cookie.split('; ') : [];
for (var i = 0, l = cookies.length; i < l; i++) {
var parts = cookies[i].split('=');
var name = decode(parts.shift());
var cookie = parts.join('=');
if (key && key === name) {
// If second argument (value) is a function it's a converter...
result = read(cookie, value);
break;
}
// Prevent storing a cookie that we couldn't decode.
if (!key && (cookie = read(cookie)) !== undefined) {
result[name] = cookie;
}
}
return result;
};
config.defaults = {};
$.removeCookie = function (key, options) {
if ($.cookie(key) === undefined) {
return false;
}
// Must not alter options, thus extending a fresh object...
$.cookie(key, '', $.extend({}, options, { expires: -1 }));
return !$.cookie(key);
};
}));

4
static/js/jquery.js vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,15 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
This is a custom SVG font generated by IcoMoon.
<iconset grid="16"></iconset>
</metadata>
<defs>
<font id="Haskell" horiz-adv-x="512" >
<font-face units-per-em="512" ascent="480" descent="-32" />
<missing-glyph horiz-adv-x="512" />
<glyph class="hidden" unicode="&#xf000;" d="M0,480L 512 -32L0 -32 z" horiz-adv-x="0" />
<glyph unicode="&#xe000;" d="M 0-31.643 L 170.431,224.002 L 0,479.646 L 127.822,479.646 L 298.254,224.002 L 127.822-31.643 L 0-31.643 Z M 0-31.643 M 170.431-31.643 L 340.864,224.002 L 170.431,479.646 L 298.254,479.646 L 639.112-31.643 L 511.289-31.643 L 404.775,128.131 L 298.254-31.643 L 170.431-31.643 Z M 170.431-31.643 M 582.305,117.481 L 525.499,202.693 L 724.331,202.699 L 724.331,117.481 L 582.305,117.481 Z M 582.305,117.481 M 497.092,245.304 L 440.279,330.516 L 724.331,330.522 L 724.331,245.304 L 497.092,245.304 Z M 497.092,245.304 " horiz-adv-x="724.329" data-tags="Haskell-Logo" />
<glyph unicode="&#x20;" horiz-adv-x="256" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

View file

@ -0,0 +1,15 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
This is a custom SVG font generated by IcoMoon.
<iconset grid="16"></iconset>
</metadata>
<defs>
<font id="Haskell" horiz-adv-x="512" >
<font-face units-per-em="512" ascent="480" descent="-32" />
<missing-glyph horiz-adv-x="512" />
<glyph class="hidden" unicode="&#xf000;" d="M0,480L 512 -32L0 -32 z" horiz-adv-x="0" />
<glyph unicode="&#xe000;" d="M 0-31.643 L 170.431,224.002 L 0,479.646 L 127.822,479.646 L 298.254,224.002 L 127.822-31.643 L 0-31.643 Z M 0-31.643 M 170.431-31.643 L 340.864,224.002 L 170.431,479.646 L 298.254,479.646 L 639.112-31.643 L 511.289-31.643 L 404.775,128.131 L 298.254-31.643 L 170.431-31.643 Z M 170.431-31.643 M 582.305,117.481 L 525.499,202.693 L 724.331,202.699 L 724.331,117.481 L 582.305,117.481 Z M 582.305,117.481 M 497.092,245.304 L 440.279,330.516 L 724.331,330.522 L 724.331,245.304 L 497.092,245.304 Z M 497.092,245.304 " horiz-adv-x="724.329" />
<glyph unicode="&#x20;" horiz-adv-x="256" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Binary file not shown.