ProxN (empty) → 0.0.1
raw patch · 128 files changed
+1102/−0 lines, 128 filesdep +basedep +mtlsetup-changedbinary-added
Dependencies added: base, mtl
Files
- .git/COMMIT_EDITMSG +1/−0
- .git/HEAD +1/−0
- .git/ORIG_HEAD +1/−0
- .git/config +11/−0
- .git/description +1/−0
- .git/hooks/applypatch-msg.sample +15/−0
- .git/hooks/commit-msg.sample +24/−0
- .git/hooks/post-update.sample +8/−0
- .git/hooks/pre-applypatch.sample +14/−0
- .git/hooks/pre-commit.sample +50/−0
- .git/hooks/pre-rebase.sample +169/−0
- .git/hooks/prepare-commit-msg.sample +36/−0
- .git/hooks/update.sample +128/−0
- .git/index binary
- .git/info/exclude +6/−0
- .git/logs/HEAD +7/−0
- .git/logs/refs/heads/master +7/−0
- .git/logs/refs/remotes/origin/master +5/−0
- .git/objects/00/b10b39f0cc77308f54f0fbb2b028397aac6a10 +4/−0
- .git/objects/06/fd435aaf8a10558151c4be78128eb5788611c3 binary
- .git/objects/07/e90904d0b1fdba9607654a71ca9a19ba89eafa binary
- .git/objects/0d/557788667f248ca931e7028bc7ba397c87fcb1 binary
- .git/objects/0f/32ae80b78ab303c463382b06b91fff13506053 binary
- .git/objects/12/3e534b572f11b5e49b4af896ee0e25ba1262ec binary
- .git/objects/19/c89282b62be0fc9fedb582157b41630bef329b binary
- .git/objects/26/c273af232d38a327bf30c0ea9f8c6d4659da6c binary
- .git/objects/29/b8366661b78592e9b944f9c27a2fd7a1defb2d binary
- .git/objects/2a/7fef7cbb1c9a8c7d4c9c77fab7dee5e6332de2 binary
- .git/objects/37/e47c18313d1c919fcfe7ddd731b3f841dbe47b binary
- .git/objects/39/8e74abe25c3c58fbc771798c5c1b7c27c58d24 binary
- .git/objects/3c/588612900da0a6c88dc3f9c1c7b45d2e72a653 binary
- .git/objects/42/3628620e0e687b7198d457b74588f4caa2afec binary
- .git/objects/46/e67c4f953106736bc602cd65a2abce6d606cef binary
- .git/objects/5a/d9178110928a7042ec30a847242040c926edd1 binary
- .git/objects/5f/b1a0bc8779cc8740d5ef3ede513c645a6e8a3d binary
- .git/objects/62/20fb07d9b4d91d13edfbb84e8ba7d02ed6dd92 binary
- .git/objects/65/0a8fe94d7394d3715fbf93a7497a4486b05cbd +5/−0
- .git/objects/76/84b63d04b74e58f9f9205681a63eae283d36bb +3/−0
- .git/objects/82/e3a754b6a0fcb238b03c0e47d05219fbf9cf89 binary
- .git/objects/83/4e1c743de59f4940c7533b3e3b7c848dbee19b binary
- .git/objects/85/7c54c007917e49cf3ff111f0d6a93f248183f0 binary
- .git/objects/85/c62c1e8f074244a50ba454157738eae96a0ae2 binary
- .git/objects/8d/50d2c1e71e4d35746b2e246f4dbc2c6dbdc6ad binary
- .git/objects/8d/fda0fd31f3cd684948aa52d50595feea7c01f7 binary
- .git/objects/90/c82970b4a64430b234a38430ce6334d9fc5a20 binary
- .git/objects/93/c52a9c1add5c6dc6497e866c19a4c779c96e90 binary
- .git/objects/94/414d3c0c39187c9d654ea727bf9a8844077827 binary
- .git/objects/99/aa7053731bd1edc38de046779e8c96964e8f33 binary
- .git/objects/9a/aeda6a684e8d2bbaf610ece69dce0aa14cafb9 binary
- .git/objects/a3/d98a5a5638a76009521993f83ca7831f8daf79 binary
- .git/objects/a4/8da3430018abd5c0ccf471d5876843406589ef binary
- .git/objects/a5/4dd0c4585cd807a1eea43857fbf3c020612315 binary
- .git/objects/a5/de91949523b3162cf69f3365b5914deb6c7b01 binary
- .git/objects/a6/41bc6c77212e090f4a550220875c5169bc1f32 +2/−0
- .git/objects/a7/e3ec3b8e91966177e7fc8282031439724012a3 +4/−0
- .git/objects/a9/1990e597f74fb4530f1832879dcf34802c7ffb binary
- .git/objects/ab/35f9ca0d521602a819057c6b5854cb02e10f77 binary
- .git/objects/ab/db1d36582253483bd1cecd8131398539ffd675 +3/−0
- .git/objects/af/33d1ad16cfb32309ba703dd720591faae18a75 binary
- .git/objects/b0/a19fe6ac543d144ff54c62c3e255592fefc824 binary
- .git/objects/b4/aab4150265d809e9c0bcd437da8c76baf13058 binary
- .git/objects/b4/fc60fc8dd90d22930683fae609f7d3661ca571 binary
- .git/objects/b6/aef187ba379602722f4a62cde5621c23634f1d binary
- .git/objects/bb/4251f0ad31bd03b9479cc582162eeff7c7255e binary
- .git/objects/bd/8de172513662ff38c63599dcaf544606e17846 binary
- .git/objects/be/d4499975954938cfeefa9196b446deea51df3a binary
- .git/objects/c2/81c8ebc9cd4d512e6383de5d7201c3e0a59e8e binary
- .git/objects/c9/0db81e7bf359e9f4d65993d39462e403a1c6d3 binary
- .git/objects/d6/b9dc0d1415d869aeb957352de64c138d32e1b1 binary
- .git/objects/d8/8c0a87ef2830d566e48dc3a32204feb57c3198 binary
- .git/objects/d9/6a9d2f81e91ad399aae42719effb5a87550f29 binary
- .git/objects/d9/6c73c3864fa48a1d500d232d8949d5d5978746 +4/−0
- .git/objects/dc/f9fbfc7ff756f42ee7eac86f48e1edf4e3f327 binary
- .git/objects/e0/2d6d61db4c1f442b4703825d9efe2a1c9d637e binary
- .git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 binary
- .git/objects/e6/ffd01a5f6d51978d3a00b7948159107f28d2e2 binary
- .git/objects/e7/f93b04ffa5eddafe27e79bc5e5c01de8bfeb20 binary
- .git/objects/e8/0c4d1d8769cd6de088435182a6cb83cb43c021 +4/−0
- .git/objects/ea/026c3c3470364bb1c01a3d8712aeb4ceed35b8 binary
- .git/objects/ed/84f27853725aa00bb2a896cba49bfc5b4686a0 binary
- .git/objects/ee/c1eebf3349cf071fe2ae94229557093ca9c16c binary
- .git/objects/f0/556be7f3e7351cbf07029cde18588c7fc146f7 +3/−0
- .git/objects/f6/edc26af0f6b0d0c9dbda2d7da11d6f4009e4eb +4/−0
- .git/refs/heads/master +1/−0
- .git/refs/remotes/origin/master +1/−0
- .gitignore +4/−0
- LICENSE +30/−0
- ProxN.cabal +71/−0
- Setup.hs +2/−0
- core too large to diff
- dist/build/Data/ProxN/Peano.hi binary
- dist/build/Data/ProxN/Peano.o binary
- dist/build/Data/ProxN/Peano.p_hi binary
- dist/build/Data/ProxN/Peano.p_o binary
- dist/build/Data/ProxN/Pretty.hi binary
- dist/build/Data/ProxN/Pretty.o binary
- dist/build/Data/ProxN/Pretty.p_hi binary
- dist/build/Data/ProxN/Pretty.p_o binary
- dist/build/Data/ProxN/Proximity.hi binary
- dist/build/Data/ProxN/Proximity.o binary
- dist/build/Data/ProxN/Proximity.p_hi binary
- dist/build/Data/ProxN/Proximity.p_o binary
- dist/build/Data/ProxN/Show1.hi binary
- dist/build/Data/ProxN/Show1.o binary
- dist/build/Data/ProxN/Show1.p_hi binary
- dist/build/Data/ProxN/Show1.p_o binary
- dist/build/Data/ProxN/Tree2N.hi binary
- dist/build/Data/ProxN/Tree2N.o binary
- dist/build/Data/ProxN/Tree2N.p_hi binary
- dist/build/Data/ProxN/Tree2N.p_o binary
- dist/build/Data/ProxN/VecN.hi binary
- dist/build/Data/ProxN/VecN.o binary
- dist/build/Data/ProxN/VecN.p_hi binary
- dist/build/Data/ProxN/VecN.p_o binary
- dist/build/HSProxN-0.0.1.o binary
- dist/build/autogen/Paths_ProxN.hs +29/−0
- dist/build/autogen/cabal_macros.h +16/−0
- dist/build/libHSProxN-0.0.1.a binary
- dist/build/libHSProxN-0.0.1_p.a binary
- dist/package.conf.inplace +2/−0
- dist/setup-config +2/−0
- example/Example.hs +62/−0
- src/Data/ProxN/Peano.hs +34/−0
- src/Data/ProxN/Pretty.hs +53/−0
- src/Data/ProxN/Proximity.hs +26/−0
- src/Data/ProxN/Show1.hs +4/−0
- src/Data/ProxN/Tree2N.hs +172/−0
- src/Data/ProxN/VecN.hs +73/−0
@@ -0,0 +1,1 @@+-Math+Data
@@ -0,0 +1,1 @@+ref: refs/heads/master
@@ -0,0 +1,1 @@+99aa7053731bd1edc38de046779e8c96964e8f33
@@ -0,0 +1,11 @@+[core]+ repositoryformatversion = 0+ filemode = true+ bare = false+ logallrefupdates = true+[remote "origin"]+ url = git@github.com:exFalso/ProxN.git+ fetch = +refs/heads/*:refs/remotes/origin/*+[branch "master"]+ remote = origin+ merge = refs/heads/master
@@ -0,0 +1,1 @@+Unnamed repository; edit this file 'description' to name the repository.
@@ -0,0 +1,15 @@+#!/bin/sh+#+# An example hook script to check the commit log message taken by+# applypatch from an e-mail message.+#+# The hook should exit with non-zero status after issuing an+# appropriate message if it wants to stop the commit. The hook is+# allowed to edit the commit message file.+#+# To enable this hook, rename this file to "applypatch-msg".++. git-sh-setup+test -x "$GIT_DIR/hooks/commit-msg" &&+ exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"}+:
@@ -0,0 +1,24 @@+#!/bin/sh+#+# An example hook script to check the commit log message.+# Called by "git commit" with one argument, the name of the file+# that has the commit message. The hook should exit with non-zero+# status after issuing an appropriate message if it wants to stop the+# commit. The hook is allowed to edit the commit message file.+#+# To enable this hook, rename this file to "commit-msg".++# Uncomment the below to add a Signed-off-by line to the message.+# Doing this in a hook is a bad idea in general, but the prepare-commit-msg+# hook is more suited to it.+#+# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')+# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"++# This example catches duplicate Signed-off-by lines.++test "" = "$(grep '^Signed-off-by: ' "$1" |+ sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {+ echo >&2 Duplicate Signed-off-by lines.+ exit 1+}
@@ -0,0 +1,8 @@+#!/bin/sh+#+# An example hook script to prepare a packed repository for use over+# dumb transports.+#+# To enable this hook, rename this file to "post-update".++exec git update-server-info
@@ -0,0 +1,14 @@+#!/bin/sh+#+# An example hook script to verify what is about to be committed+# by applypatch from an e-mail message.+#+# The hook should exit with non-zero status after issuing an+# appropriate message if it wants to stop the commit.+#+# To enable this hook, rename this file to "pre-applypatch".++. git-sh-setup+test -x "$GIT_DIR/hooks/pre-commit" &&+ exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"}+:
@@ -0,0 +1,50 @@+#!/bin/sh+#+# An example hook script to verify what is about to be committed.+# Called by "git commit" with no arguments. The hook should+# exit with non-zero status after issuing an appropriate message if+# it wants to stop the commit.+#+# To enable this hook, rename this file to "pre-commit".++if git rev-parse --verify HEAD >/dev/null 2>&1+then+ against=HEAD+else+ # Initial commit: diff against an empty tree object+ against=4b825dc642cb6eb9a060e54bf8d69288fbee4904+fi++# If you want to allow non-ascii filenames set this variable to true.+allownonascii=$(git config hooks.allownonascii)++# Redirect output to stderr.+exec 1>&2++# Cross platform projects tend to avoid non-ascii filenames; prevent+# them from being added to the repository. We exploit the fact that the+# printable range starts at the space character and ends with tilde.+if [ "$allownonascii" != "true" ] &&+ # Note that the use of brackets around a tr range is ok here, (it's+ # even required, for portability to Solaris 10's /usr/bin/tr), since+ # the square bracket bytes happen to fall in the designated range.+ test $(git diff --cached --name-only --diff-filter=A -z $against |+ LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0+then+ echo "Error: Attempt to add a non-ascii file name."+ echo+ echo "This can cause problems if you want to work"+ echo "with people on other platforms."+ echo+ echo "To be portable it is advisable to rename the file ..."+ echo+ echo "If you know what you are doing you can disable this"+ echo "check using:"+ echo+ echo " git config hooks.allownonascii true"+ echo+ exit 1+fi++# If there are whitespace errors, print the offending file names and fail.+exec git diff-index --check --cached $against --
@@ -0,0 +1,169 @@+#!/bin/sh+#+# Copyright (c) 2006, 2008 Junio C Hamano+#+# The "pre-rebase" hook is run just before "git rebase" starts doing+# its job, and can prevent the command from running by exiting with+# non-zero status.+#+# The hook is called with the following parameters:+#+# $1 -- the upstream the series was forked from.+# $2 -- the branch being rebased (or empty when rebasing the current branch).+#+# This sample shows how to prevent topic branches that are already+# merged to 'next' branch from getting rebased, because allowing it+# would result in rebasing already published history.++publish=next+basebranch="$1"+if test "$#" = 2+then+ topic="refs/heads/$2"+else+ topic=`git symbolic-ref HEAD` ||+ exit 0 ;# we do not interrupt rebasing detached HEAD+fi++case "$topic" in+refs/heads/??/*)+ ;;+*)+ exit 0 ;# we do not interrupt others.+ ;;+esac++# Now we are dealing with a topic branch being rebased+# on top of master. Is it OK to rebase it?++# Does the topic really exist?+git show-ref -q "$topic" || {+ echo >&2 "No such branch $topic"+ exit 1+}++# Is topic fully merged to master?+not_in_master=`git rev-list --pretty=oneline ^master "$topic"`+if test -z "$not_in_master"+then+ echo >&2 "$topic is fully merged to master; better remove it."+ exit 1 ;# we could allow it, but there is no point.+fi++# Is topic ever merged to next? If so you should not be rebasing it.+only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`+only_next_2=`git rev-list ^master ${publish} | sort`+if test "$only_next_1" = "$only_next_2"+then+ not_in_topic=`git rev-list "^$topic" master`+ if test -z "$not_in_topic"+ then+ echo >&2 "$topic is already up-to-date with master"+ exit 1 ;# we could allow it, but there is no point.+ else+ exit 0+ fi+else+ not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`+ /usr/bin/perl -e '+ my $topic = $ARGV[0];+ my $msg = "* $topic has commits already merged to public branch:\n";+ my (%not_in_next) = map {+ /^([0-9a-f]+) /;+ ($1 => 1);+ } split(/\n/, $ARGV[1]);+ for my $elem (map {+ /^([0-9a-f]+) (.*)$/;+ [$1 => $2];+ } split(/\n/, $ARGV[2])) {+ if (!exists $not_in_next{$elem->[0]}) {+ if ($msg) {+ print STDERR $msg;+ undef $msg;+ }+ print STDERR " $elem->[1]\n";+ }+ }+ ' "$topic" "$not_in_next" "$not_in_master"+ exit 1+fi++exit 0++################################################################++This sample hook safeguards topic branches that have been+published from being rewound.++The workflow assumed here is:++ * Once a topic branch forks from "master", "master" is never+ merged into it again (either directly or indirectly).++ * Once a topic branch is fully cooked and merged into "master",+ it is deleted. If you need to build on top of it to correct+ earlier mistakes, a new topic branch is created by forking at+ the tip of the "master". This is not strictly necessary, but+ it makes it easier to keep your history simple.++ * Whenever you need to test or publish your changes to topic+ branches, merge them into "next" branch.++The script, being an example, hardcodes the publish branch name+to be "next", but it is trivial to make it configurable via+$GIT_DIR/config mechanism.++With this workflow, you would want to know:++(1) ... if a topic branch has ever been merged to "next". Young+ topic branches can have stupid mistakes you would rather+ clean up before publishing, and things that have not been+ merged into other branches can be easily rebased without+ affecting other people. But once it is published, you would+ not want to rewind it.++(2) ... if a topic branch has been fully merged to "master".+ Then you can delete it. More importantly, you should not+ build on top of it -- other people may already want to+ change things related to the topic as patches against your+ "master", so if you need further changes, it is better to+ fork the topic (perhaps with the same name) afresh from the+ tip of "master".++Let's look at this example:++ o---o---o---o---o---o---o---o---o---o "next"+ / / / /+ / a---a---b A / /+ / / / /+ / / c---c---c---c B /+ / / / \ /+ / / / b---b C \ /+ / / / / \ /+ ---o---o---o---o---o---o---o---o---o---o---o "master"+++A, B and C are topic branches.++ * A has one fix since it was merged up to "next".++ * B has finished. It has been fully merged up to "master" and "next",+ and is ready to be deleted.++ * C has not merged to "next" at all.++We would want to allow C to be rebased, refuse A, and encourage+B to be deleted.++To compute (1):++ git rev-list ^master ^topic next+ git rev-list ^master next++ if these match, topic has not merged in next at all.++To compute (2):++ git rev-list master..topic++ if this is empty, it is fully merged to "master".
@@ -0,0 +1,36 @@+#!/bin/sh+#+# An example hook script to prepare the commit log message.+# Called by "git commit" with the name of the file that has the+# commit message, followed by the description of the commit+# message's source. The hook's purpose is to edit the commit+# message file. If the hook fails with a non-zero status,+# the commit is aborted.+#+# To enable this hook, rename this file to "prepare-commit-msg".++# This hook includes three examples. The first comments out the+# "Conflicts:" part of a merge commit.+#+# The second includes the output of "git diff --name-status -r"+# into the message, just before the "git status" output. It is+# commented because it doesn't cope with --amend or with squashed+# commits.+#+# The third example adds a Signed-off-by line to the message, that can+# still be edited. This is rarely a good idea.++case "$2,$3" in+ merge,)+ /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;;++# ,|template,)+# /usr/bin/perl -i.bak -pe '+# print "\n" . `git diff --cached --name-status -r`+# if /^#/ && $first++ == 0' "$1" ;;++ *) ;;+esac++# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')+# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
@@ -0,0 +1,128 @@+#!/bin/sh+#+# An example hook script to blocks unannotated tags from entering.+# Called by "git receive-pack" with arguments: refname sha1-old sha1-new+#+# To enable this hook, rename this file to "update".+#+# Config+# ------+# hooks.allowunannotated+# This boolean sets whether unannotated tags will be allowed into the+# repository. By default they won't be.+# hooks.allowdeletetag+# This boolean sets whether deleting tags will be allowed in the+# repository. By default they won't be.+# hooks.allowmodifytag+# This boolean sets whether a tag may be modified after creation. By default+# it won't be.+# hooks.allowdeletebranch+# This boolean sets whether deleting branches will be allowed in the+# repository. By default they won't be.+# hooks.denycreatebranch+# This boolean sets whether remotely creating branches will be denied+# in the repository. By default this is allowed.+#++# --- Command line+refname="$1"+oldrev="$2"+newrev="$3"++# --- Safety check+if [ -z "$GIT_DIR" ]; then+ echo "Don't run this script from the command line." >&2+ echo " (if you want, you could supply GIT_DIR then run" >&2+ echo " $0 <ref> <oldrev> <newrev>)" >&2+ exit 1+fi++if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then+ echo "Usage: $0 <ref> <oldrev> <newrev>" >&2+ exit 1+fi++# --- Config+allowunannotated=$(git config --bool hooks.allowunannotated)+allowdeletebranch=$(git config --bool hooks.allowdeletebranch)+denycreatebranch=$(git config --bool hooks.denycreatebranch)+allowdeletetag=$(git config --bool hooks.allowdeletetag)+allowmodifytag=$(git config --bool hooks.allowmodifytag)++# check for no description+projectdesc=$(sed -e '1q' "$GIT_DIR/description")+case "$projectdesc" in+"Unnamed repository"* | "")+ echo "*** Project description file hasn't been set" >&2+ exit 1+ ;;+esac++# --- Check types+# if $newrev is 0000...0000, it's a commit to delete a ref.+zero="0000000000000000000000000000000000000000"+if [ "$newrev" = "$zero" ]; then+ newrev_type=delete+else+ newrev_type=$(git cat-file -t $newrev)+fi++case "$refname","$newrev_type" in+ refs/tags/*,commit)+ # un-annotated tag+ short_refname=${refname##refs/tags/}+ if [ "$allowunannotated" != "true" ]; then+ echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2+ echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2+ exit 1+ fi+ ;;+ refs/tags/*,delete)+ # delete tag+ if [ "$allowdeletetag" != "true" ]; then+ echo "*** Deleting a tag is not allowed in this repository" >&2+ exit 1+ fi+ ;;+ refs/tags/*,tag)+ # annotated tag+ if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1+ then+ echo "*** Tag '$refname' already exists." >&2+ echo "*** Modifying a tag is not allowed in this repository." >&2+ exit 1+ fi+ ;;+ refs/heads/*,commit)+ # branch+ if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then+ echo "*** Creating a branch is not allowed in this repository" >&2+ exit 1+ fi+ ;;+ refs/heads/*,delete)+ # delete branch+ if [ "$allowdeletebranch" != "true" ]; then+ echo "*** Deleting a branch is not allowed in this repository" >&2+ exit 1+ fi+ ;;+ refs/remotes/*,commit)+ # tracking branch+ ;;+ refs/remotes/*,delete)+ # delete tracking branch+ if [ "$allowdeletebranch" != "true" ]; then+ echo "*** Deleting a tracking branch is not allowed in this repository" >&2+ exit 1+ fi+ ;;+ *)+ # Anything else (is there anything else?)+ echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2+ exit 1+ ;;+esac++# --- Finished+exit 0
binary file changed (absent → 888 bytes)
@@ -0,0 +1,6 @@+# git ls-files --others --exclude-from=.git/info/exclude+# Lines that start with '#' are comments.+# For a project mostly in C, the following would be a good set of+# exclude patterns (uncomment them if you want to use them):+# *.[oa]+# *~
@@ -0,0 +1,7 @@+0000000000000000000000000000000000000000 99aa7053731bd1edc38de046779e8c96964e8f33 Ex Falso <0slemi0@gmail.com> 1327686767 +0000 commit (initial): gitignore+99aa7053731bd1edc38de046779e8c96964e8f33 a641bc6c77212e090f4a550220875c5169bc1f32 Ex Falso <0slemi0@gmail.com> 1327687092 +0000 commit: works+a641bc6c77212e090f4a550220875c5169bc1f32 b4aab4150265d809e9c0bcd437da8c76baf13058 Ex Falso <0slemi0@gmail.com> 1327708686 +0000 commit: cleaned up a bit+b4aab4150265d809e9c0bcd437da8c76baf13058 8dfda0fd31f3cd684948aa52d50595feea7c01f7 Ex Falso <0slemi0@gmail.com> 1327775249 +0000 commit: added nicer Pretty printing, removed UndecidableInstances+8dfda0fd31f3cd684948aa52d50595feea7c01f7 857c54c007917e49cf3ff111f0d6a93f248183f0 Ex Falso <0slemi0@gmail.com> 1327777658 +0000 commit: cabalised+857c54c007917e49cf3ff111f0d6a93f248183f0 d96c73c3864fa48a1d500d232d8949d5d5978746 Ex Falso <0slemi0@gmail.com> 1327777872 +0000 commit: trallala+d96c73c3864fa48a1d500d232d8949d5d5978746 a5de91949523b3162cf69f3365b5914deb6c7b01 Ex Falso <0slemi0@gmail.com> 1327782730 +0000 commit: -Math+Data
@@ -0,0 +1,7 @@+0000000000000000000000000000000000000000 99aa7053731bd1edc38de046779e8c96964e8f33 Ex Falso <0slemi0@gmail.com> 1327686767 +0000 commit (initial): gitignore+99aa7053731bd1edc38de046779e8c96964e8f33 a641bc6c77212e090f4a550220875c5169bc1f32 Ex Falso <0slemi0@gmail.com> 1327687092 +0000 commit: works+a641bc6c77212e090f4a550220875c5169bc1f32 b4aab4150265d809e9c0bcd437da8c76baf13058 Ex Falso <0slemi0@gmail.com> 1327708686 +0000 commit: cleaned up a bit+b4aab4150265d809e9c0bcd437da8c76baf13058 8dfda0fd31f3cd684948aa52d50595feea7c01f7 Ex Falso <0slemi0@gmail.com> 1327775249 +0000 commit: added nicer Pretty printing, removed UndecidableInstances+8dfda0fd31f3cd684948aa52d50595feea7c01f7 857c54c007917e49cf3ff111f0d6a93f248183f0 Ex Falso <0slemi0@gmail.com> 1327777658 +0000 commit: cabalised+857c54c007917e49cf3ff111f0d6a93f248183f0 d96c73c3864fa48a1d500d232d8949d5d5978746 Ex Falso <0slemi0@gmail.com> 1327777872 +0000 commit: trallala+d96c73c3864fa48a1d500d232d8949d5d5978746 a5de91949523b3162cf69f3365b5914deb6c7b01 Ex Falso <0slemi0@gmail.com> 1327782730 +0000 commit: -Math+Data
@@ -0,0 +1,5 @@+0000000000000000000000000000000000000000 99aa7053731bd1edc38de046779e8c96964e8f33 Ex Falso <0slemi0@gmail.com> 1327686779 +0000 update by push+99aa7053731bd1edc38de046779e8c96964e8f33 a641bc6c77212e090f4a550220875c5169bc1f32 Ex Falso <0slemi0@gmail.com> 1327687099 +0000 update by push+a641bc6c77212e090f4a550220875c5169bc1f32 b4aab4150265d809e9c0bcd437da8c76baf13058 Ex Falso <0slemi0@gmail.com> 1327708697 +0000 update by push+b4aab4150265d809e9c0bcd437da8c76baf13058 857c54c007917e49cf3ff111f0d6a93f248183f0 Ex Falso <0slemi0@gmail.com> 1327777669 +0000 update by push+857c54c007917e49cf3ff111f0d6a93f248183f0 d96c73c3864fa48a1d500d232d8949d5d5978746 Ex Falso <0slemi0@gmail.com> 1327777879 +0000 update by push
@@ -0,0 +1,4 @@+xT]kÛ0ݳšD¦Á0öBX·0XBY×·ÂPcusd!+í²±ÿÞ«§ãd&¶uϽ÷£+ßWõ=·oWÆçø<[Îogó%¯äoQ.ÅÝjq%|ê;ÎÇd]Jà[_ú×þ µ[xÏó4Á_A;Ò¾äõƨ0ËêOªêx¥O?I"׺6ïkeM]å3+¹âV>~hQ+^æ_/ ÝXn©¤+FÕpLwÏÌc¾îƹ;¾Dx:nw ¾`ÙQ/ö÷ã03MÁúÀ°÷ÌkÎðq£V¶6:önëOp0 Md7L¢1΢0d°´h¬éfT>lñ,sÁËÊU<¨CËS59ȾeªLñnÞü¤Ü«ÌFwjIÜãw¤ÃÀu»ð.uGvÜ}ãª^ñ+ìQ÷[%m¤Aª÷V\¨mIµI³Q-GÒv¸½{íÝãÙnÚ:ɱ1X[M¯SLÉJX0:Zå´[Jqõlë¥7©¥1ggäÒªâMM Ç$Ä}G®é0Xçî¦íè+éÂ1zA·ª¦hTIΠλݻnè«°cÓ+ìcÓÁ þ¼ºXx ÁehrôÒOHH8â@,ÓãZ¸õó¿.}(´{Í1MIØ5ÏÜÈ
binary file changed (absent → 204 bytes)
binary file changed (absent → 77 bytes)
binary file changed (absent → 386 bytes)
binary file changed (absent → 84 bytes)
binary file changed (absent → 929 bytes)
binary file changed (absent → 47 bytes)
binary file changed (absent → 352 bytes)
binary file changed (absent → 1609 bytes)
binary file changed (absent → 759 bytes)
binary file changed (absent → 46 bytes)
binary file changed (absent → 83 bytes)
binary file changed (absent → 47 bytes)
binary file changed (absent → 55 bytes)
binary file changed (absent → 852 bytes)
binary file changed (absent → 203 bytes)
binary file changed (absent → 89 bytes)
binary file changed (absent → 148 bytes)
@@ -0,0 +1,5 @@+xAoÛ8 ÷¬_1è©Yé6@/Û-Ñ6YÔT\enXb Ñ òï÷q-°ØBä¼yóÍÛݾ~»ûöGæ_¦þç§ÏíÍÝ__ïRbc753é£;% ;)>i²³lw$Êvýì§~ò½©;:ÍúfwZ¿ìû±^èà¦aNé¹÷䦸ß|2¸®?ômRj&KvzïmG{ê;üCãñc!r<ºç~üI»>ͱh°þï$!üýI]ÍäovZ×YN³Ç¾Í ÙìÝ ÞA!ï[âE?ÓSë¦õ£# hM\ ó{'èxEãÍ ÆìNu1s¶p±ôÿÍÞ- ýε§Á>òëù]8ÜL44ÞN}s/ÜÏ*qe±øjÙK¢<<ÁNÓûï×q±áeÊñ5Anáá ö6tÙ±ÃWHNÁÓà<Òaù:E+Ï*\Ãv5»9+¶0m"Ò>o+á_c6ÏHF1k¡IË¥Ù2Å çJÉ{ó;2kN¬vJ¬ÖֲȹÒÄÊ_K£Ä¢6RéäÓ¨ü/X¹#þ£R\kĦ*Ä ®Xi×)2+ê\« @¥4I!6ÂàilúkÉ%m¸ÊÖPaQ³ý¡×RªQÅY]0EU*©9 ±r¡³ ÏoÑßóÒ^³¢ø8e"·%WÁúõ´àT¶(xhÆ;h*0Íû)8Ø+ÒDW<8¦véYSój<Â%ålÃV\Óçÿ dµâ`t½ÐFÚpZIGΫ{qý+È/©Ö<MrfXl Â5Ü/j-"3Q®T]!ˬw*¡4peFEF¸T» Dö)m×ß±áò04Bëgèä}F*ùª+^f<¸Ae+4¿Áªd ¼eè o"\%ñxXðÅ"I,å÷ÐÈßcõZc"]gë3îÛä_ÞÀØã
@@ -0,0 +1,3 @@+xMKÃ@=çW¼Ð ´,¶P?/%+~\J)i2¥ÛlØlcEüïÎfc4©`÷yßg²j ³óA³itÿ2½¿ÅS¢rJßszµW>î$í^«ÌÐÞè >=o«Ò$<jµ[aÞñ¶!M'¶¹ÒÏ(¾o¯DMÊöÑJ§y.EQò³û`4oK¯e\Èúuú`<ñPµcIL` C+`§·bóVÕÂ3J()±åcX ÎK;3_8}.Ç"×JÇR"-·RÝø¿f¿#ÚíÊӵIJæ5£xÍvDú+Û8òÝf®t%0©5RQcRâöçÌ2ø%Fì]¦ÞÖ)ü|§ þ0`¸dAÁôRE*¥+»ÎåîDZ~µdʼ²=ŤÓÊþÒIw0!#A¦:RæË=?FìiÀ8Öt¿ÙnÅ·öh!ý
binary file changed (absent → 55 bytes)
binary file changed (absent → 818 bytes)
binary file changed (absent → 154 bytes)
binary file changed (absent → 182 bytes)
binary file changed (absent → 870 bytes)
binary file changed (absent → 193 bytes)
binary file changed (absent → 89 bytes)
binary file changed (absent → 264 bytes)
binary file changed (absent → 87 bytes)
binary file changed (absent → 125 bytes)
binary file changed (absent → 1656 bytes)
binary file changed (absent → 1768 bytes)
binary file changed (absent → 84 bytes)
binary file changed (absent → 408 bytes)
binary file changed (absent → 159 bytes)
@@ -0,0 +1,2 @@+xK+Â0@]ç³$éä7 âFï1M¦Zl¤=¾½oùàÁKµ¹Ã`ô®7%[KDÁ³1M"!?Zë³;'dõâ&ÏDÌA;hÆl$'Y´õ!ÄD¼8!*~÷{mpùµÂQ¯Yo çåj9Á!ø4 °×j³Û];õ©í±ªM@¡
@@ -0,0 +1,4 @@+xË+Â0Dݯ¸ +ܸºTÄ+-ºNbbinIRðóM»9Ãt$aw:.êgÛTøÎÖX¡½¤Æ¬Jh¬vR¤!ec"í!a×ÛýÒT/¼Ð÷35Òe÷ÌßNp^JëË^XëÍô]äG+ÆÓÂg9ôùÐÀw6±?3þ
binary file changed (absent → 335 bytes)
binary file changed (absent → 263 bytes)
@@ -0,0 +1,3 @@+xKKÃ@ ]çWpa6H\YT¨º©QP»irK¦0Føß½©µ;ÀÜ×óÝÌáìôäàspÉ(?Æ·xÌtEùÓª¢©0RÌÕ8|ÁBçKE¸¶þHÛ¯\H»Â{A@.*mìvÉ!JÒ)eé¦áZÖhªJÉLXÙð°ßÀpÐ^+Q×(ᮯ..¬Ï^²X.áP¢p}ØK§êÕ?gµJÐPëÊ/à4xÝÌË«×çs,r®P+e¼·ÜVuGâÿÃhg¶Z#^×ÞÖ¼&$ælGæ[Ù£Ð3½2¢Ì+4°©Ê9rY[gÒà®s¶ aa½«¼Å»¡u°ZBG,תiÌ0+´®)Õ9µØÝã\î'Ghk$SæýÙã^Lz£¼á_(½tH0<¿7©¶{XvÜù5ân¼?p5ݶÛrã}çö&Â
binary file changed (absent → 34 bytes)
binary file changed (absent → 264 bytes)
binary file changed (absent → 159 bytes)
binary file changed (absent → 839 bytes)
binary file changed (absent → 379 bytes)
binary file changed (absent → 1601 bytes)
binary file changed (absent → 46 bytes)
binary file changed (absent → 85 bytes)
binary file changed (absent → 147 bytes)
binary file changed (absent → 850 bytes)
binary file changed (absent → 931 bytes)
binary file changed (absent → 672 bytes)
binary file changed (absent → 29 bytes)
@@ -0,0 +1,4 @@+xÁ+B!E[ûîÑñ©Ñ¦þc²±hÏ ÏÏ_è,/çÂIÖuhv7º.-&¡;¸19Bç½ Â£ÞÜå5¦ï£à#z¡²Í3Ü6+lÅñl]_¾úÊekú[ºÂùQy-ÔêI£5~¼Ñ{¨¹Îº!ÿþÔè\+V?D²@
binary file changed (absent → 349 bytes)
binary file changed (absent → 729 bytes)
binary file changed (absent → 15 bytes)
binary file changed (absent → 182 bytes)
binary file changed (absent → 1613 bytes)
@@ -0,0 +1,4 @@+xT]kÛ0ݳšD¦Á0öBØG,¡¬ë[a¨±º)²vÙØï,§ãd&¶uϽ÷£+ß©êÅÛ7Å«?ãs|-ç7³ùGÌ +ù[Kñä¶F|V>Jýçã¿I²®ÊXp÷_Ùê×þ s[xÏó4Á_A;2¡äÕÆ¨Ô`êϺúx¥OÂ$kSY÷v¶RùÌ%WÜÉGÑ-*ÍËü«à¥°Ã±kÇÔQõÓÝ3o »õî/Ñ<·/¸Ê¾`ÙQ/ö÷ã03MÁúÀfïYÐáÓF¯\e3tì9Ý6$à<`@&Én0Dc¼EÍ-ÀÒ¢v¶clQy¿Åk°Ì/.^J.¯xP§(+r}Ï uâݼþI+-¸WnõyÀïH7×í»ÔydaÆsUµâ+ìQ÷-]¤Aª÷V|¨mIM»Ñ-GÒv¸½{íýãÙnÚ:ɱ1X[ͬSLÉ%Ê÷5rÚ-¥Ç8Éf I¶uÈÒÔÞÒ³3ri¥x]GSaâñ ñß+:Î{gº¤i»ºIÍ1zA·ª¦¨uIΠλݻ®é«°cÓ+bÓÁþ¼¦X Ë0äè¥<pÄX¦Çµð#&ç](ú6Ph9÷yc+f·+´Ö<oXÜØ
binary file changed (absent → 840 bytes)
binary file changed (absent → 291 bytes)
binary file changed (absent → 144 bytes)
@@ -0,0 +1,3 @@+xT]kÛ0ݳšD¦ÁeBØG,!¬ë[a¨±º)²lì¿ïÊ]ÅñÂBÀ²î=÷ståY? ¸~sýê÷ôëåÝbùK¡á²ú%ʵx¶-ÞS=Uê;.§dW{)°1ÂÚëy&Yl$¤[ðfoXËñýOªjIñüC$ÕNׯâ]¬©e¾ÐZV[n«'1jÅËüà¥0ã±[Ë-T^P²Ç¼_³6ç+èi7ÓøÕÀØ·f¾/Ø)0;V=Döï§È4ëKýɱVs{µµµÉÙs¾m<ÃyÄ4Mþ1cE~jV`iÑX&¬z<à5XæWW/%×ÒU<©CÛs59Ⱦe¨Tâí¼ùI;]ò 2Ü« f)ò6¿'í§,îÂcê<0iÚqoËzË%Ø=£îwª²©>Úq¡®%iÔ&IÌ^uIÛéñµw/gý´EàЬ«¦w)æäî\Çv@îHi&YïPmYz«³4@qqA.m%o`*t¸~ !î°¡Ë`w:&MÇ Ðßç¸ð¸Èä¯ÑKv§jFäÜà<î·º¥¯BÏfP¸Í;Nl7Çò+èbL`ÑJð.C£7.ñäÀ?e\7¢íäü¯ÅÐ+çA3gLASâO«@gÍ_ÿ?Ò!
@@ -0,0 +1,4 @@+xM±+@DSßWLç$"öéÛ4jäà<sø÷Q³©vy¼éÜØ!ÏòÓ0Þ_PGb^´45g5vó")Õ»vÄE+1QÐWϸTh8Zÿ0Û+$X©£z}V±îÕZûËÿ{åwEßüfD+Îö-<$ÙM½Bþ
@@ -0,0 +1,1 @@+a5de91949523b3162cf69f3365b5914deb6c7b01
@@ -0,0 +1,1 @@+d96c73c3864fa48a1d500d232d8949d5d5978746
@@ -0,0 +1,4 @@+*.hi+*.o+*.bak+bin/
@@ -0,0 +1,30 @@+Copyright (c)2012, Andras Slemmer++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 Andras Slemmer nor the names of other+ 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 THE COPYRIGHT+OWNER OR CONTRIBUTORS 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.
@@ -0,0 +1,71 @@+-- ProxN.cabal auto-generated by cabal init. For additional options,+-- see+-- http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/authors.html#pkg-descr.+-- The name of the package.+Name: ProxN++-- The package version. See the Haskell package versioning policy+-- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for+-- standards guiding when and how versions should be incremented.+Version: 0.0.1++-- A short (one-line) description of the package.+Synopsis: Proximity sets in N dimensions++-- A longer description of the package.+-- Description: ++Homepage: https://github.com/exFalso/ProxN++-- The license under which the package is released.+License: BSD3++-- The file containing the license text.+License-file: LICENSE++-- The package author(s).+Author: Andras Slemmer++-- An email address to which users can send suggestions, bug reports,+-- and patches.+Maintainer: 0slemi0@gmail.com++-- A copyright notice.+-- Copyright: ++Category: Math++Build-type: Simple++-- Extra files to be distributed with the package, such as examples or+-- a README.+-- Extra-source-files: ++-- Constraint on the version of Cabal needed to build this package.+Cabal-version: >=1.2+++Library+ Hs-Source-Dirs:+ src+ -- Modules exported by the library.+ Exposed-modules:+ Data.ProxN.Peano+ Data.ProxN.Pretty+ Data.ProxN.Proximity+ Data.ProxN.Show1+ Data.ProxN.Tree2N+ Data.ProxN.VecN+ + -- Packages needed in order to build this package.+ Build-depends:+ base < 5,+ mtl++ Ghc-Options: -Wall+ -- Modules not exported by this package.+ -- Other-modules: + + -- Extra tools (e.g. alex, hsc2hs, ...) needed to build the source.+ -- Build-tools: +
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
file too large to diff
binary file changed (absent → 4555 bytes)
binary file changed (absent → 10680 bytes)
binary file changed (absent → 4559 bytes)
binary file changed (absent → 18783 bytes)
binary file changed (absent → 20557 bytes)
binary file changed (absent → 28304 bytes)
binary file changed (absent → 20561 bytes)
binary file changed (absent → 55731 bytes)
binary file changed (absent → 1944 bytes)
binary file changed (absent → 6712 bytes)
binary file changed (absent → 1948 bytes)
binary file changed (absent → 13111 bytes)
binary file changed (absent → 824 bytes)
binary file changed (absent → 1344 bytes)
binary file changed (absent → 828 bytes)
binary file changed (absent → 3192 bytes)
binary file changed (absent → 33203 bytes)
binary file changed (absent → 86864 bytes)
binary file changed (absent → 33207 bytes)
binary file changed (absent → 166740 bytes)
binary file changed (absent → 29445 bytes)
binary file changed (absent → 66688 bytes)
binary file changed (absent → 29449 bytes)
binary file changed (absent → 122707 bytes)
binary file changed (absent → 168147 bytes)
@@ -0,0 +1,29 @@+module Paths_ProxN (+ version,+ getBinDir, getLibDir, getDataDir, getLibexecDir,+ getDataFileName+ ) where++import Data.Version (Version(..))+import System.Environment (getEnv)++version :: Version+version = Version {versionBranch = [0,0,1], versionTags = []}++bindir, libdir, datadir, libexecdir :: FilePath++bindir = "/home/exfalso/.cabal/bin"+libdir = "/home/exfalso/.cabal/lib/ProxN-0.0.1/ghc-7.2.2"+datadir = "/home/exfalso/.cabal/share/ProxN-0.0.1"+libexecdir = "/home/exfalso/.cabal/libexec"++getBinDir, getLibDir, getDataDir, getLibexecDir :: IO FilePath+getBinDir = catch (getEnv "ProxN_bindir") (\_ -> return bindir)+getLibDir = catch (getEnv "ProxN_libdir") (\_ -> return libdir)+getDataDir = catch (getEnv "ProxN_datadir") (\_ -> return datadir)+getLibexecDir = catch (getEnv "ProxN_libexecdir") (\_ -> return libexecdir)++getDataFileName :: FilePath -> IO FilePath+getDataFileName name = do+ dir <- getDataDir+ return (dir ++ "/" ++ name)
@@ -0,0 +1,16 @@+/* DO NOT EDIT: This file is automatically generated by Cabal */++/* package base-4.4.1.0 */+#define VERSION_base "4.4.1.0"+#define MIN_VERSION_base(major1,major2,minor) (\+ (major1) < 4 || \+ (major1) == 4 && (major2) < 4 || \+ (major1) == 4 && (major2) == 4 && (minor) <= 1)++/* package mtl-2.0.1.0 */+#define VERSION_mtl "2.0.1.0"+#define MIN_VERSION_mtl(major1,major2,minor) (\+ (major1) < 2 || \+ (major1) == 2 && (major2) < 0 || \+ (major1) == 2 && (major2) == 0 && (minor) <= 1)+
binary file changed (absent → 236132 bytes)
binary file changed (absent → 416394 bytes)
@@ -0,0 +1,2 @@+[InstalledPackageInfo {installedPackageId = InstalledPackageId "ProxN-0.0.1-inplace", sourcePackageId = PackageIdentifier {pkgName = PackageName "ProxN", pkgVersion = Version {versionBranch = [0,0,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "0slemi0@gmail.com", author = "Andras Slemmer", stability = "", homepage = "https://github.com/exFalso/ProxN", pkgUrl = "", synopsis = "", description = "", category = "Math", exposed = True, exposedModules = ["Data.ProxN.Peano","Data.ProxN.Pretty","Data.ProxN.Proximity","Data.ProxN.Show1","Data.ProxN.Tree2N","Data.ProxN.VecN"], hiddenModules = [], trusted = True, importDirs = ["/data/home/pater/Programming/Haskell/ProxN/dist/build"], libraryDirs = ["/data/home/pater/Programming/Haskell/ProxN/dist/build"], hsLibraries = ["HSProxN-0.0.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860",InstalledPackageId "mtl-2.0.1.0-f81ce3282fa6adb03e0cd48bfcccec53"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/data/home/pater/Programming/Haskell/ProxN/dist/doc/html/ProxN/ProxN.haddock"], haddockHTMLs = ["/data/home/pater/Programming/Haskell/ProxN/dist/doc/html/ProxN"]}+]
@@ -0,0 +1,2 @@+Saved package config for ProxN-0.0.1 written by Cabal-1.10.1.0 using ghc-7.0+LocalBuildInfo {configFlags = ConfigFlags {configPrograms = [], configProgramPaths = [], configProgramArgs = [], configHcFlavor = Flag GHC, configHcPath = NoFlag, configHcPkg = NoFlag, configVanillaLib = Flag True, configProfLib = Flag True, configSharedLib = Flag False, configProfExe = Flag True, configConfigureArgs = [], configOptimization = Flag NormalOptimisation, configProgPrefix = Flag "", configProgSuffix = Flag "", configInstallDirs = InstallDirs {prefix = Flag "/home/exfalso/.cabal", bindir = NoFlag, libdir = NoFlag, libsubdir = NoFlag, dynlibdir = NoFlag, libexecdir = NoFlag, progdir = NoFlag, includedir = NoFlag, datadir = NoFlag, datasubdir = NoFlag, docdir = NoFlag, mandir = NoFlag, htmldir = NoFlag, haddockdir = NoFlag}, configScratchDir = NoFlag, configExtraLibDirs = [], configExtraIncludeDirs = [], configDistPref = Flag "dist", configVerbosity = Flag Normal, configUserInstall = Flag True, configPackageDB = NoFlag, configGHCiLib = Flag True, configSplitObjs = Flag False, configStripExes = Flag True, configConstraints = [Dependency (PackageName "base") (ThisVersion (Version {versionBranch = [4,4,1,0], versionTags = []})),Dependency (PackageName "mtl") (ThisVersion (Version {versionBranch = [2,0,1,0], versionTags = []}))], configConfigurationsFlags = [], configTests = Flag False}, extraConfigArgs = [], installDirTemplates = InstallDirs {prefix = "/home/exfalso/.cabal", bindir = "$prefix/bin", libdir = "$prefix/lib", libsubdir = "$pkgid/$compiler", dynlibdir = "$libdir", libexecdir = "$prefix/libexec", progdir = "$libdir/hugs/programs", includedir = "$libdir/$libsubdir/include", datadir = "$prefix/share", datasubdir = "$pkgid", docdir = "$datadir/doc/$pkgid", mandir = "$datadir/man", htmldir = "$docdir/html", haddockdir = "$htmldir"}, compiler = Compiler {compilerId = CompilerId GHC (Version {versionBranch = [7,2,2], versionTags = []}), compilerLanguages = [(Haskell98,"-XHaskell98"),(Haskell2010,"-XHaskell2010")], compilerExtensions = [(UnknownExtension "Haskell98","-XHaskell98"),(UnknownExtension "Haskell2010","-XHaskell2010"),(UnknownExtension "SafeImports","-XSafeImports"),(UnknownExtension "Trustworthy","-XTrustworthy"),(UnknownExtension "Safe","-XSafe"),(CPP,"-XCPP"),(UnknownExtension "NoCPP","-XNoCPP"),(PostfixOperators,"-XPostfixOperators"),(UnknownExtension "NoPostfixOperators","-XNoPostfixOperators"),(TupleSections,"-XTupleSections"),(UnknownExtension "NoTupleSections","-XNoTupleSections"),(PatternGuards,"-XPatternGuards"),(UnknownExtension "NoPatternGuards","-XNoPatternGuards"),(UnicodeSyntax,"-XUnicodeSyntax"),(UnknownExtension "NoUnicodeSyntax","-XNoUnicodeSyntax"),(MagicHash,"-XMagicHash"),(UnknownExtension "NoMagicHash","-XNoMagicHash"),(PolymorphicComponents,"-XPolymorphicComponents"),(UnknownExtension "NoPolymorphicComponents","-XNoPolymorphicComponents"),(ExistentialQuantification,"-XExistentialQuantification"),(UnknownExtension "NoExistentialQuantification","-XNoExistentialQuantification"),(KindSignatures,"-XKindSignatures"),(UnknownExtension "NoKindSignatures","-XNoKindSignatures"),(EmptyDataDecls,"-XEmptyDataDecls"),(UnknownExtension "NoEmptyDataDecls","-XNoEmptyDataDecls"),(ParallelListComp,"-XParallelListComp"),(UnknownExtension "NoParallelListComp","-XNoParallelListComp"),(TransformListComp,"-XTransformListComp"),(UnknownExtension "NoTransformListComp","-XNoTransformListComp"),(UnknownExtension "MonadComprehensions","-XMonadComprehensions"),(UnknownExtension "NoMonadComprehensions","-XNoMonadComprehensions"),(ForeignFunctionInterface,"-XForeignFunctionInterface"),(UnknownExtension "NoForeignFunctionInterface","-XNoForeignFunctionInterface"),(UnliftedFFITypes,"-XUnliftedFFITypes"),(UnknownExtension "NoUnliftedFFITypes","-XNoUnliftedFFITypes"),(UnknownExtension "InterruptibleFFI","-XInterruptibleFFI"),(UnknownExtension "NoInterruptibleFFI","-XNoInterruptibleFFI"),(GHCForeignImportPrim,"-XGHCForeignImportPrim"),(UnknownExtension "NoGHCForeignImportPrim","-XNoGHCForeignImportPrim"),(LiberalTypeSynonyms,"-XLiberalTypeSynonyms"),(UnknownExtension "NoLiberalTypeSynonyms","-XNoLiberalTypeSynonyms"),(Rank2Types,"-XRank2Types"),(UnknownExtension "NoRank2Types","-XNoRank2Types"),(RankNTypes,"-XRankNTypes"),(UnknownExtension "NoRankNTypes","-XNoRankNTypes"),(ImpredicativeTypes,"-XImpredicativeTypes"),(UnknownExtension "NoImpredicativeTypes","-XNoImpredicativeTypes"),(TypeOperators,"-XTypeOperators"),(UnknownExtension "NoTypeOperators","-XNoTypeOperators"),(RecursiveDo,"-XRecursiveDo"),(UnknownExtension "NoRecursiveDo","-XNoRecursiveDo"),(DoRec,"-XDoRec"),(UnknownExtension "NoDoRec","-XNoDoRec"),(Arrows,"-XArrows"),(UnknownExtension "NoArrows","-XNoArrows"),(UnknownExtension "ParallelArrays","-XParallelArrays"),(UnknownExtension "NoParallelArrays","-XNoParallelArrays"),(TemplateHaskell,"-XTemplateHaskell"),(UnknownExtension "NoTemplateHaskell","-XNoTemplateHaskell"),(QuasiQuotes,"-XQuasiQuotes"),(UnknownExtension "NoQuasiQuotes","-XNoQuasiQuotes"),(NoImplicitPrelude,"-XNoImplicitPrelude"),(NoImplicitPrelude,"-XNoImplicitPrelude"),(RecordWildCards,"-XRecordWildCards"),(UnknownExtension "NoRecordWildCards","-XNoRecordWildCards"),(NamedFieldPuns,"-XNamedFieldPuns"),(UnknownExtension "NoNamedFieldPuns","-XNoNamedFieldPuns"),(RecordPuns,"-XRecordPuns"),(UnknownExtension "NoRecordPuns","-XNoRecordPuns"),(DisambiguateRecordFields,"-XDisambiguateRecordFields"),(UnknownExtension "NoDisambiguateRecordFields","-XNoDisambiguateRecordFields"),(OverloadedStrings,"-XOverloadedStrings"),(UnknownExtension "NoOverloadedStrings","-XNoOverloadedStrings"),(GADTs,"-XGADTs"),(UnknownExtension "NoGADTs","-XNoGADTs"),(UnknownExtension "GADTSyntax","-XGADTSyntax"),(UnknownExtension "NoGADTSyntax","-XNoGADTSyntax"),(ViewPatterns,"-XViewPatterns"),(UnknownExtension "NoViewPatterns","-XNoViewPatterns"),(TypeFamilies,"-XTypeFamilies"),(UnknownExtension "NoTypeFamilies","-XNoTypeFamilies"),(BangPatterns,"-XBangPatterns"),(UnknownExtension "NoBangPatterns","-XNoBangPatterns"),(NoMonomorphismRestriction,"-XNoMonomorphismRestriction"),(NoMonomorphismRestriction,"-XNoMonomorphismRestriction"),(NPlusKPatterns,"-XNPlusKPatterns"),(UnknownExtension "NoNPlusKPatterns","-XNoNPlusKPatterns"),(DoAndIfThenElse,"-XDoAndIfThenElse"),(UnknownExtension "NoDoAndIfThenElse","-XNoDoAndIfThenElse"),(RebindableSyntax,"-XRebindableSyntax"),(UnknownExtension "NoRebindableSyntax","-XNoRebindableSyntax"),(NoMonoPatBinds,"-XNoMonoPatBinds"),(NoMonoPatBinds,"-XNoMonoPatBinds"),(ExplicitForAll,"-XExplicitForAll"),(UnknownExtension "NoExplicitForAll","-XNoExplicitForAll"),(UnknownExtension "AlternativeLayoutRule","-XAlternativeLayoutRule"),(UnknownExtension "NoAlternativeLayoutRule","-XNoAlternativeLayoutRule"),(UnknownExtension "AlternativeLayoutRuleTransitional","-XAlternativeLayoutRuleTransitional"),(UnknownExtension "NoAlternativeLayoutRuleTransitional","-XNoAlternativeLayoutRuleTransitional"),(DatatypeContexts,"-XDatatypeContexts"),(UnknownExtension "NoDatatypeContexts","-XNoDatatypeContexts"),(UnknownExtension "NondecreasingIndentation","-XNondecreasingIndentation"),(UnknownExtension "NoNondecreasingIndentation","-XNoNondecreasingIndentation"),(UnknownExtension "RelaxedLayout","-XRelaxedLayout"),(UnknownExtension "NoRelaxedLayout","-XNoRelaxedLayout"),(MonoLocalBinds,"-XMonoLocalBinds"),(UnknownExtension "NoMonoLocalBinds","-XNoMonoLocalBinds"),(RelaxedPolyRec,"-XRelaxedPolyRec"),(UnknownExtension "NoRelaxedPolyRec","-XNoRelaxedPolyRec"),(ExtendedDefaultRules,"-XExtendedDefaultRules"),(UnknownExtension "NoExtendedDefaultRules","-XNoExtendedDefaultRules"),(ImplicitParams,"-XImplicitParams"),(UnknownExtension "NoImplicitParams","-XNoImplicitParams"),(ScopedTypeVariables,"-XScopedTypeVariables"),(UnknownExtension "NoScopedTypeVariables","-XNoScopedTypeVariables"),(PatternSignatures,"-XPatternSignatures"),(UnknownExtension "NoPatternSignatures","-XNoPatternSignatures"),(UnboxedTuples,"-XUnboxedTuples"),(UnknownExtension "NoUnboxedTuples","-XNoUnboxedTuples"),(StandaloneDeriving,"-XStandaloneDeriving"),(UnknownExtension "NoStandaloneDeriving","-XNoStandaloneDeriving"),(DeriveDataTypeable,"-XDeriveDataTypeable"),(UnknownExtension "NoDeriveDataTypeable","-XNoDeriveDataTypeable"),(DeriveFunctor,"-XDeriveFunctor"),(UnknownExtension "NoDeriveFunctor","-XNoDeriveFunctor"),(DeriveTraversable,"-XDeriveTraversable"),(UnknownExtension "NoDeriveTraversable","-XNoDeriveTraversable"),(DeriveFoldable,"-XDeriveFoldable"),(UnknownExtension "NoDeriveFoldable","-XNoDeriveFoldable"),(UnknownExtension "DeriveGeneric","-XDeriveGeneric"),(UnknownExtension "NoDeriveGeneric","-XNoDeriveGeneric"),(UnknownExtension "DefaultSignatures","-XDefaultSignatures"),(UnknownExtension "NoDefaultSignatures","-XNoDefaultSignatures"),(TypeSynonymInstances,"-XTypeSynonymInstances"),(UnknownExtension "NoTypeSynonymInstances","-XNoTypeSynonymInstances"),(FlexibleContexts,"-XFlexibleContexts"),(UnknownExtension "NoFlexibleContexts","-XNoFlexibleContexts"),(FlexibleInstances,"-XFlexibleInstances"),(UnknownExtension "NoFlexibleInstances","-XNoFlexibleInstances"),(ConstrainedClassMethods,"-XConstrainedClassMethods"),(UnknownExtension "NoConstrainedClassMethods","-XNoConstrainedClassMethods"),(MultiParamTypeClasses,"-XMultiParamTypeClasses"),(UnknownExtension "NoMultiParamTypeClasses","-XNoMultiParamTypeClasses"),(FunctionalDependencies,"-XFunctionalDependencies"),(UnknownExtension "NoFunctionalDependencies","-XNoFunctionalDependencies"),(GeneralizedNewtypeDeriving,"-XGeneralizedNewtypeDeriving"),(UnknownExtension "NoGeneralizedNewtypeDeriving","-XNoGeneralizedNewtypeDeriving"),(OverlappingInstances,"-XOverlappingInstances"),(UnknownExtension "NoOverlappingInstances","-XNoOverlappingInstances"),(UndecidableInstances,"-XUndecidableInstances"),(UnknownExtension "NoUndecidableInstances","-XNoUndecidableInstances"),(IncoherentInstances,"-XIncoherentInstances"),(UnknownExtension "NoIncoherentInstances","-XNoIncoherentInstances"),(PackageImports,"-XPackageImports"),(UnknownExtension "NoPackageImports","-XNoPackageImports")]}, buildDir = "dist/build", scratchDir = "dist/scratch", libraryConfig = Just (ComponentLocalBuildInfo {componentPackageDeps = [(InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860",PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,4,1,0], versionTags = []}}),(InstalledPackageId "mtl-2.0.1.0-f81ce3282fa6adb03e0cd48bfcccec53",PackageIdentifier {pkgName = PackageName "mtl", pkgVersion = Version {versionBranch = [2,0,1,0], versionTags = []}})]}), executableConfigs = [], testSuiteConfigs = [], installedPkgs = PackageIndex (fromList [(InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860",InstalledPackageInfo {installedPackageId = InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860", sourcePackageId = PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,4,1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package contains the Prelude and its support libraries,\nand a large collection of useful libraries ranging from data\nstructures to parsing combinators and debugging utilities.", category = "", exposed = True, exposedModules = [ModuleName ["Foreign","Concurrent"],ModuleName ["GHC","Arr"],ModuleName ["GHC","Base"],ModuleName ["GHC","Classes"],ModuleName ["GHC","Conc"],ModuleName ["GHC","Conc","IO"],ModuleName ["GHC","Conc","Signal"],ModuleName ["GHC","Conc","Sync"],ModuleName ["GHC","ConsoleHandler"],ModuleName ["GHC","Constants"],ModuleName ["GHC","Desugar"],ModuleName ["GHC","Enum"],ModuleName ["GHC","Environment"],ModuleName ["GHC","Err"],ModuleName ["GHC","Exception"],ModuleName ["GHC","Exts"],ModuleName ["GHC","Fingerprint"],ModuleName ["GHC","Fingerprint","Type"],ModuleName ["GHC","Float"],ModuleName ["GHC","Float","ConversionUtils"],ModuleName ["GHC","Float","RealFracMethods"],ModuleName ["GHC","Foreign"],ModuleName ["GHC","ForeignPtr"],ModuleName ["GHC","Handle"],ModuleName ["GHC","IO"],ModuleName ["GHC","IO","Buffer"],ModuleName ["GHC","IO","BufferedIO"],ModuleName ["GHC","IO","Device"],ModuleName ["GHC","IO","Encoding"],ModuleName ["GHC","IO","Encoding","CodePage"],ModuleName ["GHC","IO","Encoding","Failure"],ModuleName ["GHC","IO","Encoding","Iconv"],ModuleName ["GHC","IO","Encoding","Latin1"],ModuleName ["GHC","IO","Encoding","Types"],ModuleName ["GHC","IO","Encoding","UTF16"],ModuleName ["GHC","IO","Encoding","UTF32"],ModuleName ["GHC","IO","Encoding","UTF8"],ModuleName ["GHC","IO","Exception"],ModuleName ["GHC","IO","FD"],ModuleName ["GHC","IO","Handle"],ModuleName ["GHC","IO","Handle","FD"],ModuleName ["GHC","IO","Handle","Internals"],ModuleName ["GHC","IO","Handle","Text"],ModuleName ["GHC","IO","Handle","Types"],ModuleName ["GHC","IO","IOMode"],ModuleName ["GHC","IOArray"],ModuleName ["GHC","IOBase"],ModuleName ["GHC","IORef"],ModuleName ["GHC","Int"],ModuleName ["GHC","List"],ModuleName ["GHC","MVar"],ModuleName ["GHC","Num"],ModuleName ["GHC","PArr"],ModuleName ["GHC","Pack"],ModuleName ["GHC","Ptr"],ModuleName ["GHC","Read"],ModuleName ["GHC","Real"],ModuleName ["GHC","ST"],ModuleName ["GHC","Show"],ModuleName ["GHC","Stable"],ModuleName ["GHC","Storable"],ModuleName ["GHC","STRef"],ModuleName ["GHC","TopHandler"],ModuleName ["GHC","Unicode"],ModuleName ["GHC","Weak"],ModuleName ["GHC","Word"],ModuleName ["System","Timeout"],ModuleName ["GHC","Event"],ModuleName ["Control","Applicative"],ModuleName ["Control","Arrow"],ModuleName ["Control","Category"],ModuleName ["Control","Concurrent"],ModuleName ["Control","Concurrent","Chan"],ModuleName ["Control","Concurrent","MVar"],ModuleName ["Control","Concurrent","QSem"],ModuleName ["Control","Concurrent","QSemN"],ModuleName ["Control","Concurrent","SampleVar"],ModuleName ["Control","Exception"],ModuleName ["Control","Exception","Base"],ModuleName ["Control","OldException"],ModuleName ["Control","Monad"],ModuleName ["Control","Monad","Fix"],ModuleName ["Control","Monad","Instances"],ModuleName ["Control","Monad","ST"],ModuleName ["Control","Monad","ST","Safe"],ModuleName ["Control","Monad","ST","Unsafe"],ModuleName ["Control","Monad","ST","Lazy"],ModuleName ["Control","Monad","ST","Lazy","Safe"],ModuleName ["Control","Monad","ST","Lazy","Unsafe"],ModuleName ["Control","Monad","ST","Strict"],ModuleName ["Control","Monad","Group"],ModuleName ["Control","Monad","Zip"],ModuleName ["Data","Bits"],ModuleName ["Data","Bool"],ModuleName ["Data","Char"],ModuleName ["Data","Complex"],ModuleName ["Data","Dynamic"],ModuleName ["Data","Either"],ModuleName ["Data","Eq"],ModuleName ["Data","Data"],ModuleName ["Data","Fixed"],ModuleName ["Data","Foldable"],ModuleName ["Data","Function"],ModuleName ["Data","Functor"],ModuleName ["Data","HashTable"],ModuleName ["Data","IORef"],ModuleName ["Data","Int"],ModuleName ["Data","Ix"],ModuleName ["Data","List"],ModuleName ["Data","Maybe"],ModuleName ["Data","Monoid"],ModuleName ["Data","Ord"],ModuleName ["Data","Ratio"],ModuleName ["Data","STRef"],ModuleName ["Data","STRef","Lazy"],ModuleName ["Data","STRef","Strict"],ModuleName ["Data","String"],ModuleName ["Data","Traversable"],ModuleName ["Data","Tuple"],ModuleName ["Data","Typeable"],ModuleName ["Data","Typeable","Internal"],ModuleName ["Data","Unique"],ModuleName ["Data","Version"],ModuleName ["Data","Word"],ModuleName ["Debug","Trace"],ModuleName ["Foreign"],ModuleName ["Foreign","C"],ModuleName ["Foreign","C","Error"],ModuleName ["Foreign","C","String"],ModuleName ["Foreign","C","Types"],ModuleName ["Foreign","ForeignPtr"],ModuleName ["Foreign","ForeignPtr","Safe"],ModuleName ["Foreign","ForeignPtr","Unsafe"],ModuleName ["Foreign","Marshal"],ModuleName ["Foreign","Marshal","Alloc"],ModuleName ["Foreign","Marshal","Array"],ModuleName ["Foreign","Marshal","Error"],ModuleName ["Foreign","Marshal","Pool"],ModuleName ["Foreign","Marshal","Safe"],ModuleName ["Foreign","Marshal","Utils"],ModuleName ["Foreign","Marshal","Unsafe"],ModuleName ["Foreign","Ptr"],ModuleName ["Foreign","Safe"],ModuleName ["Foreign","StablePtr"],ModuleName ["Foreign","Storable"],ModuleName ["Numeric"],ModuleName ["Prelude"],ModuleName ["System","Console","GetOpt"],ModuleName ["System","CPUTime"],ModuleName ["System","Environment"],ModuleName ["System","Exit"],ModuleName ["System","IO"],ModuleName ["System","IO","Error"],ModuleName ["System","IO","Unsafe"],ModuleName ["System","Info"],ModuleName ["System","Mem"],ModuleName ["System","Mem","StableName"],ModuleName ["System","Mem","Weak"],ModuleName ["System","Posix","Internals"],ModuleName ["System","Posix","Types"],ModuleName ["Text","ParserCombinators","ReadP"],ModuleName ["Text","ParserCombinators","ReadPrec"],ModuleName ["Text","Printf"],ModuleName ["Text","Read"],ModuleName ["Text","Read","Lex"],ModuleName ["Text","Show"],ModuleName ["Text","Show","Functions"],ModuleName ["Unsafe","Coerce"]], hiddenModules = [ModuleName ["GHC","Event","Array"],ModuleName ["GHC","Event","Clock"],ModuleName ["GHC","Event","Control"],ModuleName ["GHC","Event","EPoll"],ModuleName ["GHC","Event","IntMap"],ModuleName ["GHC","Event","Internal"],ModuleName ["GHC","Event","KQueue"],ModuleName ["GHC","Event","Manager"],ModuleName ["GHC","Event","PSQ"],ModuleName ["GHC","Event","Poll"],ModuleName ["GHC","Event","Thread"],ModuleName ["GHC","Event","Unique"],ModuleName ["Control","Monad","ST","Imp"],ModuleName ["Control","Monad","ST","Lazy","Imp"],ModuleName ["Foreign","ForeignPtr","Imp"]], importDirs = ["/usr/lib/ghc-7.2.2/base-4.4.1.0"], libraryDirs = ["/usr/lib/ghc-7.2.2/base-4.4.1.0"], hsLibraries = ["HSbase-4.4.1.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/lib/ghc-7.2.2/base-4.4.1.0/include"], includes = ["HsBase.h"], depends = [InstalledPackageId "ghc-prim-0.2.0.0-14e0c022e5d4efa3a40ab5991f2b2a1b",InstalledPackageId "integer-gmp-0.3.0.0-2e2b0fd56be1a5f60c50913e615691d9",InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/base-4.4.1.0/base.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/base-4.4.1.0"]}),(InstalledPackageId "builtin_ffi",InstalledPackageInfo {installedPackageId = InstalledPackageId "builtin_ffi", sourcePackageId = PackageIdentifier {pkgName = PackageName "ffi", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "glasgow-haskell-users@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "", category = "", exposed = True, exposedModules = [], hiddenModules = [], importDirs = [], libraryDirs = ["/usr/lib/ghc-7.2.2"], hsLibraries = ["HSffi"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/lib/ghc-7.2.2/include"], includes = [], depends = [], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}),(InstalledPackageId "builtin_rts",InstalledPackageInfo {installedPackageId = InstalledPackageId "builtin_rts", sourcePackageId = PackageIdentifier {pkgName = PackageName "rts", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "glasgow-haskell-users@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "", category = "", exposed = True, exposedModules = [], hiddenModules = [], importDirs = [], libraryDirs = ["/usr/lib/ghc-7.2.2"], hsLibraries = ["HSrts"], extraLibraries = ["m","rt","dl"], extraGHCiLibraries = [], includeDirs = ["/usr/lib/ghc-7.2.2/include"], includes = ["Stg.h"], depends = [InstalledPackageId "builtin_ffi"], hugsOptions = [], ccOptions = [], ldOptions = ["-u","ghczmprim_GHCziTypes_Izh_static_info","-u","ghczmprim_GHCziTypes_Czh_static_info","-u","ghczmprim_GHCziTypes_Fzh_static_info","-u","ghczmprim_GHCziTypes_Dzh_static_info","-u","base_GHCziPtr_Ptr_static_info","-u","base_GHCziWord_Wzh_static_info","-u","base_GHCziInt_I8zh_static_info","-u","base_GHCziInt_I16zh_static_info","-u","base_GHCziInt_I32zh_static_info","-u","base_GHCziInt_I64zh_static_info","-u","base_GHCziWord_W8zh_static_info","-u","base_GHCziWord_W16zh_static_info","-u","base_GHCziWord_W32zh_static_info","-u","base_GHCziWord_W64zh_static_info","-u","base_GHCziStable_StablePtr_static_info","-u","ghczmprim_GHCziTypes_Izh_con_info","-u","ghczmprim_GHCziTypes_Czh_con_info","-u","ghczmprim_GHCziTypes_Fzh_con_info","-u","ghczmprim_GHCziTypes_Dzh_con_info","-u","base_GHCziPtr_Ptr_con_info","-u","base_GHCziPtr_FunPtr_con_info","-u","base_GHCziStable_StablePtr_con_info","-u","ghczmprim_GHCziTypes_False_closure","-u","ghczmprim_GHCziTypes_True_closure","-u","base_GHCziPack_unpackCString_closure","-u","base_GHCziIOziException_stackOverflow_closure","-u","base_GHCziIOziException_heapOverflow_closure","-u","base_ControlziExceptionziBase_nonTermination_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnMVar_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnSTM_closure","-u","base_ControlziExceptionziBase_nestedAtomically_closure","-u","base_GHCziWeak_runFinalizzerBatch_closure","-u","base_GHCziTopHandler_runIO_closure","-u","base_GHCziTopHandler_runNonIO_closure","-u","base_GHCziConcziIO_ensureIOManagerIsRunning_closure","-u","base_GHCziConcziSync_runSparks_closure","-u","base_GHCziConcziSignal_runHandlers_closure"], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}),(InstalledPackageId "ghc-prim-0.2.0.0-14e0c022e5d4efa3a40ab5991f2b2a1b",InstalledPackageInfo {installedPackageId = InstalledPackageId "ghc-prim-0.2.0.0-14e0c022e5d4efa3a40ab5991f2b2a1b", sourcePackageId = PackageIdentifier {pkgName = PackageName "ghc-prim", pkgVersion = Version {versionBranch = [0,2,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "GHC primitives.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Prim"],ModuleName ["GHC","Debug"],ModuleName ["GHC","Generics"],ModuleName ["GHC","Magic"],ModuleName ["GHC","Ordering"],ModuleName ["GHC","PrimopWrappers"],ModuleName ["GHC","IntWord32"],ModuleName ["GHC","IntWord64"],ModuleName ["GHC","Tuple"],ModuleName ["GHC","Types"],ModuleName ["GHC","Unit"],ModuleName ["GHC","CString"]], hiddenModules = [], importDirs = ["/usr/lib/ghc-7.2.2/ghc-prim-0.2.0.0"], libraryDirs = ["/usr/lib/ghc-7.2.2/ghc-prim-0.2.0.0"], hsLibraries = ["HSghc-prim-0.2.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/ghc-prim.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0"]}),(InstalledPackageId "integer-gmp-0.3.0.0-2e2b0fd56be1a5f60c50913e615691d9",InstalledPackageInfo {installedPackageId = InstalledPackageId "integer-gmp-0.3.0.0-2e2b0fd56be1a5f60c50913e615691d9", sourcePackageId = PackageIdentifier {pkgName = PackageName "integer-gmp", pkgVersion = Version {versionBranch = [0,3,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package contains an Integer library based on GMP.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Integer"],ModuleName ["GHC","Integer","GMP","Internals"],ModuleName ["GHC","Integer","Logarithms"],ModuleName ["GHC","Integer","Logarithms","Internals"]], hiddenModules = [ModuleName ["GHC","Integer","Type"]], importDirs = ["/usr/lib/ghc-7.2.2/integer-gmp-0.3.0.0"], libraryDirs = ["/usr/lib/ghc-7.2.2/integer-gmp-0.3.0.0"], hsLibraries = ["HSinteger-gmp-0.3.0.0"], extraLibraries = ["gmp"], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "ghc-prim-0.2.0.0-14e0c022e5d4efa3a40ab5991f2b2a1b"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/integer-gmp-0.3.0.0/integer-gmp.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/integer-gmp-0.3.0.0"]}),(InstalledPackageId "mtl-2.0.1.0-f81ce3282fa6adb03e0cd48bfcccec53",InstalledPackageInfo {installedPackageId = InstalledPackageId "mtl-2.0.1.0-f81ce3282fa6adb03e0cd48bfcccec53", sourcePackageId = PackageIdentifier {pkgName = PackageName "mtl", pkgVersion = Version {versionBranch = [2,0,1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "Andy Gill", stability = "", homepage = "", pkgUrl = "", description = "Monad classes using functional dependencies, with instances\nfor various monad transformers, inspired by the paper\n/Functional Programming with Overloading and Higher-Order Polymorphism/,\nby Mark P Jones, in /Advanced School of Functional Programming/, 1995\n(<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","Monad","Cont"],ModuleName ["Control","Monad","Cont","Class"],ModuleName ["Control","Monad","Error"],ModuleName ["Control","Monad","Error","Class"],ModuleName ["Control","Monad","Identity"],ModuleName ["Control","Monad","List"],ModuleName ["Control","Monad","RWS"],ModuleName ["Control","Monad","RWS","Class"],ModuleName ["Control","Monad","RWS","Lazy"],ModuleName ["Control","Monad","RWS","Strict"],ModuleName ["Control","Monad","Reader"],ModuleName ["Control","Monad","Reader","Class"],ModuleName ["Control","Monad","State"],ModuleName ["Control","Monad","State","Class"],ModuleName ["Control","Monad","State","Lazy"],ModuleName ["Control","Monad","State","Strict"],ModuleName ["Control","Monad","Trans"],ModuleName ["Control","Monad","Writer"],ModuleName ["Control","Monad","Writer","Class"],ModuleName ["Control","Monad","Writer","Lazy"],ModuleName ["Control","Monad","Writer","Strict"]], hiddenModules = [], importDirs = ["/home/exfalso/.cabal/lib/mtl-2.0.1.0/ghc-7.2.2"], libraryDirs = ["/home/exfalso/.cabal/lib/mtl-2.0.1.0/ghc-7.2.2"], hsLibraries = ["HSmtl-2.0.1.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860",InstalledPackageId "transformers-0.2.2.0-dedda34a47952e7f82f2724797f0b70f"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/home/exfalso/.cabal/share/doc/mtl-2.0.1.0/html/mtl.haddock"], haddockHTMLs = ["/home/exfalso/.cabal/share/doc/mtl-2.0.1.0/html"]}),(InstalledPackageId "transformers-0.2.2.0-dedda34a47952e7f82f2724797f0b70f",InstalledPackageInfo {installedPackageId = InstalledPackageId "transformers-0.2.2.0-dedda34a47952e7f82f2724797f0b70f", sourcePackageId = PackageIdentifier {pkgName = PackageName "transformers", pkgVersion = Version {versionBranch = [0,2,2,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Ross Paterson <ross@soi.city.ac.uk>", author = "Andy Gill, Ross Paterson", stability = "", homepage = "", pkgUrl = "", description = "Haskell 98 part of a monad transformer library, inspired by the paper\n\\\"Functional Programming with Overloading and Higher-Order Polymorphism\\\",\nby Mark P Jones, in /Advanced School of Functional Programming/, 1995\n(<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).\n\nThis part contains the monad transformer class, the concrete monad\ntransformers, operations and liftings. It can be used on its own\nin Haskell 98 code, or with the monad classes in the @monads-fd@ or\n@monads-tf@ packages, which automatically lift operations introduced\nby monad transformers through other transformers.", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","Monad","IO","Class"],ModuleName ["Control","Monad","Trans","Class"],ModuleName ["Control","Monad","Trans","Cont"],ModuleName ["Control","Monad","Trans","Error"],ModuleName ["Control","Monad","Trans","Identity"],ModuleName ["Control","Monad","Trans","List"],ModuleName ["Control","Monad","Trans","Maybe"],ModuleName ["Control","Monad","Trans","Reader"],ModuleName ["Control","Monad","Trans","RWS"],ModuleName ["Control","Monad","Trans","RWS","Lazy"],ModuleName ["Control","Monad","Trans","RWS","Strict"],ModuleName ["Control","Monad","Trans","State"],ModuleName ["Control","Monad","Trans","State","Lazy"],ModuleName ["Control","Monad","Trans","State","Strict"],ModuleName ["Control","Monad","Trans","Writer"],ModuleName ["Control","Monad","Trans","Writer","Lazy"],ModuleName ["Control","Monad","Trans","Writer","Strict"],ModuleName ["Data","Functor","Compose"],ModuleName ["Data","Functor","Constant"],ModuleName ["Data","Functor","Identity"],ModuleName ["Data","Functor","Product"]], hiddenModules = [], importDirs = ["/home/exfalso/.cabal/lib/transformers-0.2.2.0/ghc-7.2.2"], libraryDirs = ["/home/exfalso/.cabal/lib/transformers-0.2.2.0/ghc-7.2.2"], hsLibraries = ["HStransformers-0.2.2.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/home/exfalso/.cabal/share/doc/transformers-0.2.2.0/html/transformers.haddock"], haddockHTMLs = ["/home/exfalso/.cabal/share/doc/transformers-0.2.2.0/html"]})]) (fromList [(PackageName "base",fromList [(Version {versionBranch = [4,4,1,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860", sourcePackageId = PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,4,1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package contains the Prelude and its support libraries,\nand a large collection of useful libraries ranging from data\nstructures to parsing combinators and debugging utilities.", category = "", exposed = True, exposedModules = [ModuleName ["Foreign","Concurrent"],ModuleName ["GHC","Arr"],ModuleName ["GHC","Base"],ModuleName ["GHC","Classes"],ModuleName ["GHC","Conc"],ModuleName ["GHC","Conc","IO"],ModuleName ["GHC","Conc","Signal"],ModuleName ["GHC","Conc","Sync"],ModuleName ["GHC","ConsoleHandler"],ModuleName ["GHC","Constants"],ModuleName ["GHC","Desugar"],ModuleName ["GHC","Enum"],ModuleName ["GHC","Environment"],ModuleName ["GHC","Err"],ModuleName ["GHC","Exception"],ModuleName ["GHC","Exts"],ModuleName ["GHC","Fingerprint"],ModuleName ["GHC","Fingerprint","Type"],ModuleName ["GHC","Float"],ModuleName ["GHC","Float","ConversionUtils"],ModuleName ["GHC","Float","RealFracMethods"],ModuleName ["GHC","Foreign"],ModuleName ["GHC","ForeignPtr"],ModuleName ["GHC","Handle"],ModuleName ["GHC","IO"],ModuleName ["GHC","IO","Buffer"],ModuleName ["GHC","IO","BufferedIO"],ModuleName ["GHC","IO","Device"],ModuleName ["GHC","IO","Encoding"],ModuleName ["GHC","IO","Encoding","CodePage"],ModuleName ["GHC","IO","Encoding","Failure"],ModuleName ["GHC","IO","Encoding","Iconv"],ModuleName ["GHC","IO","Encoding","Latin1"],ModuleName ["GHC","IO","Encoding","Types"],ModuleName ["GHC","IO","Encoding","UTF16"],ModuleName ["GHC","IO","Encoding","UTF32"],ModuleName ["GHC","IO","Encoding","UTF8"],ModuleName ["GHC","IO","Exception"],ModuleName ["GHC","IO","FD"],ModuleName ["GHC","IO","Handle"],ModuleName ["GHC","IO","Handle","FD"],ModuleName ["GHC","IO","Handle","Internals"],ModuleName ["GHC","IO","Handle","Text"],ModuleName ["GHC","IO","Handle","Types"],ModuleName ["GHC","IO","IOMode"],ModuleName ["GHC","IOArray"],ModuleName ["GHC","IOBase"],ModuleName ["GHC","IORef"],ModuleName ["GHC","Int"],ModuleName ["GHC","List"],ModuleName ["GHC","MVar"],ModuleName ["GHC","Num"],ModuleName ["GHC","PArr"],ModuleName ["GHC","Pack"],ModuleName ["GHC","Ptr"],ModuleName ["GHC","Read"],ModuleName ["GHC","Real"],ModuleName ["GHC","ST"],ModuleName ["GHC","Show"],ModuleName ["GHC","Stable"],ModuleName ["GHC","Storable"],ModuleName ["GHC","STRef"],ModuleName ["GHC","TopHandler"],ModuleName ["GHC","Unicode"],ModuleName ["GHC","Weak"],ModuleName ["GHC","Word"],ModuleName ["System","Timeout"],ModuleName ["GHC","Event"],ModuleName ["Control","Applicative"],ModuleName ["Control","Arrow"],ModuleName ["Control","Category"],ModuleName ["Control","Concurrent"],ModuleName ["Control","Concurrent","Chan"],ModuleName ["Control","Concurrent","MVar"],ModuleName ["Control","Concurrent","QSem"],ModuleName ["Control","Concurrent","QSemN"],ModuleName ["Control","Concurrent","SampleVar"],ModuleName ["Control","Exception"],ModuleName ["Control","Exception","Base"],ModuleName ["Control","OldException"],ModuleName ["Control","Monad"],ModuleName ["Control","Monad","Fix"],ModuleName ["Control","Monad","Instances"],ModuleName ["Control","Monad","ST"],ModuleName ["Control","Monad","ST","Safe"],ModuleName ["Control","Monad","ST","Unsafe"],ModuleName ["Control","Monad","ST","Lazy"],ModuleName ["Control","Monad","ST","Lazy","Safe"],ModuleName ["Control","Monad","ST","Lazy","Unsafe"],ModuleName ["Control","Monad","ST","Strict"],ModuleName ["Control","Monad","Group"],ModuleName ["Control","Monad","Zip"],ModuleName ["Data","Bits"],ModuleName ["Data","Bool"],ModuleName ["Data","Char"],ModuleName ["Data","Complex"],ModuleName ["Data","Dynamic"],ModuleName ["Data","Either"],ModuleName ["Data","Eq"],ModuleName ["Data","Data"],ModuleName ["Data","Fixed"],ModuleName ["Data","Foldable"],ModuleName ["Data","Function"],ModuleName ["Data","Functor"],ModuleName ["Data","HashTable"],ModuleName ["Data","IORef"],ModuleName ["Data","Int"],ModuleName ["Data","Ix"],ModuleName ["Data","List"],ModuleName ["Data","Maybe"],ModuleName ["Data","Monoid"],ModuleName ["Data","Ord"],ModuleName ["Data","Ratio"],ModuleName ["Data","STRef"],ModuleName ["Data","STRef","Lazy"],ModuleName ["Data","STRef","Strict"],ModuleName ["Data","String"],ModuleName ["Data","Traversable"],ModuleName ["Data","Tuple"],ModuleName ["Data","Typeable"],ModuleName ["Data","Typeable","Internal"],ModuleName ["Data","Unique"],ModuleName ["Data","Version"],ModuleName ["Data","Word"],ModuleName ["Debug","Trace"],ModuleName ["Foreign"],ModuleName ["Foreign","C"],ModuleName ["Foreign","C","Error"],ModuleName ["Foreign","C","String"],ModuleName ["Foreign","C","Types"],ModuleName ["Foreign","ForeignPtr"],ModuleName ["Foreign","ForeignPtr","Safe"],ModuleName ["Foreign","ForeignPtr","Unsafe"],ModuleName ["Foreign","Marshal"],ModuleName ["Foreign","Marshal","Alloc"],ModuleName ["Foreign","Marshal","Array"],ModuleName ["Foreign","Marshal","Error"],ModuleName ["Foreign","Marshal","Pool"],ModuleName ["Foreign","Marshal","Safe"],ModuleName ["Foreign","Marshal","Utils"],ModuleName ["Foreign","Marshal","Unsafe"],ModuleName ["Foreign","Ptr"],ModuleName ["Foreign","Safe"],ModuleName ["Foreign","StablePtr"],ModuleName ["Foreign","Storable"],ModuleName ["Numeric"],ModuleName ["Prelude"],ModuleName ["System","Console","GetOpt"],ModuleName ["System","CPUTime"],ModuleName ["System","Environment"],ModuleName ["System","Exit"],ModuleName ["System","IO"],ModuleName ["System","IO","Error"],ModuleName ["System","IO","Unsafe"],ModuleName ["System","Info"],ModuleName ["System","Mem"],ModuleName ["System","Mem","StableName"],ModuleName ["System","Mem","Weak"],ModuleName ["System","Posix","Internals"],ModuleName ["System","Posix","Types"],ModuleName ["Text","ParserCombinators","ReadP"],ModuleName ["Text","ParserCombinators","ReadPrec"],ModuleName ["Text","Printf"],ModuleName ["Text","Read"],ModuleName ["Text","Read","Lex"],ModuleName ["Text","Show"],ModuleName ["Text","Show","Functions"],ModuleName ["Unsafe","Coerce"]], hiddenModules = [ModuleName ["GHC","Event","Array"],ModuleName ["GHC","Event","Clock"],ModuleName ["GHC","Event","Control"],ModuleName ["GHC","Event","EPoll"],ModuleName ["GHC","Event","IntMap"],ModuleName ["GHC","Event","Internal"],ModuleName ["GHC","Event","KQueue"],ModuleName ["GHC","Event","Manager"],ModuleName ["GHC","Event","PSQ"],ModuleName ["GHC","Event","Poll"],ModuleName ["GHC","Event","Thread"],ModuleName ["GHC","Event","Unique"],ModuleName ["Control","Monad","ST","Imp"],ModuleName ["Control","Monad","ST","Lazy","Imp"],ModuleName ["Foreign","ForeignPtr","Imp"]], importDirs = ["/usr/lib/ghc-7.2.2/base-4.4.1.0"], libraryDirs = ["/usr/lib/ghc-7.2.2/base-4.4.1.0"], hsLibraries = ["HSbase-4.4.1.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/lib/ghc-7.2.2/base-4.4.1.0/include"], includes = ["HsBase.h"], depends = [InstalledPackageId "ghc-prim-0.2.0.0-14e0c022e5d4efa3a40ab5991f2b2a1b",InstalledPackageId "integer-gmp-0.3.0.0-2e2b0fd56be1a5f60c50913e615691d9",InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/base-4.4.1.0/base.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/base-4.4.1.0"]}])]),(PackageName "ffi",fromList [(Version {versionBranch = [1,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "builtin_ffi", sourcePackageId = PackageIdentifier {pkgName = PackageName "ffi", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "glasgow-haskell-users@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "", category = "", exposed = True, exposedModules = [], hiddenModules = [], importDirs = [], libraryDirs = ["/usr/lib/ghc-7.2.2"], hsLibraries = ["HSffi"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/lib/ghc-7.2.2/include"], includes = [], depends = [], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}])]),(PackageName "ghc-prim",fromList [(Version {versionBranch = [0,2,0,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "ghc-prim-0.2.0.0-14e0c022e5d4efa3a40ab5991f2b2a1b", sourcePackageId = PackageIdentifier {pkgName = PackageName "ghc-prim", pkgVersion = Version {versionBranch = [0,2,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "GHC primitives.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Prim"],ModuleName ["GHC","Debug"],ModuleName ["GHC","Generics"],ModuleName ["GHC","Magic"],ModuleName ["GHC","Ordering"],ModuleName ["GHC","PrimopWrappers"],ModuleName ["GHC","IntWord32"],ModuleName ["GHC","IntWord64"],ModuleName ["GHC","Tuple"],ModuleName ["GHC","Types"],ModuleName ["GHC","Unit"],ModuleName ["GHC","CString"]], hiddenModules = [], importDirs = ["/usr/lib/ghc-7.2.2/ghc-prim-0.2.0.0"], libraryDirs = ["/usr/lib/ghc-7.2.2/ghc-prim-0.2.0.0"], hsLibraries = ["HSghc-prim-0.2.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/ghc-prim.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0"]}])]),(PackageName "integer-gmp",fromList [(Version {versionBranch = [0,3,0,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "integer-gmp-0.3.0.0-2e2b0fd56be1a5f60c50913e615691d9", sourcePackageId = PackageIdentifier {pkgName = PackageName "integer-gmp", pkgVersion = Version {versionBranch = [0,3,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package contains an Integer library based on GMP.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Integer"],ModuleName ["GHC","Integer","GMP","Internals"],ModuleName ["GHC","Integer","Logarithms"],ModuleName ["GHC","Integer","Logarithms","Internals"]], hiddenModules = [ModuleName ["GHC","Integer","Type"]], importDirs = ["/usr/lib/ghc-7.2.2/integer-gmp-0.3.0.0"], libraryDirs = ["/usr/lib/ghc-7.2.2/integer-gmp-0.3.0.0"], hsLibraries = ["HSinteger-gmp-0.3.0.0"], extraLibraries = ["gmp"], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "ghc-prim-0.2.0.0-14e0c022e5d4efa3a40ab5991f2b2a1b"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/integer-gmp-0.3.0.0/integer-gmp.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/integer-gmp-0.3.0.0"]}])]),(PackageName "mtl",fromList [(Version {versionBranch = [2,0,1,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "mtl-2.0.1.0-f81ce3282fa6adb03e0cd48bfcccec53", sourcePackageId = PackageIdentifier {pkgName = PackageName "mtl", pkgVersion = Version {versionBranch = [2,0,1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "Andy Gill", stability = "", homepage = "", pkgUrl = "", description = "Monad classes using functional dependencies, with instances\nfor various monad transformers, inspired by the paper\n/Functional Programming with Overloading and Higher-Order Polymorphism/,\nby Mark P Jones, in /Advanced School of Functional Programming/, 1995\n(<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","Monad","Cont"],ModuleName ["Control","Monad","Cont","Class"],ModuleName ["Control","Monad","Error"],ModuleName ["Control","Monad","Error","Class"],ModuleName ["Control","Monad","Identity"],ModuleName ["Control","Monad","List"],ModuleName ["Control","Monad","RWS"],ModuleName ["Control","Monad","RWS","Class"],ModuleName ["Control","Monad","RWS","Lazy"],ModuleName ["Control","Monad","RWS","Strict"],ModuleName ["Control","Monad","Reader"],ModuleName ["Control","Monad","Reader","Class"],ModuleName ["Control","Monad","State"],ModuleName ["Control","Monad","State","Class"],ModuleName ["Control","Monad","State","Lazy"],ModuleName ["Control","Monad","State","Strict"],ModuleName ["Control","Monad","Trans"],ModuleName ["Control","Monad","Writer"],ModuleName ["Control","Monad","Writer","Class"],ModuleName ["Control","Monad","Writer","Lazy"],ModuleName ["Control","Monad","Writer","Strict"]], hiddenModules = [], importDirs = ["/home/exfalso/.cabal/lib/mtl-2.0.1.0/ghc-7.2.2"], libraryDirs = ["/home/exfalso/.cabal/lib/mtl-2.0.1.0/ghc-7.2.2"], hsLibraries = ["HSmtl-2.0.1.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860",InstalledPackageId "transformers-0.2.2.0-dedda34a47952e7f82f2724797f0b70f"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/home/exfalso/.cabal/share/doc/mtl-2.0.1.0/html/mtl.haddock"], haddockHTMLs = ["/home/exfalso/.cabal/share/doc/mtl-2.0.1.0/html"]}])]),(PackageName "rts",fromList [(Version {versionBranch = [1,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "builtin_rts", sourcePackageId = PackageIdentifier {pkgName = PackageName "rts", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "glasgow-haskell-users@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "", category = "", exposed = True, exposedModules = [], hiddenModules = [], importDirs = [], libraryDirs = ["/usr/lib/ghc-7.2.2"], hsLibraries = ["HSrts"], extraLibraries = ["m","rt","dl"], extraGHCiLibraries = [], includeDirs = ["/usr/lib/ghc-7.2.2/include"], includes = ["Stg.h"], depends = [InstalledPackageId "builtin_ffi"], hugsOptions = [], ccOptions = [], ldOptions = ["-u","ghczmprim_GHCziTypes_Izh_static_info","-u","ghczmprim_GHCziTypes_Czh_static_info","-u","ghczmprim_GHCziTypes_Fzh_static_info","-u","ghczmprim_GHCziTypes_Dzh_static_info","-u","base_GHCziPtr_Ptr_static_info","-u","base_GHCziWord_Wzh_static_info","-u","base_GHCziInt_I8zh_static_info","-u","base_GHCziInt_I16zh_static_info","-u","base_GHCziInt_I32zh_static_info","-u","base_GHCziInt_I64zh_static_info","-u","base_GHCziWord_W8zh_static_info","-u","base_GHCziWord_W16zh_static_info","-u","base_GHCziWord_W32zh_static_info","-u","base_GHCziWord_W64zh_static_info","-u","base_GHCziStable_StablePtr_static_info","-u","ghczmprim_GHCziTypes_Izh_con_info","-u","ghczmprim_GHCziTypes_Czh_con_info","-u","ghczmprim_GHCziTypes_Fzh_con_info","-u","ghczmprim_GHCziTypes_Dzh_con_info","-u","base_GHCziPtr_Ptr_con_info","-u","base_GHCziPtr_FunPtr_con_info","-u","base_GHCziStable_StablePtr_con_info","-u","ghczmprim_GHCziTypes_False_closure","-u","ghczmprim_GHCziTypes_True_closure","-u","base_GHCziPack_unpackCString_closure","-u","base_GHCziIOziException_stackOverflow_closure","-u","base_GHCziIOziException_heapOverflow_closure","-u","base_ControlziExceptionziBase_nonTermination_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnMVar_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnSTM_closure","-u","base_ControlziExceptionziBase_nestedAtomically_closure","-u","base_GHCziWeak_runFinalizzerBatch_closure","-u","base_GHCziTopHandler_runIO_closure","-u","base_GHCziTopHandler_runNonIO_closure","-u","base_GHCziConcziIO_ensureIOManagerIsRunning_closure","-u","base_GHCziConcziSync_runSparks_closure","-u","base_GHCziConcziSignal_runHandlers_closure"], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}])]),(PackageName "transformers",fromList [(Version {versionBranch = [0,2,2,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "transformers-0.2.2.0-dedda34a47952e7f82f2724797f0b70f", sourcePackageId = PackageIdentifier {pkgName = PackageName "transformers", pkgVersion = Version {versionBranch = [0,2,2,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Ross Paterson <ross@soi.city.ac.uk>", author = "Andy Gill, Ross Paterson", stability = "", homepage = "", pkgUrl = "", description = "Haskell 98 part of a monad transformer library, inspired by the paper\n\\\"Functional Programming with Overloading and Higher-Order Polymorphism\\\",\nby Mark P Jones, in /Advanced School of Functional Programming/, 1995\n(<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).\n\nThis part contains the monad transformer class, the concrete monad\ntransformers, operations and liftings. It can be used on its own\nin Haskell 98 code, or with the monad classes in the @monads-fd@ or\n@monads-tf@ packages, which automatically lift operations introduced\nby monad transformers through other transformers.", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","Monad","IO","Class"],ModuleName ["Control","Monad","Trans","Class"],ModuleName ["Control","Monad","Trans","Cont"],ModuleName ["Control","Monad","Trans","Error"],ModuleName ["Control","Monad","Trans","Identity"],ModuleName ["Control","Monad","Trans","List"],ModuleName ["Control","Monad","Trans","Maybe"],ModuleName ["Control","Monad","Trans","Reader"],ModuleName ["Control","Monad","Trans","RWS"],ModuleName ["Control","Monad","Trans","RWS","Lazy"],ModuleName ["Control","Monad","Trans","RWS","Strict"],ModuleName ["Control","Monad","Trans","State"],ModuleName ["Control","Monad","Trans","State","Lazy"],ModuleName ["Control","Monad","Trans","State","Strict"],ModuleName ["Control","Monad","Trans","Writer"],ModuleName ["Control","Monad","Trans","Writer","Lazy"],ModuleName ["Control","Monad","Trans","Writer","Strict"],ModuleName ["Data","Functor","Compose"],ModuleName ["Data","Functor","Constant"],ModuleName ["Data","Functor","Identity"],ModuleName ["Data","Functor","Product"]], hiddenModules = [], importDirs = ["/home/exfalso/.cabal/lib/transformers-0.2.2.0/ghc-7.2.2"], libraryDirs = ["/home/exfalso/.cabal/lib/transformers-0.2.2.0/ghc-7.2.2"], hsLibraries = ["HStransformers-0.2.2.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.4.1.0-0b74da1b5cceb1549c5473c9b76bf860"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/home/exfalso/.cabal/share/doc/transformers-0.2.2.0/html/transformers.haddock"], haddockHTMLs = ["/home/exfalso/.cabal/share/doc/transformers-0.2.2.0/html"]}])])]), pkgDescrFile = Just "./ProxN.cabal", localPkgDescr = PackageDescription {package = PackageIdentifier {pkgName = PackageName "ProxN", pkgVersion = Version {versionBranch = [0,0,1], versionTags = []}}, license = BSD3, licenseFile = "LICENSE", copyright = "", maintainer = "0slemi0@gmail.com", author = "Andras Slemmer", stability = "", testedWith = [], homepage = "https://github.com/exFalso/ProxN", pkgUrl = "", bugReports = "", sourceRepos = [], synopsis = "Proximity sets in N dimensions", description = "", category = "Math", customFieldsPD = [], buildDepends = [Dependency (PackageName "base") (IntersectVersionRanges (EarlierVersion (Version {versionBranch = [5], versionTags = []})) (ThisVersion (Version {versionBranch = [4,4,1,0], versionTags = []}))),Dependency (PackageName "mtl") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [2,0,1,0], versionTags = []})))], specVersionRaw = Right (UnionVersionRanges (ThisVersion (Version {versionBranch = [1,2], versionTags = []})) (LaterVersion (Version {versionBranch = [1,2], versionTags = []}))), buildType = Just Simple, library = Just (Library {exposedModules = [ModuleName ["Data","ProxN","Peano"],ModuleName ["Data","ProxN","Pretty"],ModuleName ["Data","ProxN","Proximity"],ModuleName ["Data","ProxN","Show1"],ModuleName ["Data","ProxN","Tree2N"],ModuleName ["Data","ProxN","VecN"]], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], cppOptions = [], ccOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], cSources = [], hsSourceDirs = ["src"], otherModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [(GHC,["-Wall"])], ghcProfOptions = [], ghcSharedOptions = [], customFieldsBI = [], targetBuildDepends = [Dependency (PackageName "base") (IntersectVersionRanges (EarlierVersion (Version {versionBranch = [5], versionTags = []})) (ThisVersion (Version {versionBranch = [4,4,1,0], versionTags = []}))),Dependency (PackageName "mtl") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [2,0,1,0], versionTags = []})))]}}), executables = [], testSuites = [], dataFiles = [], dataDir = "", extraSrcFiles = [], extraTmpFiles = []}, withPrograms = [("alex",ConfiguredProgram {programId = "alex", programVersion = Just (Version {versionBranch = [2,3,5], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/alex"}}),("ar",ConfiguredProgram {programId = "ar", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/ar"}}),("gcc",ConfiguredProgram {programId = "gcc", programVersion = Just (Version {versionBranch = [4,6,2], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/gcc"}}),("ghc",ConfiguredProgram {programId = "ghc", programVersion = Just (Version {versionBranch = [7,2,2], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/ghc"}}),("ghc-pkg",ConfiguredProgram {programId = "ghc-pkg", programVersion = Just (Version {versionBranch = [7,2,2], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/ghc-pkg"}}),("haddock",ConfiguredProgram {programId = "haddock", programVersion = Just (Version {versionBranch = [2,9,4], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/haddock"}}),("happy",ConfiguredProgram {programId = "happy", programVersion = Just (Version {versionBranch = [1,18,6], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/happy"}}),("hsc2hs",ConfiguredProgram {programId = "hsc2hs", programVersion = Just (Version {versionBranch = [0,67], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/hsc2hs"}}),("ld",ConfiguredProgram {programId = "ld", programVersion = Nothing, programDefaultArgs = ["-x"], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/ld"}}),("pkg-config",ConfiguredProgram {programId = "pkg-config", programVersion = Just (Version {versionBranch = [0,26], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/pkg-config"}}),("ranlib",ConfiguredProgram {programId = "ranlib", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/ranlib"}}),("strip",ConfiguredProgram {programId = "strip", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/strip"}}),("tar",ConfiguredProgram {programId = "tar", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/bin/tar"}})], withPackageDB = [GlobalPackageDB,UserPackageDB], withVanillaLib = True, withProfLib = True, withSharedLib = False, withProfExe = True, withOptimization = NormalOptimisation, withGHCiLib = True, splitObjs = False, stripExes = True, progPrefix = "", progSuffix = ""}
@@ -0,0 +1,62 @@+module Main where++import Math.ProxN.VecN as Vec+import Math.ProxN.Tree2N as Tree+import Math.ProxN.Peano+import Math.ProxN.Pretty+import Math.ProxN.Proximity++import System.Random+import Control.Applicative+import Control.Monad.Random(runRandT, RandT, getRandomR)+import Control.Monad.IO.Class+import Control.Monad+import Data.Maybe++-- number of points+_NUM :: Int+_NUM = 2000++-- range of one coordinate+_RANGE :: (Double, Double)+_RANGE = (0, 100)++-- r^2+_TOLERANCE2 :: Double+_TOLERANCE2 = 500.0++-- dimension+type Dim = Five+++------------+++randomList :: Int -> IO [Double]+randomList n = withStdGen (replicateM n (getRandomR _RANGE))++withStdGen :: (MonadIO m) => RandT StdGen m a -> m a+withStdGen r = do+ gen <- liftIO getStdGen+ (a, nextGen) <- runRandT r gen+ liftIO $ setStdGen nextGen+ return a++-- generates a random vector, then 20 random vector-trees of _NUM vectors and calculates the proximity sets of the vector+main :: IO ()+main = do+ let peano = undefined :: Dim+ ranVec <- fromJust . Vec.fromList <$> randomList (fromPeano peano)+ mapM_ putStrLn+ [ "Dimension: " ++ show (fromPeano peano)+ , "Number of points: " ++ show _NUM+ , "Random Vector: " ++ prettySimp (ranVec :: VecN Dim Double)+ , "Tolerance^2: " ++ show _TOLERANCE2+ , "Depth lower bound: " ++ show (logarithm peano (fromIntegral _NUM))+ ]+ replicateM_ 20 $ do+ let vecM = Vec.fromList <$> randomList (fromPeano peano)+ tr <- Tree.fromList <$> replicateM _NUM (fromJust <$> vecM)+ putStrLn $ "Depth: " ++ show (depth tr)+ putStrLn $ "Vecs in proximity: "+ ++ show ((prox _TOLERANCE2 ranVec tr))
@@ -0,0 +1,34 @@+{-# LANGUAGE ScopedTypeVariables, EmptyDataDecls #-}++module Data.ProxN.Peano where++data Zero+data Succ n++type One = Succ Zero+type Two = Succ One+type Three = Succ Two+type Four = Succ Three+type Five = Succ Four+type Six = Succ Five+type Seven = Succ Six+type Eight = Succ Seven+type Nine = Succ Eight+type Ten = Succ Nine++class Peano p where+ fromPeano :: p -> Int++instance Peano Zero where+ fromPeano _ = 0++instance (Peano p) => Peano (Succ p) where+ fromPeano _ = 1 + (fromPeano (undefined :: p))++class (Peano p) => Logarithm p where+ logarithm :: p -> Double -> Double+ logarithm _ a = log a / log (fromIntegral (fromPeano (undefined :: p)))++instance Logarithm Zero++instance (Peano a) => Logarithm (Succ a)
@@ -0,0 +1,53 @@+{-# LANGUAGE GeneralizedNewtypeDeriving #-}++module Data.ProxN.Pretty( Pretty(..)+ , Pretty1(..)+ , prettyPut+ , prettyNl+ , prettyIndent+ ) where++import Control.Applicative+import Control.Monad.Reader+import Control.Monad.State++newtype PrettyM a = PrettyM (StateT (String -> String)+ (Reader ((String -> String),+ (String -> String))) a)+ deriving (Monad, Functor, Applicative,+ MonadReader ((String -> String), (String -> String)))++prettyPut :: String -> PrettyM ()+prettyPut str = PrettyM . modify $ (. (str ++))++prettyNl :: PrettyM ()+prettyNl = do+ (_, ind) <- ask+ PrettyM . modify $ (. (('\n' :) . ind))++prettyIndent :: PrettyM a -> PrettyM a+prettyIndent pr = do+ local (\(indUnit, ind) -> (indUnit, indUnit . ind)) $ pr++runPrettyM :: (String -> String) -> PrettyM a -> (a, String)+runPrettyM indUnit (PrettyM pm) =+ let (ret, fs) = runReader (runStateT pm id) (indUnit, id) in+ (ret, fs "")++class Pretty p where+ prettyPrint :: p -> PrettyM ()+ + pretty :: (String -> String) -> p -> String+ pretty indUnit = snd . runPrettyM indUnit . prettyPrint+ + prettySimp :: p -> String+ prettySimp = pretty (' ' :)++class Pretty1 p1 where+ prettyPrint1 :: (Pretty p) => p1 p -> PrettyM ()+ + pretty1 :: (Pretty p) => (String -> String) -> p1 p -> String+ pretty1 indUnit = snd . runPrettyM indUnit . prettyPrint1+ + prettySimp1 :: (Pretty p) => p1 p -> String+ prettySimp1 = pretty1 (' ' :)
@@ -0,0 +1,26 @@+{-# LANGUAGE ScopedTypeVariables #-}++module Data.ProxN.Proximity where++import Data.ProxN.Tree2N+import Data.ProxN.VecN++import Control.Applicative++prox :: (VecNClass n, Tree2NClass n) =>+ Double -> VecN n Double -> VecTree n Double -> [VecN n Double]+prox tol2 vec tree = proximity tol2 vec tree []++proximity :: forall n. (VecNClass n, Tree2NClass n) =>+ Double -> VecN n Double -> VecTree n Double -> ([VecN n Double] -> [VecN n Double])+proximity _ _ Tree2NLeaf = id+proximity tol2 vec (Tree2NBranch v t) =+ if distance2 vec v < tol2+ then (v :) . foldTree proximity' (pure (.)) t+ else proximity tol2 vec (chooseNode vec v t)+ where+ proximity' :: VecTree n Double -> ([VecN n Double] -> [VecN n Double])+ proximity' Tree2NLeaf = id+ proximity' (Tree2NBranch v2 t2) = addOrNot . foldTree proximity' (pure (.)) t2+ where+ addOrNot = if distance2 vec v2 < tol2 then (v2 :) else id
@@ -0,0 +1,4 @@+module Data.ProxN.Show1 where++class Show1 v where+ show1 :: (Show a) => v a -> String
@@ -0,0 +1,172 @@+{-# LANGUAGE ScopedTypeVariables, FlexibleInstances, MultiParamTypeClasses, FlexibleContexts, TypeFamilies, BangPatterns #-}++{-# OPTIONS_GHC -funbox-strict-fields #-}++module Data.ProxN.Tree2N ( Tree2N(..)+ , Tree2NClass(..)+ , Treed(..)+ , VecTree+ , fold2NTree+ , Data.ProxN.Tree2N.fromList+ , depth+ , size+ , tree0+ , tree1+ , tree2+ , tree3 ) where++import Data.ProxN.VecN+import Data.ProxN.Pretty+import Data.ProxN.Show1++import Data.Functor+import Control.Applicative++import qualified Data.ProxN.Peano as P++ -- Tree with branching factor 2^N+data Tree2N n a = Tree2NBranch !a !(Treed n (Tree2N n a))+ | Tree2NLeaf++instance (Tree2NClass n) => Functor (Tree2N n) where+ fmap _ Tree2NLeaf = Tree2NLeaf+ fmap f (Tree2NBranch a t) = Tree2NBranch (f a) (fmap (fmap f) t)++instance (Tree2NClass n) => Applicative (Tree2N n) where+ pure a = Tree2NBranch a (pure Tree2NLeaf)+ Tree2NLeaf <*> _ = Tree2NLeaf+ _ <*> Tree2NLeaf = Tree2NLeaf+ (Tree2NBranch f tf) <*> (Tree2NBranch a ta) = Tree2NBranch (f a) (fmap (<*>) tf <*> ta)++instance (Show a, Tree2NClass n) => Show (Tree2N n a) where+ show Tree2NLeaf = "Tree2NLeaf"+ show (Tree2NBranch a t) = "Tree2NBranch " ++ show a ++ " " ++ show1 t++instance (Tree2NClass n) => Pretty1 (Tree2N n) where+ prettyPrint1 Tree2NLeaf = prettyPut "_" >> prettyNl+ prettyPrint1 (Tree2NBranch a tr) = do+ prettyPrint a+ prettyNl+ prettyIndent (prettyPrint1 tr)++instance (Tree2NClass n, Pretty a) => Pretty (Tree2N n a) where+ prettyPrint = prettyPrint1++instance Functor (Treed P.Zero) where+ fmap f (TreeNil a) = TreeNil (f a)++instance (Functor (Treed n)) => Functor (Treed (P.Succ n)) where+ fmap f (t1 :/\: t2) = fmap f t1 :/\: fmap f t2++instance Applicative (Treed P.Zero) where+ pure = TreeNil+ (TreeNil f) <*> (TreeNil a) = TreeNil (f a)++instance (Applicative (Treed n)) => Applicative (Treed (P.Succ n)) where+ pure a = pure a :/\: pure a+ (f1 :/\: f2) <*> (a :/\: b) = (f1 <*> a) :/\: (f2 <*> b)++instance Show1 (Treed P.Zero) where+ show1 (TreeNil a) = show a++instance (Show1 (Treed n)) => Show1 (Treed (P.Succ n)) where+ show1 (t1 :/\: t2) = "(" ++ show1 t1 ++ " :/\\: " ++ show1 t2 ++ ")"++instance Pretty1 (Treed P.Zero) where+ prettyPrint1 (TreeNil a) = prettyPrint a++instance (Pretty1 (Treed n)) => Pretty1 (Treed (P.Succ n)) where+ prettyPrint1 (t1 :/\: t2) = do+ prettyPut "(" >> prettyNl+ prettyIndent $ do+ prettyPrint1 t1+ prettyNl+ prettyPrint1 t2+ prettyNl+ prettyPut ")" >> prettyNl++insertNode :: (Ord a, Tree2NClass n) =>+ VecN n a -> VecTree n a -> VecTree n a+insertNode v Tree2NLeaf = Tree2NBranch v (pure Tree2NLeaf)+insertNode v1 (Tree2NBranch v2 r) = Tree2NBranch v2 $ swapNode (insertNode v1) v1 v2 r++class (Functor (Treed n), Applicative (Treed n),+ Show1 (Treed n), Pretty1 (Treed n)) => Tree2NClass n where+ data Treed n :: * -> *+ swapNode :: (Ord a) => (b -> b) -> VecN n a -> VecN n a -> Treed n b -> Treed n b+ foldTree :: (a -> b) -> VecN n (b -> b -> b) -> Treed n a -> b+ chooseNode :: (Ord a) => VecN n a -> VecN n a -> Treed n b -> b++instance Tree2NClass P.Zero where+ data Treed P.Zero a = TreeNil a+ swapNode f VecNil VecNil (TreeNil !b) = TreeNil (f b)+ foldTree f VecNil (TreeNil !a) = f a+ chooseNode VecNil VecNil (TreeNil !b) = b++instance (Tree2NClass n) => Tree2NClass (P.Succ n) where+ data Treed (P.Succ n) a = Treed n a :/\: Treed n a+ swapNode f (!a1 :<: (!v1)) (!a2 :<: (!v2)) (!t1 :/\: (!t2)) =+ if a1 < a2 then swap t1 :/\: t2 else t1 :/\: swap t2+ where swap = swapNode f v1 v2+ foldTree f (g :<: v) (t1 :/\: t2) = g (foldTree f v t1) (foldTree f v t2)+ chooseNode (!a1 :<: (!v1)) (!a2 :<: (!v2)) (!t1 :/\: (!t2)) =+ if a1 < a2 then choose t1 else choose t2+ where choose = chooseNode v1 v2++fromList :: (Ord a, Tree2NClass n) =>+ [VecN n a] -> VecTree n a+fromList = foldl (flip insertNode) Tree2NLeaf++tree0 :: Tree2N P.Zero Int+tree0 = Tree2NLeaf++tree1 :: Tree2N P.One Int+tree1 = Tree2NBranch 0+ (TreeNil Tree2NLeaf :/\: TreeNil Tree2NLeaf)++tree2 :: Tree2N P.Two Int+tree2 = Tree2NBranch 0+ (+ (TreeNil Tree2NLeaf :/\:+ TreeNil Tree2NLeaf+ ) :/\:+ (TreeNil Tree2NLeaf :/\:+ TreeNil Tree2NLeaf+ )+ )++tree3 :: Tree2N P.Three Int+tree3 = Tree2NBranch 0+ (+ (+ (TreeNil Tree2NLeaf :/\:+ TreeNil Tree2NLeaf+ ) :/\:+ (TreeNil Tree2NLeaf :/\:+ TreeNil Tree2NLeaf+ )+ ) :/\:+ (+ (TreeNil Tree2NLeaf :/\:+ TreeNil Tree2NLeaf+ ) :/\:+ (TreeNil Tree2NLeaf :/\:+ TreeNil Tree2NLeaf+ )+ )+ )+++type VecTree n a = Tree2N n (VecN n a)++fold2NTree :: (Tree2NClass n) =>+ b -> VecN n (b -> b -> b) -> (a -> b -> b) -> Tree2N n a -> b+fold2NTree b _ _ Tree2NLeaf = b+fold2NTree b fs g (Tree2NBranch a t) =+ g a . foldTree id fs . fmap (fold2NTree b fs g) $ t++depth :: (Tree2NClass n, VecNClass n) => Tree2N n a -> Int+depth = fold2NTree 0 (pure max) (const succ)++size :: (Tree2NClass n, VecNClass n) => Tree2N n a -> Int+size = fold2NTree 0 (pure (+)) (const succ)
@@ -0,0 +1,73 @@+{-# LANGUAGE FlexibleContexts, TypeFamilies, MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances, GADTs, UndecidableInstances #-}++module Data.ProxN.VecN ( VecNClass(..)+ , VecN(..)+ ) where++import Data.ProxN.Pretty++import Control.Applicative+import Control.Monad(liftM2)+import Data.Functor+import Data.Foldable+import Data.Monoid++import qualified Data.ProxN.Peano as P++--data VecNil a = VecNil+--data VecTCons v a = !a :<: !(v a)++instance Show (VecN P.Zero a) where+ show = const "[]"++instance (Show a, Show (VecN n a)) => Show (VecN (P.Succ n) a) where+ show (a :<: v) = "[" ++ show a ++ "]" ++ show v++instance Functor (VecN P.Zero) where+ fmap _ VecNil = VecNil++instance (Functor (VecN n)) => Functor (VecN (P.Succ n)) where+ fmap f (a :<: v) = f a :<: fmap f v++instance Foldable (VecN P.Zero) where+ foldMap _ VecNil = mempty++instance (Foldable (VecN n)) => Foldable (VecN (P.Succ n)) where+ foldMap f (a :<: v) = f a `mappend` foldMap f v++instance Applicative (VecN P.Zero) where+ pure _ = VecNil+ (<*>) _ _ = VecNil++instance (Applicative (VecN n)) => Applicative (VecN (P.Succ n)) where+ pure a = a :<: pure a+ (f :<: v1) <*> (a :<: v2) = f a :<: (v1 <*> v2)++instance (Show a) => Pretty (VecN P.Zero a) where+ prettyPrint = prettyPut . show++instance (Show a, Show (VecN n a)) => Pretty (VecN (P.Succ n) a) where+ prettyPrint = prettyPut . show++class ( P.Peano n+ , Applicative (VecN n)+ , Functor (VecN n)) => VecNClass n where+ data VecN n :: * -> *+ distance2 :: (Num a) => VecN n a -> VecN n a -> a + vecCartProd :: VecN n [a] -> [VecN n a]+ fromList :: [a] -> Maybe (VecN n a)++instance (VecNClass r) => VecNClass (P.Succ r) where+ data VecN (P.Succ r) a = !a :<: !(VecN r a)+ distance2 (a :<: v1) (b :<: v2) = (a - b) ^ (2 :: Int) + distance2 v1 v2+ vecCartProd (as :<: vs) = liftM2 (:<:) as (vecCartProd vs)+ -- [ a :<: v | a <- as+ -- , v <- vecCartProd vs ]+ fromList [] = Nothing+ fromList (a : as) = (a :<:) <$> fromList as++instance VecNClass P.Zero where+ data VecN P.Zero a = VecNil+ distance2 _ _ = 0+ vecCartProd VecNil = [VecNil]+ fromList _ = Just VecNil