packages feed

template-haskell-util 0.1.0.4 → 0.1.1.0

raw patch · 113 files changed

+131/−813 lines, 113 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Language.Haskell.TH.Utils: appKinds :: [Kind] -> Kind
+ Language.Haskell.TH.Utils: appKind :: [Kind] -> Kind
+ Language.Haskell.TH.Utils: unappConT :: TypeQ -> Q [Type]
+ Language.Haskell.TH.Utils: unappConT' :: Type -> [Type]
+ Language.Haskell.TH.Utils: unappExp :: ExpQ -> Q [Exp]
+ Language.Haskell.TH.Utils: unappExp' :: Exp -> [Exp]
+ Language.Haskell.TH.Utils: unappKind :: Kind -> [Kind]
+ Language.Haskell.TH.Utils: uncurryKind :: Kind -> [Kind]
+ Language.Haskell.TH.Utils: uncurryType :: TypeQ -> Q [Type]
+ Language.Haskell.TH.Utils: uncurryType' :: Type -> [Type]
+ Language.Haskell.TH.Utils: unsequence :: Q [a] -> Q [Q a]

Files

− .git/#COMMIT_EDITMSG#
@@ -1,26 +0,0 @@--# Please enter the commit message for your changes. Lines starting-# with '#' will be ignored, and an empty message aborts the commit.-# On branch master-# Your branch is up-to-date with 'origin/master'.-#-# Changes to be committed:-#	modified:   src/Language/Haskell/TH/Utils.hs-#	modified:   template-haskell-util.cabal-#-# Changes not staged for commit:-#	deleted:    dist/build/HStemplate-haskell-util-0.1.0.0.o-#	deleted:    dist/build/Language/Haskell/TH/Utils.hi-#	deleted:    dist/build/Language/Haskell/TH/Utils.o-#	deleted:    dist/build/autogen/Paths_template_haskell_util.hs-#	deleted:    dist/build/autogen/cabal_macros.h-#	deleted:    dist/build/libHStemplate-haskell-util-0.1.0.0.a-#	deleted:    dist/package.conf.inplace/package.cache-#	deleted:    dist/package.conf.inplace/template-haskell-util-0.1.0.0-inplace.conf-#	deleted:    dist/setup-config-#	deleted:    dist/setup/setup.hs-#	deleted:    dist/setup/setup.version-#-# Untracked files:-#	#README.md#-#
− .git/COMMIT_EDITMSG
@@ -1,10 +0,0 @@-cabal file update-# Please enter the commit message for your changes. Lines starting-# with '#' will be ignored, and an empty message aborts the commit.-# On branch master-# Your branch is ahead of 'origin/master' by 1 commit.-#   (use "git push" to publish your local commits)-#-# Changes to be committed:-#	modified:   template-haskell-util.cabal-#
− .git/COMMIT_EDITMSG~
@@ -1,10 +0,0 @@--# Please enter the commit message for your changes. Lines starting-# with '#' will be ignored, and an empty message aborts the commit.-# On branch master-# Your branch is ahead of 'origin/master' by 1 commit.-#   (use "git push" to publish your local commits)-#-# Changes to be committed:-#	modified:   template-haskell-util.cabal-#
− .git/HEAD
@@ -1,1 +0,0 @@-ref: refs/heads/master
− .git/config
@@ -1,14 +0,0 @@-[core]-	repositoryformatversion = 0-	filemode = false-	bare = false-	logallrefupdates = true-	symlinks = false-	ignorecase = true-	hideDotFiles = dotGitOnly-[remote "origin"]-	url = https://github.com/HaskellZhangSong/TemplateHaskellUtils.git-	fetch = +refs/heads/*:refs/remotes/origin/*-[branch "master"]-	remote = origin-	merge = refs/heads/master
− .git/description
@@ -1,1 +0,0 @@-Unnamed repository; edit this file 'description' to name the repository.
− .git/hooks/applypatch-msg.sample
@@ -1,15 +0,0 @@-#!/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+"$@"}-:
− .git/hooks/commit-msg.sample
@@ -1,24 +0,0 @@-#!/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-}
− .git/hooks/post-update.sample
@@ -1,8 +0,0 @@-#!/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
− .git/hooks/pre-applypatch.sample
@@ -1,14 +0,0 @@-#!/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+"$@"}-:
− .git/hooks/pre-commit.sample
@@ -1,49 +0,0 @@-#!/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 --bool 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-	cat <<\EOF-Error: Attempt to add a non-ASCII file name.--This can cause problems if you want to work with people on other platforms.--To be portable it is advisable to rename the file.--If you know what you are doing you can disable this check using:--  git config hooks.allownonascii true-EOF-	exit 1-fi--# If there are whitespace errors, print the offending file names and fail.-exec git diff-index --check --cached $against --
− .git/hooks/pre-push.sample
@@ -1,54 +0,0 @@-#!/bin/sh--# An example hook script to verify what is about to be pushed.  Called by "git-# push" after it has checked the remote status, but before anything has been-# pushed.  If this script exits with a non-zero status nothing will be pushed.-#-# This hook is called with the following parameters:-#-# $1 -- Name of the remote to which the push is being done-# $2 -- URL to which the push is being done-#-# If pushing without using a named remote those arguments will be equal.-#-# Information about the commits which are being pushed is supplied as lines to-# the standard input in the form:-#-#   <local ref> <local sha1> <remote ref> <remote sha1>-#-# This sample shows how to prevent push of commits where the log message starts-# with "WIP" (work in progress).--remote="$1"-url="$2"--z40=0000000000000000000000000000000000000000--IFS=' '-while read local_ref local_sha remote_ref remote_sha-do-	if [ "$local_sha" = $z40 ]-	then-		# Handle delete-		:-	else-		if [ "$remote_sha" = $z40 ]-		then-			# New branch, examine all commits-			range="$local_sha"-		else-			# Update to existing branch, examine new commits-			range="$remote_sha..$local_sha"-		fi--		# Check for WIP commit-		commit=`git rev-list -n 1 --grep '^WIP' "$range"`-		if [ -n "$commit" ]-		then-			echo "Found WIP commit in $local_ref, not pushing"-			exit 1-		fi-	fi-done--exit 0
− .git/hooks/pre-rebase.sample
@@ -1,169 +0,0 @@-#!/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".
− .git/hooks/prepare-commit-msg.sample
@@ -1,36 +0,0 @@-#!/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"
− .git/hooks/update.sample
@@ -1,128 +0,0 @@-#!/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
− .git/index

binary file changed (440 → absent bytes)

− .git/info/exclude
@@ -1,6 +0,0 @@-# 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]-# *~
− .git/logs/HEAD
@@ -1,10 +0,0 @@-0000000000000000000000000000000000000000 6a35d077429c47159fd674466174acd97eb207b8 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424579505 +0800	clone: from https://github.com/HaskellZhangSong/TemplateHaskellUtils.git-6a35d077429c47159fd674466174acd97eb207b8 1d5ed8a5bd5a630d659dac826f1d251b60317469 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424584157 +0800	commit: updated some basic functions-1d5ed8a5bd5a630d659dac826f1d251b60317469 d1247d5c2308a73ca68c144ce67b060d3023b385 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424584417 +0800	commit: update readme-d1247d5c2308a73ca68c144ce67b060d3023b385 be3fb7a2051f825f8d2a8b3d299a604abf2b5244 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424586988 +0800	commit: changed readme-be3fb7a2051f825f8d2a8b3d299a604abf2b5244 084a706a37d6164dfb1fab5dcd4e098bcdfe0ffa HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424587127 +0800	commit: update me-084a706a37d6164dfb1fab5dcd4e098bcdfe0ffa 9d75ddda94952b2353bcb98b30ffa96708137edb HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424591499 +0800	commit: delete somefiles-9d75ddda94952b2353bcb98b30ffa96708137edb 3bc5e4c57a4d26371071febf2c9201f648327754 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424591528 +0800	commit: update on some functions-3bc5e4c57a4d26371071febf2c9201f648327754 9f2a3202024981da42b4521ac1ade80ad3d7b546 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424932625 +0800	commit: add some functions-9f2a3202024981da42b4521ac1ade80ad3d7b546 5f1699dd4e3d55b4caa1e57011c3532da41e3399 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424945343 +0800	commit: added print functions-5f1699dd4e3d55b4caa1e57011c3532da41e3399 01a44973c56cb3b89b9b94d32e0674fb4139b519 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424945392 +0800	commit: cabal file update
− .git/logs/refs/heads/master
@@ -1,10 +0,0 @@-0000000000000000000000000000000000000000 6a35d077429c47159fd674466174acd97eb207b8 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424579505 +0800	clone: from https://github.com/HaskellZhangSong/TemplateHaskellUtils.git-6a35d077429c47159fd674466174acd97eb207b8 1d5ed8a5bd5a630d659dac826f1d251b60317469 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424584157 +0800	commit: updated some basic functions-1d5ed8a5bd5a630d659dac826f1d251b60317469 d1247d5c2308a73ca68c144ce67b060d3023b385 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424584417 +0800	commit: update readme-d1247d5c2308a73ca68c144ce67b060d3023b385 be3fb7a2051f825f8d2a8b3d299a604abf2b5244 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424586988 +0800	commit: changed readme-be3fb7a2051f825f8d2a8b3d299a604abf2b5244 084a706a37d6164dfb1fab5dcd4e098bcdfe0ffa HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424587127 +0800	commit: update me-084a706a37d6164dfb1fab5dcd4e098bcdfe0ffa 9d75ddda94952b2353bcb98b30ffa96708137edb HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424591499 +0800	commit: delete somefiles-9d75ddda94952b2353bcb98b30ffa96708137edb 3bc5e4c57a4d26371071febf2c9201f648327754 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424591528 +0800	commit: update on some functions-3bc5e4c57a4d26371071febf2c9201f648327754 9f2a3202024981da42b4521ac1ade80ad3d7b546 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424932625 +0800	commit: add some functions-9f2a3202024981da42b4521ac1ade80ad3d7b546 5f1699dd4e3d55b4caa1e57011c3532da41e3399 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424945343 +0800	commit: added print functions-5f1699dd4e3d55b4caa1e57011c3532da41e3399 01a44973c56cb3b89b9b94d32e0674fb4139b519 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424945392 +0800	commit: cabal file update
− .git/logs/refs/remotes/origin/HEAD
@@ -1,1 +0,0 @@-0000000000000000000000000000000000000000 6a35d077429c47159fd674466174acd97eb207b8 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424579505 +0800	clone: from https://github.com/HaskellZhangSong/TemplateHaskellUtils.git
− .git/logs/refs/remotes/origin/master
@@ -1,7 +0,0 @@-6a35d077429c47159fd674466174acd97eb207b8 1d5ed8a5bd5a630d659dac826f1d251b60317469 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424584206 +0800	update by push-1d5ed8a5bd5a630d659dac826f1d251b60317469 d1247d5c2308a73ca68c144ce67b060d3023b385 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424584455 +0800	update by push-d1247d5c2308a73ca68c144ce67b060d3023b385 be3fb7a2051f825f8d2a8b3d299a604abf2b5244 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424587031 +0800	update by push-be3fb7a2051f825f8d2a8b3d299a604abf2b5244 084a706a37d6164dfb1fab5dcd4e098bcdfe0ffa HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424587175 +0800	update by push-084a706a37d6164dfb1fab5dcd4e098bcdfe0ffa 3bc5e4c57a4d26371071febf2c9201f648327754 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424591608 +0800	update by push-3bc5e4c57a4d26371071febf2c9201f648327754 9f2a3202024981da42b4521ac1ade80ad3d7b546 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424932730 +0800	update by push-9f2a3202024981da42b4521ac1ade80ad3d7b546 01a44973c56cb3b89b9b94d32e0674fb4139b519 HaskellZhangSong <Haskell.Zhang.Song@hotmail.com> 1424945432 +0800	update by push
− .git/objects/01/a44973c56cb3b89b9b94d32e0674fb4139b519
@@ -1,3 +0,0 @@-x­Î=Â0@aæœÂ;R7qÁBŒìllnâЊ´©J¸??â¬ßðôB™¦±BÛùM]U	GV-Øc׳Mœ¼SÞÒNuESrÈf‘Uç-”°cŽÑ«‹D½"¨´³ˆÁ‘k£xT瘍<ëPV8Ëã®9_™o—2ßàð“æKÍÇNC©“Œ¹	e:úÖ³'Ç-líÞZóÖ÷rÕ¿ÄL^2¤1+<—(UÍIVB
− .git/objects/04/4d92ff41144323a5f3560042b11cd4c1ba5e27

binary file changed (51 → absent bytes)

− .git/objects/06/14f36be9b51319da5697bdeb915abdeef87598

binary file changed (52 → absent bytes)

− .git/objects/07/0c1131e874660cd0b399ef47d1b858ff8793a0

binary file changed (157 → absent bytes)

− .git/objects/08/2597fc126f447143f810f32ce83938409c4055

binary file changed (49 → absent bytes)

− .git/objects/08/4a706a37d6164dfb1fab5dcd4e098bcdfe0ffa
@@ -1,2 +0,0 @@-x­ÎË-Â0…a×yŠì…’L®—îݹ›˜+6M©éû[ÅGpûñs8·ZÊ£Ip~×"™ú^¢àMðŒÚ³æ”}và8f´ Ù˜Ì.ˆššLd8å4Ço“ÉÐ÷è•ÅĐX+pmC]ä_OÇë€ÓýR§»<ü¤ûR÷±ÓP[ÁÇØÝj9JmÁº4¹WQ)±év¹Ñ_ÆÄ:gl$‰7AxSI
− .git/objects/0a/5c8b86bc82d2e802c87753d0d281666fb1d2cf

binary file changed (44 → absent bytes)

− .git/objects/0e/b705ecf8acd3e0faadbf5b8f9223c3f2af7d2f

binary file changed (52 → absent bytes)

− .git/objects/11/85ce856677a3fab9b4b8152e7188867948cead

binary file changed (199 → absent bytes)

− .git/objects/11/9bdac5caf8dccdce98352d29af74517692984c

binary file changed (83 → absent bytes)

− .git/objects/14/cc1d44e537fa8f1f5f188c77de2de18c399dd8

binary file changed (50 → absent bytes)

− .git/objects/17/a8b7d220ae5394a9369c889384673567f2ffe2

binary file changed (123 → absent bytes)

− .git/objects/1b/fe09ade13ffc3e9646506a8bd07d9f06282ca8
@@ -1,3 +0,0 @@-xmSMoÔ0åÚHþsF³[D+m‚E­Ôr`—7'žÄŽù~=ãl²¾Åoæù½™—Ú¸n?¼S–ðhuÔÂ@Ä~0"b©Dø…Æ”)jÃQÖ¡EO˜„z„Õ¦6ðÕy`Ñ´ÉG…¤kR6Ѝ½†€*Æá®ªf^î|WMU-èCÙ%-±b+¬èñ^ÿêbÅoj¥.ËW|ÍW|Ŋ0Z7.àë²+2ŒZ’¾ÃÃÁ4g…ÄÐx=dù§î©µM¶É×¢zÝ©5Ql“?--Œ.åïñ⚊žDwé0Ï&Ðp:Uªyãúj–òS	Ûíœíªý¼™øA+ŒnІK6x~ܑ²Õæ?=~Þ~ÛmY!RTΟ¬MãôÎ_Ŋ^hZ¦mŸ,³™ñ,é£r‘J)®Ÿ¶ß¸aôygm”‹†2Ó9?žßÂùJ4VÔIYÆq8ÉØiÊ!ø½(ƒK¾ÁÉJ^æ÷í§/Ï[ÞËÌMÉ,_Åà~³ækÚBí…Y€/ƒ(ËÞÉdhòåt)|±¸àÓx®®æš\Lùv9Ý'Šx‘`ZHÎÇd7cƒ´ò˜ÅZP>6›wü-Àõ1(Ëo÷¸á·¹[…žÔ~i¾É˜ÄV$K3szrvq³Z¯þ’Ý)k
− .git/objects/1d/5ed8a5bd5a630d659dac826f1d251b60317469

binary file changed (182 → absent bytes)

− .git/objects/1d/c0ca8607b48e6eb1ef35d1a875020bad45711b

binary file changed (198 → absent bytes)

− .git/objects/1e/427715ecf5a13ab5e0dd5148343b3c5c85ede3

binary file changed (45 → absent bytes)

− .git/objects/1f/09cdb8471418bfb9d426a81124fc05387864de

binary file changed (50 → absent bytes)

− .git/objects/20/ca248c4d12a9cc5a4441bfb342b60922824040

binary file changed (45 → absent bytes)

− .git/objects/22/06167d3bd9beff796b124fc62b10cf920ddedc
@@ -1,1 +0,0 @@-xuÎAK1`ÏùzQÜ=´ÒK‚ˆÐ«°ž–’8‹éNÈL´þx“m5—̃yã;<l·7+ttŒÁ*í­|Po:1YhÈCž¼Ž<	N˜9C_iT‚^j¸ôàùŒ>èd‹IbÊk[|ã)Æ0Ã"Œ¢à¡¬ÄD"ÅF{×`Ý`s¨|IXc³TmŒ/§ˆÝ}ù_hQ‡+°Î‘Ê
“hÊ^955|RRô¶+qÑ-ü¯ýÌS·à])ŸõeúÃÿƒ”;\=æLùœÒ\›W±ÝnÓ
− .git/objects/25/e665418344ac3e22647b09133c46f11764adc7

binary file changed (1937 → absent bytes)

− .git/objects/26/b3e7dc8604f16cd517c71a150db8e193d71710

binary file changed (226 → absent bytes)

− .git/objects/2f/04dee5ff3b9942714d4746b9d0a8c5d5509085

binary file changed (60 → absent bytes)

− .git/objects/35/d3e81042a51a696393d60d9e6091189c807d4f

binary file changed (199 → absent bytes)

− .git/objects/3b/c5e4c57a4d26371071febf2c9201f648327754

binary file changed (180 → absent bytes)

− .git/objects/40/e84137de681e2b3710c60e78cca1b541967f6b

binary file changed (53 → absent bytes)

− .git/objects/42/905a03530679e07e9aeb8c52f5fe1219207e01

binary file changed (9517 → absent bytes)

− .git/objects/45/ff6c45a9cb2bee78bb34a530229037cfac04dd

binary file changed (49 → absent bytes)

− .git/objects/48/c8e4a7b86032067949768c343e0673410a676c

binary file changed (50 → absent bytes)

− .git/objects/4a/96e90bdb920aa512ecdbdaa5f8d901f67e4a9a

binary file changed (44 → absent bytes)

− .git/objects/4e/5006d92e85b87d8f4d74bcc32eb6533505ce5e

binary file changed (3596 → absent bytes)

− .git/objects/5c/bb9a4d1c9a35dcb29eb3866afb1e33e0c304c9

binary file changed (60 → absent bytes)

− .git/objects/5f/1699dd4e3d55b4caa1e57011c3532da41e3399

binary file changed (179 → absent bytes)

− .git/objects/60/f79d207a4fdc123ed588c5e07108374dc4c596

binary file changed (930 → absent bytes)

− .git/objects/62/4eb04567b70087227deed14cc2935aa0ff6446

binary file changed (50 → absent bytes)

− .git/objects/64/73929c7950d01d618a45420165c543b8cb4ff2

binary file changed (12658 → absent bytes)

− .git/objects/68/c829d10241779b0f24a4fb2da9c5eb4d41942c

binary file changed (45 → absent bytes)

− .git/objects/6a/35d077429c47159fd674466174acd97eb207b8
@@ -1,2 +0,0 @@-x­Î±Â …agžâî&¸”ÒÄGÝÜn)”¤Åŧ£àúäÏq%çXAIÜÕÕ{°
!=š^9;ÚNi=ˆÜI´©’ž5”δÍ>¥[ eº–e‚ÃOøëC|kv-¥fЉ»’ µÒ]?H4°VÖ´]¨þ/1vYb”à[eoï¸G
− .git/objects/71/2891fcdda0381f84adb48cac21c035028d3a8c

binary file changed (174 → absent bytes)

− .git/objects/74/a4e672ebf4b930e5dd6b616fa4bc2a02365466

binary file changed (112 → absent bytes)

− .git/objects/78/3415d3261400ad2ad430037813a214e5742735

binary file changed (198 → absent bytes)

− .git/objects/7a/0cc2115b5d2bdce511903df0ae592ab1ab8c21

binary file changed (3836 → absent bytes)

− .git/objects/7f/01dc145616f4a53e0a186872830e49bff62efb
@@ -1,3 +0,0 @@-x½–MoÚ0€wæW¼bRUªÆ%0•ÓÚÒF¤õ4	™à†!¤ÒúãûÚñXŒñ©§Hñ“ÄOÞ/ÏE>‡(Ð/w7ð˜À$™ÂÓãxú
¦Ùj¯+Á¯ì­È7¬X¥Lˆ,ù–ïXÁ0?Àw6gnîZ-|ƒdéš-9Ìٞ=“PµöuÁ_W[/O¿žÇÉd¦Ö¡m€öqùçx2«"×ö'ßÑ[}‰n7«m¾ëÀõï€YêÀ@Þß¡vs4›WW†Š4_¦ð±¸|¬üÒÃÂNM¬à)P=ÈØ~ͅ"2DÉÐ&ùÚ¶7qOùȦ5凗)”Úå‹<Àÿt	%ݪë4I~C¦hk¦®xByºum»î6Ýèe-Ýhí[V»¥Rfû€: ÷gí4í’røiÎSкu³S•úeæÒÍ°Ž)ÃACñ¾¢¸LS,Ⱦ#zH¨’DÄ!‡§š_QömfõÒE³~C¬»e–1¸Ä2ӈK,ó³öÓ6þÇ̲:…b͈5ÅäzyYn†”— =£÷Y’[,òtm”ö!4˜ê ŠsÄѐžš~͓Zs¹ÞcUý™¼=Ύj43&åAµ˜!ém1Ò-)§$¾ÌSѳÅXÄi‹iNˆ^¥Åd2
BҏÏëI,DE¸Ô¤o†¶Ö6‡nÇr8¨cªÃœ™ûz<dû4ÂùàvÓÌe=y†îS
s‘¿í0A£ÚY¦6¹ñ?hJehº‚h@OO¿ÅY"y’¢ˆéƒß±-Õ	î:À¬
− .git/objects/80/0d936c649cb85b2c545007389fdd4a161b8241

binary file changed (1270 → absent bytes)

− .git/objects/83/0ac91299ed1575b3936ea9e541fedc2c38399e

binary file changed (540 → absent bytes)

− .git/objects/83/3b4c60194337adacadea6fed3c2405dddc2bed

binary file changed (61 → absent bytes)

− .git/objects/83/775c596675f20802bddca97764740eed061457

binary file changed (52 → absent bytes)

− .git/objects/85/e0f51a55237cca950296b39f063057a52e85f6

binary file changed (7632 → absent bytes)

− .git/objects/8c/36a3364b672c8b85244909acf3a06a3501ad33

binary file changed (54 → absent bytes)

− .git/objects/8e/2c733e2d82de61adc4fb9ea405eea6adde0477

binary file changed (227 → absent bytes)

− .git/objects/94/992aa0ad781e24a35f65e071057a2aa7bef45d

binary file changed (50 → absent bytes)

− .git/objects/95/1c9d9e5c1b16b90f9f43e97c5e6ee8daeff319

binary file changed (199 → absent bytes)

− .git/objects/98/b8bcf2f60d6e4d17e63fd4a4802182ad732501

binary file changed (50 → absent bytes)

− .git/objects/9b/2c7a465fcbdaddb77e0203ea65b458b7c6df31

binary file changed (49 → absent bytes)

− .git/objects/9d/75ddda94952b2353bcb98b30ffa96708137edb

binary file changed (174 → absent bytes)

− .git/objects/9e/43c01c01365d6d757188b2136789f5726dfac3

binary file changed (500 → absent bytes)

− .git/objects/9f/2a3202024981da42b4521ac1ade80ad3d7b546
@@ -1,2 +0,0 @@-x­Î=NÄ0@ajŸbz¤h<þ—Vˆ’žŽnÖo"b%Þû³ Ž@ûO/Ö¶	äÝÓ<DÀ¸b$j´ÄN³OÞ$S<–$“Ö1刡ت¾ø>Á\³›]`[ț 1è*×J9êêm4‚³Šïs¼ñù)ûþ±r¿½~ƒËŸ,¿´üØë:fãm_òh/ -ÙdȓƒgŒˆê¡å)ÿS\-œ£	Ô{ÏsýTߣôTè
− .git/objects/a0/255b994096ec2c541e7257cfc164aa5794c09c

binary file changed (78 → absent bytes)

− .git/objects/a0/6307868bc41484fbaf1e60913612fa07e47aca

binary file changed (227 → absent bytes)

− .git/objects/a6/c5ae05a815bab01ab73604faea7d1edfeb91a9

binary file changed (49 → absent bytes)

− .git/objects/ac/b473308a531cdd76f5e9f7e643a047a71fafd1

binary file changed (44 → absent bytes)

− .git/objects/ad/fc307073786c3dea4d06fcc1733e77bb383c81

binary file changed (552 → absent bytes)

− .git/objects/b5/b6ac12670f8ee43b1759402b346d9da60ab066
@@ -1,1 +0,0 @@-x+)JMU07g040031Q(N-)-ÐË(fÐg¹÷ô¿õL§B_w·V½0¡EMYjQqf~CÌîY¾2³Lïlš·¹-뷜ñƒÃ,'>7"v
− .git/objects/b9/913ee76376fa16f1fbd6d525f8da421f33df57

binary file changed (226 → absent bytes)

− .git/objects/be/3fb7a2051f825f8d2a8b3d299a604abf2b5244
@@ -1,1 +0,0 @@-x­Î»NA…aêyŠé‘Vö\)B)ééè¼¶ÉFìì Íðþl@wôG¿ôÖnǂOc7;Æ­ªPôE4c•ŠŒt&ÃSԊÁ}ñnÛðŠ!UÍ"×(\H0%±Rg( Bœ#eÇßcé»åû§­ëûÂÛõ­oWþ“é—¦‡]–>ßÖIz{ñ˜BÊTNDþÀz$û—3'S¿k3÷¿&SÒ
− .git/objects/c3/c2f2418af9ac6f49318d05c4ab4a8bf3b398f7
@@ -1,1 +0,0 @@-x­R;OÃ0„€XXìØÎÃI'¤"‘¡[˂¼ØNGu’Jq~=nkwHS„^ì»ó÷¸³…îÄS†ñ…[—n¿3e³Õܔ@ñ~Sj
SkW¼ö·G Qú>O’1DºµJ²³>äeø©x[Áe×V¯ª3
¯5”]ãØoz›ÿRG­Ã!UÆlûYTµQƒØÝݞmG¬\‹®ðaìG<ãðva­¼*ýœü~ïл^åp’Ñ#^Þfì=Ÿ3ëM9aEÝ&†ZÎÅߑùòǧ·{&¾ry x_‚RûŒP¥„QL(‘	!(JÎi–ò,ÅRHÊN˜íÿADH´”Ò8CaHp”F8	‘À­Ñ7çÒ~\üWƒ.:ɔi4;±·ûøÓY¨xaqçÀÎÿAðÝ~ÏË
− .git/objects/c7/77470c4d808739af195139dafd6041ab19e708

binary file changed (9252 → absent bytes)

− .git/objects/c9/b3cf02a7c8a4f0c7c556583944579408b3bb74

binary file changed (470 → absent bytes)

− .git/objects/d1/247d5c2308a73ca68c144ce67b060d3023b385
@@ -1,2 +0,0 @@-x­Î½‚0@aç>ÅÝMH[úGbŒ£»›Û¥÷FJI-ï/ÁõNNÌ)=*h'µ0C`}Û²¦ ‰BŠfè;F#-3:$bi¼+^*(²LmO]+Éَ0íEÚªÞÉVyã:[r+¾ž<Ï÷	—ñ–—N?i¾Ô|ì2åšð171§3(£
Æ(G¤»î˕ÿÛJX-#%oó¥U4
− .git/objects/d1/f000c134b3b213d6a4be1bd79e2ae3bd7fe8de

binary file changed (555 → absent bytes)

− .git/objects/dc/3e4f86c7ead198e6595395057c6836d0e5c0c4

binary file changed (1372 → absent bytes)

− .git/objects/eb/cdb92439913cc476708cc8ec7920219062a79a
@@ -1,1 +0,0 @@-xuÎÁJÄ0`¯æ)~ð¢ØvE„="‚W¡žÊ’8…b¶2݂oR{pA!3„ÿ›qnnïÎ.ÐÑ!«ôlåBxÕ1ˆÉBCòäuäI0pÂÌÊøL£taÍÁó#| ÐѓĴ-¾ðc˜aFQðP~c"‘¢¿¼¾j°i°ÝW¹tØ`kPÏy¹6ƧcÄn‡¾¼/{´÷¨…9•uŽTæO¢){åÔÔæƒ’¢·
\iÞÂÁŸà<u‹Þá‡_ªÕÿG)K¸ºÉ/Ëç”æýSû¾önæ
− .git/objects/f4/e127a195ff2f05bd5913424e318a2b07cecb8f

binary file changed (652 → absent bytes)

− .git/objects/f7/1d9b249fecb00850d2ecfb07bae5ebbece36eb

binary file changed (53 → absent bytes)

− .git/packed-refs
@@ -1,2 +0,0 @@-# pack-refs with: peeled fully-peeled -6a35d077429c47159fd674466174acd97eb207b8 refs/remotes/origin/master
− .git/refs/heads/master
@@ -1,1 +0,0 @@-01a44973c56cb3b89b9b94d32e0674fb4139b519
− .git/refs/remotes/origin/HEAD
@@ -1,1 +0,0 @@-ref: refs/remotes/origin/master
− .git/refs/remotes/origin/master
@@ -1,1 +0,0 @@-01a44973c56cb3b89b9b94d32e0674fb4139b519
README.md view
@@ -2,7 +2,24 @@ useful functions for you to write template Haskell code  some examples+** Prettyprint +    > runQ [| (1+1) * 5|] >>= pp -- or use+    > printiQ  [| (1+1) * 5|]+    InfixE (Just InfixE (Just LitE (IntegerL 1))+                      (VarE (Name (OccName "+")+                                   (NameG' VarName+                                           (PkgName "base")+                                           (ModName "GHC.Num"))))+                       (Just LitE (IntegerL 1)))+          (VarE (Name (OccName "*")+                      (NameG' VarName+                              (PkgName "base")+                              (ModName "GHC.Num"))))+          (Just LitE (IntegerL 5))++** Other helper functions+     -- | Apply a list of expression [(+), 1, 2] to (+) 1 2     appExp :: [ExpQ] -> ExpQ @@ -11,3 +28,4 @@      -- | convert [a, b, c] to a -> b -> c     curryType :: [TypeQ] -> TypeQ+
+ changelog.md view
@@ -0,0 +1,1 @@+@applyKinds@ is renamed to @applyKind@
− dist/build/HStemplate-haskell-util-0.1.0.4.o

binary file changed (841858 → absent bytes)

− dist/build/Language/Haskell/TH/Utils.hi

binary file changed (748718 → absent bytes)

− dist/build/Language/Haskell/TH/Utils.o

binary file changed (914838 → absent bytes)

− dist/build/autogen/Paths_template_haskell_util.hs
@@ -1,35 +0,0 @@-module Paths_template_haskell_util (-    version,-    getBinDir, getLibDir, getDataDir, getLibexecDir,-    getDataFileName, getSysconfDir-  ) where--import qualified Control.Exception as Exception-import Data.Version (Version(..))-import System.Environment (getEnv)-import Prelude--catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a-catchIO = Exception.catch--version :: Version-version = Version [0,1,0,4] []-bindir, libdir, datadir, libexecdir, sysconfdir :: FilePath--bindir     = "C:\\Users\\Song\\AppData\\Roaming\\cabal\\bin"-libdir     = "C:\\Users\\Song\\AppData\\Roaming\\cabal\\x86_64-windows-ghc-7.8.3\\template-haskell-util-0.1.0.4"-datadir    = "C:\\Users\\Song\\AppData\\Roaming\\cabal\\x86_64-windows-ghc-7.8.3\\template-haskell-util-0.1.0.4"-libexecdir = "C:\\Users\\Song\\AppData\\Roaming\\cabal\\template-haskell-util-0.1.0.4"-sysconfdir = "C:\\Users\\Song\\AppData\\Roaming\\cabal\\etc"--getBinDir, getLibDir, getDataDir, getLibexecDir, getSysconfDir :: IO FilePath-getBinDir = catchIO (getEnv "template_haskell_util_bindir") (\_ -> return bindir)-getLibDir = catchIO (getEnv "template_haskell_util_libdir") (\_ -> return libdir)-getDataDir = catchIO (getEnv "template_haskell_util_datadir") (\_ -> return datadir)-getLibexecDir = catchIO (getEnv "template_haskell_util_libexecdir") (\_ -> return libexecdir)-getSysconfDir = catchIO (getEnv "template_haskell_util_sysconfdir") (\_ -> return sysconfdir)--getDataFileName :: FilePath -> IO FilePath-getDataFileName name = do-  dir <- getDataDir-  return (dir ++ "\\" ++ name)
− dist/build/autogen/cabal_macros.h
@@ -1,100 +0,0 @@-/* DO NOT EDIT: This file is automatically generated by Cabal */--/* package GenericPretty-1.2.1 */-#define VERSION_GenericPretty "1.2.1"-#define MIN_VERSION_GenericPretty(major1,major2,minor) (\-  (major1) <  1 || \-  (major1) == 1 && (major2) <  2 || \-  (major1) == 1 && (major2) == 2 && (minor) <= 1)--/* package base-4.7.0.1 */-#define VERSION_base "4.7.0.1"-#define MIN_VERSION_base(major1,major2,minor) (\-  (major1) <  4 || \-  (major1) == 4 && (major2) <  7 || \-  (major1) == 4 && (major2) == 7 && (minor) <= 0)--/* package ghc-prim-0.3.1.0 */-#define VERSION_ghc_prim "0.3.1.0"-#define MIN_VERSION_ghc_prim(major1,major2,minor) (\-  (major1) <  0 || \-  (major1) == 0 && (major2) <  3 || \-  (major1) == 0 && (major2) == 3 && (minor) <= 1)--/* package template-haskell-2.9.0.0 */-#define VERSION_template_haskell "2.9.0.0"-#define MIN_VERSION_template_haskell(major1,major2,minor) (\-  (major1) <  2 || \-  (major1) == 2 && (major2) <  9 || \-  (major1) == 2 && (major2) == 9 && (minor) <= 0)--/* tool alex-3.1.3 */-#define TOOL_VERSION_alex "3.1.3"-#define MIN_TOOL_VERSION_alex(major1,major2,minor) (\-  (major1) <  3 || \-  (major1) == 3 && (major2) <  1 || \-  (major1) == 3 && (major2) == 1 && (minor) <= 3)--/* tool cpphs-1.18.5 */-#define TOOL_VERSION_cpphs "1.18.5"-#define MIN_TOOL_VERSION_cpphs(major1,major2,minor) (\-  (major1) <  1 || \-  (major1) == 1 && (major2) <  18 || \-  (major1) == 1 && (major2) == 18 && (minor) <= 5)--/* tool gcc-4.6.3 */-#define TOOL_VERSION_gcc "4.6.3"-#define MIN_TOOL_VERSION_gcc(major1,major2,minor) (\-  (major1) <  4 || \-  (major1) == 4 && (major2) <  6 || \-  (major1) == 4 && (major2) == 6 && (minor) <= 3)--/* tool ghc-7.8.3 */-#define TOOL_VERSION_ghc "7.8.3"-#define MIN_TOOL_VERSION_ghc(major1,major2,minor) (\-  (major1) <  7 || \-  (major1) == 7 && (major2) <  8 || \-  (major1) == 7 && (major2) == 8 && (minor) <= 3)--/* tool ghc-pkg-7.8.3 */-#define TOOL_VERSION_ghc_pkg "7.8.3"-#define MIN_TOOL_VERSION_ghc_pkg(major1,major2,minor) (\-  (major1) <  7 || \-  (major1) == 7 && (major2) <  8 || \-  (major1) == 7 && (major2) == 8 && (minor) <= 3)--/* tool haddock-2.14.3 */-#define TOOL_VERSION_haddock "2.14.3"-#define MIN_TOOL_VERSION_haddock(major1,major2,minor) (\-  (major1) <  2 || \-  (major1) == 2 && (major2) <  14 || \-  (major1) == 2 && (major2) == 14 && (minor) <= 3)--/* tool happy-1.19.4 */-#define TOOL_VERSION_happy "1.19.4"-#define MIN_TOOL_VERSION_happy(major1,major2,minor) (\-  (major1) <  1 || \-  (major1) == 1 && (major2) <  19 || \-  (major1) == 1 && (major2) == 19 && (minor) <= 4)--/* tool hpc-0.67 */-#define TOOL_VERSION_hpc "0.67"-#define MIN_TOOL_VERSION_hpc(major1,major2,minor) (\-  (major1) <  0 || \-  (major1) == 0 && (major2) <  67 || \-  (major1) == 0 && (major2) == 67 && (minor) <= 0)--/* tool hsc2hs-0.67 */-#define TOOL_VERSION_hsc2hs "0.67"-#define MIN_TOOL_VERSION_hsc2hs(major1,major2,minor) (\-  (major1) <  0 || \-  (major1) == 0 && (major2) <  67 || \-  (major1) == 0 && (major2) == 67 && (minor) <= 0)--/* tool hscolour-1.20 */-#define TOOL_VERSION_hscolour "1.20"-#define MIN_TOOL_VERSION_hscolour(major1,major2,minor) (\-  (major1) <  1 || \-  (major1) == 1 && (major2) <  20 || \-  (major1) == 1 && (major2) == 20 && (minor) <= 0)-
− dist/build/libHStemplate-haskell-util-0.1.0.4.a

binary file changed (1211838 → absent bytes)

− dist/package.conf.inplace/package.cache

binary file changed (1150 → absent bytes)

− dist/package.conf.inplace/template-haskell-util-0.1.0.4-inplace.conf
@@ -1,35 +0,0 @@-name: template-haskell-util
-version: 0.1.0.4
-id: template-haskell-util-0.1.0.4-inplace
-license: MIT
-copyright:
-maintainer: Haskell.Zhang.Song@hotmail.com
-stability: experimental
-homepage: https://github.com/HaskellZhangSong/TemplateHaskellUtils
-package-url:
-synopsis: Some utilities for template Haskell.
-description: Some functions that might be useful when you use template haskell.
-category: Template Haskell
-author: songzh
-exposed: True
-exposed-modules: Language.Haskell.TH.Utils
-hidden-modules:
-trusted: False
-import-dirs: D:\GHC\thu\TemplateHaskellUtils\dist\build
-library-dirs: D:\GHC\thu\TemplateHaskellUtils\dist\build
-hs-libraries: HStemplate-haskell-util-0.1.0.4
-extra-libraries:
-extra-ghci-libraries:
-include-dirs:
-includes:
-depends: GenericPretty-1.2.1-281911651e30ba17172d20e41038d2cb
-         base-4.7.0.1-7c4827d45272c6220486aa798a981cbc
-         ghc-prim-0.3.1.0-95dc0c72a075ab56f8cdd74470fc7c3d
-         template-haskell-2.9.0.0-53d2bc0fb77759033214841630b100f0
-hugs-options:
-cc-options:
-ld-options:
-framework-dirs:
-frameworks:
-haddock-interfaces: D:\GHC\thu\TemplateHaskellUtils\dist\doc\html\template-haskell-util\template-haskell-util.haddock
-haddock-html: D:\GHC\thu\TemplateHaskellUtils\dist\doc\html\template-haskell-util
− dist/setup-config

binary file changed (123433 → absent bytes)

− dist/setup/setup.hs
@@ -1,1 +0,0 @@-import Distribution.Simple; main = defaultMain
− dist/setup/setup.version
@@ -1,1 +0,0 @@-Version {versionBranch = [1,22,0,0], versionTags = []}
src/Language/Haskell/TH/Utils.hs view
@@ -14,19 +14,17 @@ -----------------------------------------------------------------------------
 
 module Language.Haskell.TH.Utils(
-       appExp, appExp',
-       appConT, appConT',
-       curryType, curryType',
+       rename, rename', rename'', nameToExp, 
+       appExp, appExp', unappExp, unappExp',
+       appConT, appConT', unappConT, unappConT',
+       curryType, curryType', uncurryType, uncurryType',
        genBT, genBT',
        genPE, genPE',
-       appKinds,
-       curryKind,
-       getTypeNames,
-       getTVBName ,
+       appKind, unappKind,
+       curryKind, uncurryKind,
+       getTypeNames, getTVBName ,
        getCompositeType,getConName,
-       seqTup2, seqTup3,seqTup4, 
-       rename, rename', rename'',
-       nameToExp, 
+       seqTup2, seqTup3,seqTup4, unsequence,
        printQ, pprintQ, printiQ, printi,
        -- | exported GenericPretty package
        module Text.PrettyPrint.GenericPretty
@@ -36,13 +34,16 @@ import Language.Haskell.TH
 import Language.Haskell.TH.Lib hiding (Role)
 import Data.List (foldl1,foldr1)
+import Debug.Trace
 import Control.Monad
 import Language.Haskell.TH.Syntax
 import Text.PrettyPrint.GenericPretty
 import GHC.Generics hiding (Fixity)
 import GHC.Word
 import GHC.Types
+import Data.List
 
+import System.IO.Unsafe
 -- sorry for the following messy, I will write a library to generate empty instances automatically
 instance Out Name
 instance Out Type
@@ -87,7 +88,7 @@ instance Out AnnTarget
 instance Out Word8
 
--- sorry for the messy, I will also write a library to do this automatically
+-- sorry for the messy, I will also write a TH library to do this automatically
 deriving instance Generic FixityDirection
 deriving instance Generic Inline
 deriving instance Generic RuleBndr
@@ -146,7 +147,8 @@   from x = M1 (M1 (M1 (K1 x)))
   to (M1 (M1 (M1 (K1 x)))) = x
 
--- This is bacause GHC 7.8 does not support unboxed value to be made into Generic
+-- This is bacause GHC 7.8 does not support unlifted value to be made into Generic
+-- I am trying to do it with Template Haskell
 instance Generic NameFlavour where
   type Rep NameFlavour = (Rep NameFlavour')
   from (NameS) = from NameS'
@@ -179,7 +181,7 @@ > printiQ  [| (1+1) * 5|]
 > InfixE (Just InfixE (Just LitE (IntegerL 1))
 >                   (VarE (Name (OccName "+")
->                                (NameG' VarName
+>                               (NameG' VarName
 >                                        (PkgName "base")
 >                                        (ModName "GHC.Num"))))
 >                    (Just LitE (IntegerL 1)))
@@ -189,6 +191,7 @@ >                           (ModName "GHC.Num"))))
 >       (Just LitE (IntegerL 5))
 -}
+
 printiQ :: Out a => Q a -> IO ()
 printiQ q = runQ q >>= pp
 
@@ -200,6 +203,13 @@ printQ :: Show a => Q a -> IO ()
 printQ q = runQ q >>= putStrLn.show
 
+-- | Debug print
+dprint :: Show a => String -> Q a -> Q a
+dprint str q = do
+           a <- q
+           trace (str ++ ": " ++ show a) q
+
+
 -- | sequence-like functons on tuples
 seqTup2 :: (Q a, Q b) -> Q (a, b) 
 seqTup2 (a,b) = liftM2 (,) a b
@@ -210,6 +220,12 @@ seqTup4 :: (Q a, Q b, Q c, Q d) -> Q (a, b, c, d)
 seqTup4 (a,b,c,d) = liftM4 (,,,) a b c d
 
+-- | Unsequence @Q [a]@ to [Q a], but you never get rid of the outer 'Q'
+unsequence :: Q [a] -> Q [Q a]
+unsequence qs = do
+           s <- qs
+           return $ map return s
+
 -- | Rename a 'Name'
 rename :: Q Name -> (String -> String) -> Q Name
 rename n f = do
@@ -252,6 +268,31 @@ appExp' :: [Exp] -> Exp
 appExp' = foldl1 AppE
 
+unappExp :: ExpQ -> Q [Exp]
+unappExp = fmap unappExp'
+
+unappExp' :: Exp -> [Exp]
+unappExp' a@(AppE e1 e2) = reverse $ unfold (not.isAppE)  unappE restUnappE a
+unappExp' e = [e]
+
+foo = (AppE (AppE (VarE 'const) (LitE (IntegerL 3))) (ConE (mkName "True")))
+
+isAppE :: Exp -> Bool
+isAppE (AppE _ _) = True
+isAppE _ = False
+
+unappE :: Exp -> Exp
+unappE (AppE e1 e2) = e2
+unappE x = x
+
+restUnappE :: Exp -> Exp
+restUnappE (AppE e1 e2) = e1
+restunappE x = x
+
+unfold :: (t1 -> Bool) -> (t1 -> t1) -> (t1 -> t1) -> t1 -> [t1]
+unfold p h t x | p x = [x]
+               | otherwise =  h x : unfold p h t (t x)
+
 -- | Apply a type constructor like 'appExp'
 
 {-|
@@ -262,10 +303,35 @@ appConT :: [TypeQ] -> TypeQ
 appConT = foldl1 appT
 
+-- | Unapply a constructor application to a list of types
+unappConT' :: Type -> [Type]
+unappConT' a@(AppT t1 t2) = reverse $ unfold (not.isAppT) unappT restUnappT a
+unappConT' a@(ForallT tvbs cxt t) = reverse $ unfold (not.isAppT) unappT restUnappT t
+unappConT' x = [x]
+
+-- | Unapply a constructor application to a list of types
+unappConT :: TypeQ -> Q [Type]
+unappConT = fmap unappConT'
+
+--fooT = AppT (AppT (ConT ''Either) (ConT ''Int)) (ConT ''Bool)
+
+isAppT :: Type -> Bool
+isAppT (AppT _ _ ) = True
+isAppT _ = False
+
+unappT :: Type -> Type
+unappT (AppT t1 t2) = t2
+unappT x = x
+
+restUnappT :: Type -> Type
+restUnappT (AppT t1 t2) = t1
+restUnappT x = x
+
 appConT' :: [Type] -> Type
 appConT' = foldl1 AppT
 
--- | > convert [a, b, c] to a -> b -> c
+
+-- | convert @[a, b, c]@ to @a -> b -> c@
 {-|
 > > pprint $ curryType' (map ConT [''Int , ''Int , ''Bool])
 > "GHC.Types.Int -> GHC.Types.Int -> GHC.Types.Bool"
@@ -276,7 +342,24 @@ curryType' :: [Type] -> Type
 curryType' = foldr1 (\t1 -> AppT (AppT ArrowT t1))
 
+-- | > convert @a -> b -> c@ to @[a,b,c]
 {-|
+> > uncurryType' (ForallT [PlainTV (mkName "a")] [] (AppT (AppT ArrowT (VarT (mkName "a"))) (ConT ''Int)))
+> > [VarT a,ConT GHC.Types.Int]
+-}
+uncurryType :: TypeQ -> Q [Type]
+uncurryType = fmap uncurryType'
+
+uncurryType' :: Type -> [Type]
+uncurryType' t@(AppT (AppT ArrowT t1) t2) = t1 : helper t2
+uncurryType' t@(ForallT tyvs cxt ty) = helper ty
+uncurryType' x = [x]
+
+helper :: Type -> [Type]
+helper t@(AppT (AppT ArrowT t1) t2) = t1 : helper t2
+helper t = [t]
+
+{-|
 > > genBT' "a" 3
 > ([PlainTV a1,PlainTV a2,PlainTV a3],[VarT a1,VarT a2,VarT a3])
 -}
@@ -294,11 +377,11 @@ genBT' name n = let ns = [name++ (show i) | i <- [1..n]] 
                     in (map (plainTV.mkName) ns, map (VarT . mkName) ns)
 
+
 {-|
 > > genPE' "a" 3
 > ([VarP a1,VarP a2,VarP a3],[VarE a1,VarE a2,VarE a3])
 -}
-
 -- | Generate related patterns and expressions
 genPE :: String -> Int -> Q ([PatQ],[ExpQ])
 genPE name n = do 
@@ -313,13 +396,21 @@                  in (map (VarP . mkName) ns,map (VarE . mkName) ns)
 
 -- | Apply a list of kinds, like 'appConT'
-appKinds :: [Kind] -> Kind
-appKinds = foldr1 AppT
+appKind :: [Kind] -> Kind
+appKind = foldr1 AppT
 
+-- | Like 'unappConT' 
+unappKind :: Kind -> [Kind]
+unappKind  = unappConT'
+
 -- | Like 'curryType' but on kind level
 curryKind :: [Kind] -> Kind
 curryKind =  curryType'
 
+-- | Like 'uncurryType'
+uncurryKind :: Kind -> [Kind]
+uncurryKind = uncurryType'
+
 -- | Get name from constructors
 getConName :: Con -> Name 
 getConName (NormalC name _)  = name 
@@ -327,7 +418,7 @@ getConName (InfixC _ name _) = name 
 getConName (ForallC _ _ con) = getConName con 
 
--- | Get type Names recursively
+-- | Get type Names recursively, You can transform it to set if you want.
 getTypeNames :: Type -> [Name]
 getTypeNames (ForallT tvbs cxt t) = getTypeNames t
 getTypeNames (ConT n) = [n]
@@ -348,4 +439,3 @@ getCompositeType (InfixC st1 n st2)     = concatMap getTypeNames [snd st1 , snd st2]
 -- This could be a problem since it will lose info for context and type variables 
 getCompositeType (ForallC tvbs cxt con) = getCompositeType con
-
template-haskell-util.cabal view
@@ -2,7 +2,7 @@ -- further documentation, see http://haskell.org/cabal/users-guide/
 
 name:                template-haskell-util
-version:             0.1.0.4
+version:             0.1.1.0
 synopsis:            Some utilities for template Haskell.
 description:         Some functions that might be useful when you use template haskell.
 homepage:            https://github.com/HaskellZhangSong/TemplateHaskellUtils
@@ -11,10 +11,11 @@ author:              songzh
 maintainer:          Haskell.Zhang.Song@hotmail.com
 -- copyright:           
-stability:	         experimental
+stability:	        experimental
 category:            Template Haskell
 build-type:          Simple
 extra-source-files:  README.md
+                     changelog.md
 cabal-version:       >=1.10
 
 library