summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven <steven.vasilogianis@gmail.com>2019-06-03 00:08:13 -0400
committerSteven <steven.vasilogianis@gmail.com>2019-06-03 00:08:13 -0400
commitd525371ba284eb78da9d7de075c593ed3a2fca4b (patch)
tree7b0229419e4c39c730212abe3a1da77d2bfce49c
parenta5cb206cca2bd0838f0370a85a1615b6f8761254 (diff)
parent04f5e6626202e97de12d7f26986cc68e7fdde902 (diff)
Merge branch 'master' of emmy.childrenofmay.org:public_git/8queens
-rw-r--r--.gitignore1
-rwxr-xr-x.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/8queensbin5970224 -> 0 bytes
-rw-r--r--.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/8queens-tmp/Main.hibin60739 -> 0 bytes
-rw-r--r--.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/8queens-tmp/Main.obin128520 -> 0 bytes
-rw-r--r--.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/8queens-tmp/src/Main.dump-hi2517
-rw-r--r--.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/autogen/Paths_8queens.hs50
-rw-r--r--.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/autogen/cabal_macros.h195
-rw-r--r--.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/package.conf.inplace/package.cachebin40 -> 0 bytes
-rw-r--r--.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/package.conf.inplace/package.cache.lock0
-rw-r--r--.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup-configbin324724 -> 0 bytes
-rw-r--r--.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/stack-build-caches/exe-8queensbin665 -> 0 bytes
-rw-r--r--.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/stack-cabal-modbin50 -> 0 bytes
-rw-r--r--.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/stack-config-cachebin5836 -> 0 bytes
-rw-r--r--.stack-work/ghci/3a535720/cabal_macros.h198
-rw-r--r--.stack-work/ghci/429a2e1e/cabal_macros.h176
-rw-r--r--.stack-work/ghci/c89d8de5/cabal_macros.h198
-rw-r--r--.stack-work/ghci/df908bbc/cabal_macros.h187
-rw-r--r--.stack-work/ghci/ec6a65a6/cabal_macros.h165
-rwxr-xr-x.stack-work/install/x86_64-linux/lts-13.22/8.6.5/bin/8queensbin3915560 -> 0 bytes
-rwxr-xr-x.stack-work/install/x86_64-linux/lts-13.22/8.6.5/bin/interobin1589288 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/doc/8queens-0.1.0.0/LICENSE30
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/doc/intero-0.1.40/LICENSE27
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/8queens-0.1.0.0bin5836 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/Cabal-2.4.1.0-9MZFDeNrcJI10bcroa6pq8bin5983 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/StateVar-1.1.1.1-2ewTKofpCGhC2np5dyFIaRbin3599 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/adjunctions-4.4-5XvmwZ9ik8T4JDgak5RolEbin7391 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/base-orphans-0.8.1-HeyTAcy4PKhDcGhjvJwDzqbin3421 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/bifunctors-5.5.4-JI14q9FdaTRLWn4YdH8JmVbin5347 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/bytes-0.15.5-3xefL3v3Ncd2XFpMRBDGRqbin7351 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/cabal-doctest-1.0.6-GxlnXP6RWcB1QAJigGyNcvbin3963 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/call-stack-0.1.0-J1eWgTNOnM4IGVyeW0v2YZbin3209 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/cereal-0.5.8.0-6rtfJLvNbgP66iuaPkuxJCbin3989 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/comonad-5.0.5-FO6wPvVdvoe5bevdeq1PfMbin5413 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/contravariant-1.5.1-5DqKSjbrRzZU8YLmfpGsFbin3823 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/distributive-0.6-9dQuxsXiNSOFiN4BOgtPCRbin4805 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/exceptions-0.10.2-965Nx9KftkgCsZ4B7Zhuyubin4471 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/free-5.1.1-4bsEiYxPhIEFqPXXuEKbd4bin6191 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/ghc-paths-0.1.0.9-KaBYbRV3ryA10w04FwbrO2bin3739 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/hashable-1.2.7.0-CWI8VZuQTAYWIQTQQtqCVbin4203 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/haskeline-0.7.5.0-ADzuRaH0DKHIRvvi965fg2bin5017 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/hmatrix-0.19.0.0-2s9G4ERdQNGmPHLhVSJnlbin5665 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/integer-logarithms-1.0.3-L1fXvdNnENnEcLpMml0rI7bin3893 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/intero-0.1.40bin8013 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/invariant-0.5.3-COCiLnaO8ceLaFLP8ApMB8bin7763 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/kan-extensions-5.2-GOoLNNVeT9xL7L35wynQJCbin7469 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/lens-4.17.1-HvuC79b14LY7GYVb6qSW7jbin12429 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/linear-1.20.9-8i87OQRLMk19j5jCRXHfj4bin10347 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/loop-0.3.0-KBOFzTkURfGITuXz2VUslNbin3137 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/matrix-0.3.6.1-CUcUqfmsmAA7saz436AQSkbin4685 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/network-2.8.0.1-Hmt657UE3v349uYmvUXEvWbin3583 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/parallel-3.2.2.0-EGl5SOk48TWHAD161C93aQbin3977 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/primitive-0.6.4.0-ILgywxtLpvnAOlEISPpP5bbin3649 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/profunctors-5.3-IpGd709zs3V8sI6m3XgDztbin5847 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/random-1.1-3ypV4EIycgb35PKjTYYr5qbin3297 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/reflection-2.1.4-E9VXTbXoqHZ5rulgGPZOrFbin3495 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/scientific-0.3.6.2-Jh87LYpjAZH3EhMJkXeu1Sbin5545 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/semigroupoids-5.3.2-Ka80fCBNMcd1Be50r62zFCbin7953 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/semigroups-0.18.5-6T2lH5F6zyQIdwR3JYKMO3bin3221 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/split-0.2.3.3-6n1iQ0JLFvkeXvJXsAqQcbin3173 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/storable-complex-0.2.3.0-IqTssBZ2G90J9kRbLSMmF1bin3671 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/syb-0.7-KRW1LCxdMiCJrmhxCvzo37bin3101 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/tagged-0.8.6-EiJ2F18RuD68LSMkg0Ly4rbin3877 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/th-abstraction-0.2.11.0-DAhuCgi08HTBWsDjm9nrOqbin3987 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/transformers-base-0.4.5.2-FZmnqdpGRpbAstl7i9dBCkbin4509 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/transformers-compat-0.6.5-JTHfwAgpAU6AqyWxijPF3Zbin3801 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/unordered-containers-0.2.9.0-BRWkoSTuML1cQdpep6Oinbin3875 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/vector-0.12.0.3-2LEYu9M2i7lERDtz76XG3nbin3923 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/void-0.7.3-5xXWQQsTYbKFlr3KfNvyL8bin3137 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/installed-packages/8queens-0.1.0.01
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/installed-packages/intero-0.1.401
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/pkgdb/package.cachebin40 -> 0 bytes
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/pkgdb/package.cache.lock0
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/share/x86_64-linux-ghc-8.6.5/intero-0.1.40/elisp/haskell-simple-indent.el273
-rw-r--r--.stack-work/install/x86_64-linux/lts-13.22/8.6.5/share/x86_64-linux-ghc-8.6.5/intero-0.1.40/elisp/intero.el3676
-rw-r--r--.stack-work/intero/intero-script15638LtG4
-rw-r--r--.stack-work/intero/intero-script18425zvS4
-rw-r--r--.stack-work/intero/intero-script21871YJc4
-rw-r--r--.stack-work/intero/intero-script250346te4
-rw-r--r--.stack-work/intero/intero-script25034H4k4
-rw-r--r--.stack-work/intero/intero-script25034UCr4
-rw-r--r--.stack-work/intero/intero-script25034UQT4
-rw-r--r--.stack-work/intero/intero-script25034gZS4
-rw-r--r--.stack-work/intero/intero-script25034haZ4
-rw-r--r--.stack-work/intero/intero-script25034tjY4
-rw-r--r--.stack-work/intero/intero-script265874pa4
-rw-r--r--.stack-work/intero/intero-script26587REU4
-rw-r--r--.stack-work/intero/intero-script26587S-m4
-rw-r--r--.stack-work/intero/intero-script26587sZn4
-rw-r--r--.stack-work/intero/intero-script31583KtK4
-rw-r--r--.stack-work/intero/intero-script31583X3Q4
-rw-r--r--.stack-work/intero/intero-script38150SJ4
-rw-r--r--.stack-work/intero/intero-script3815OuJ4
-rw-r--r--.stack-work/intero/intero-script3815a3I4
-rw-r--r--.stack-work/intero/intero-script3815nBP4
-rw-r--r--.stack-work/intero/intero-script4078Wgy4
-rw-r--r--.stack-work/intero/intero-script75130iQ4
-rw-r--r--.stack-work/intero/intero-script7513nYK4
-rw-r--r--.stack-work/intero/intero15638-bM-STAGING.hs132
-rw-r--r--.stack-work/intero/intero15638LmS-TEMP.hs0
-rw-r--r--.stack-work/intero/intero18425meY-STAGING.hs46
-rw-r--r--.stack-work/intero/intero18425zoe-TEMP.hs0
-rw-r--r--.stack-work/intero/intero21871-0P-TEMP.hs0
-rw-r--r--.stack-work/intero/intero21871xqJ-STAGING.hs46
-rw-r--r--.stack-work/intero/intero232079je-TEMP.hs0
-rw-r--r--.stack-work/intero/intero23207wZY-STAGING.hs46
-rw-r--r--.stack-work/intero/intero25034GFG-TEMP.hs0
-rw-r--r--.stack-work/intero/intero25034U72-STAGING.hs5
-rw-r--r--.stack-work/intero/intero265874by-STAGING.hs201
-rw-r--r--.stack-work/intero/intero26587qlB-TEMP.hs0
-rw-r--r--.stack-work/intero/intero30739dbu-STAGING.hs127
-rw-r--r--.stack-work/intero/intero30739ql0-TEMP.hs0
-rw-r--r--.stack-work/intero/intero31583k6i-STAGING.hs127
-rw-r--r--.stack-work/intero/intero31583xEp-TEMP.hs0
-rw-r--r--.stack-work/intero/intero38150Eh-TEMP.hs0
-rw-r--r--.stack-work/intero/intero3815n6a-STAGING.hs69
-rw-r--r--.stack-work/intero/intero4078i3Z-STAGING.hs55
-rw-r--r--.stack-work/intero/intero4078vBg-TEMP.hs0
-rw-r--r--.stack-work/intero/intero5164dbY-STAGING.hs46
-rw-r--r--.stack-work/intero/intero5164qle-TEMP.hs0
-rw-r--r--.stack-work/intero/intero7513Owo-STAGING.hs152
-rw-r--r--.stack-work/intero/intero7513b6u-TEMP.hs0
-rw-r--r--.stack-work/logs/Cabal-2.4.1.0.log225
-rw-r--r--.stack-work/logs/StateVar-1.1.1.1.log6
-rw-r--r--.stack-work/logs/adjunctions-4.4.log46
-rw-r--r--.stack-work/logs/base-orphans-0.8.1.log7
-rw-r--r--.stack-work/logs/bifunctors-5.5.4.log20
-rw-r--r--.stack-work/logs/bytes-0.15.5.log13
-rw-r--r--.stack-work/logs/cabal-doctest-1.0.6.log6
-rw-r--r--.stack-work/logs/call-stack-0.1.0.log8
-rw-r--r--.stack-work/logs/cereal-0.5.8.0.log16
-rw-r--r--.stack-work/logs/comonad-5.0.5.log23
-rw-r--r--.stack-work/logs/contravariant-1.5.1.log8
-rw-r--r--.stack-work/logs/distributive-0.6.log10
-rw-r--r--.stack-work/logs/exceptions-0.10.2.log7
-rw-r--r--.stack-work/logs/free-5.1.1.log41
-rw-r--r--.stack-work/logs/ghc-paths-0.1.0.9.log17
-rw-r--r--.stack-work/logs/hashable-1.2.7.0.log9
-rw-r--r--.stack-work/logs/haskeline-0.7.5.0.log32
-rw-r--r--.stack-work/logs/hmatrix-0.19.0.0.log48
-rw-r--r--.stack-work/logs/integer-logarithms-1.0.3.log9
-rw-r--r--.stack-work/logs/intero-0.1.40.log64
-rw-r--r--.stack-work/logs/invariant-0.5.3.log9
-rw-r--r--.stack-work/logs/kan-extensions-5.2.log18
-rw-r--r--.stack-work/logs/lens-4.17.1.log91
-rw-r--r--.stack-work/logs/linear-1.20.9.log30
-rw-r--r--.stack-work/logs/loop-0.3.0.log7
-rw-r--r--.stack-work/logs/matrix-0.3.6.1.log86
-rw-r--r--.stack-work/logs/network-2.8.0.1.log132
-rw-r--r--.stack-work/logs/parallel-3.2.2.0.log8
-rw-r--r--.stack-work/logs/primitive-0.6.4.0.log20
-rw-r--r--.stack-work/logs/profunctors-5.3.log21
-rw-r--r--.stack-work/logs/random-1.1.log14
-rw-r--r--.stack-work/logs/reflection-2.1.4.log6
-rw-r--r--.stack-work/logs/scientific-0.3.6.2.log10
-rw-r--r--.stack-work/logs/semigroupoids-5.3.2.log29
-rw-r--r--.stack-work/logs/semigroups-0.18.5.log6
-rw-r--r--.stack-work/logs/split-0.2.3.3.log7
-rw-r--r--.stack-work/logs/storable-complex-0.2.3.0.log6
-rw-r--r--.stack-work/logs/syb-0.7.log21
-rw-r--r--.stack-work/logs/tagged-0.8.6.log7
-rw-r--r--.stack-work/logs/th-abstraction-0.2.11.0.log7
-rw-r--r--.stack-work/logs/transformers-base-0.4.5.2.log6
-rw-r--r--.stack-work/logs/transformers-compat-0.6.5.log9
-rw-r--r--.stack-work/logs/unordered-containers-0.2.9.0.log122
-rw-r--r--.stack-work/logs/vector-0.12.0.3.log26
-rw-r--r--.stack-work/logs/void-0.7.3.log6
-rw-r--r--8queens.cabal1
167 files changed, 2 insertions, 10157 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8ee1bf9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
.stack-work
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/8queens b/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/8queens
deleted file mode 100755
index 9ca59a9..0000000
--- a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/8queens
+++ /dev/null
Binary files differ
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/8queens-tmp/Main.hi b/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/8queens-tmp/Main.hi
deleted file mode 100644
index 9e3e3a5..0000000
--- a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/8queens-tmp/Main.hi
+++ /dev/null
Binary files differ
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/8queens-tmp/Main.o b/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/8queens-tmp/Main.o
deleted file mode 100644
index 1dadf1b..0000000
--- a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/8queens-tmp/Main.o
+++ /dev/null
Binary files differ
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/8queens-tmp/src/Main.dump-hi b/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/8queens-tmp/src/Main.dump-hi
deleted file mode 100644
index f380580..0000000
--- a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/8queens-tmp/src/Main.dump-hi
+++ /dev/null
@@ -1,2517 +0,0 @@
1
2==================== FINAL INTERFACE ====================
32019-05-29 23:57:35.287700482 UTC
4
5interface main:Main 8065
6 interface hash: 47c5f1b0ac88d7964b8d3ff4b4c5ad24
7 ABI hash: 6a25402bbb47d2db70b5fccc80b8cd10
8 export-list hash: 14799b7f7205366154cf4737867653f6
9 orphan hash: 544728fd6478f60c87fd98f72c918bf5
10 flag hash: 1638722aa932cf70c70adfffb210f5e7
11 opt_hash: 6faf2de08de32d19db9870899d88e59a
12 hpc_hash: 93b885adfe0da089cdf634904fd59f71
13 plugin_hash: ad164012d6b1e14942349d58b1132007
14 sig of: Nothing
15 used TH splices: False
16 where
17exports:
18 Main.allPositions
19 Main.allops
20 Main.applyop
21 Main.applyops
22 Main.diag
23 Main.diag''
24 Main.getColL
25 Main.getDiagL
26 Main.getRowColDiag
27 Main.getRowL
28 Main.initBoard
29 Main.isWinnable
30 Main.isWinnable'
31 Main.lo8
32 Main.main
33 Main.mapDiag
34 Main.mapQueensPath
35 Main.mapRowColDiag
36 Main.markX
37 Main.nextAvail
38 Main.nextOpen
39 Main.onBoard
40 Main.openPositions
41 Main.ops
42 Main.placeQueen
43 Main.placeQueen'
44 Main.queenAllowed
45 Main.s
46 Main.scanBoard
47 Main.solve
48 Main.w
49 Main.winnable
50 Main.winners
51 Main.winners'
52 Main.Square{Main.O Main.Qu Main.T Main.X}
53module dependencies:
54package dependencies: StateVar-1.1.1.1 adjunctions-4.4
55 array-0.5.3.0 base-4.12.0.0 base-orphans-0.8.1 bifunctors-5.5.4
56 binary-0.8.6.0 bytes-0.15.5 bytestring-0.10.8.2 call-stack-0.1.0
57 cereal-0.5.8.0 comonad-5.0.5 containers-0.6.0.1 contravariant-1.5.1
58 deepseq-1.4.4.0 distributive-0.6 exceptions-0.10.2 free-5.1.1
59 ghc-boot-th-8.6.5 ghc-prim-0.5.3 hashable-1.2.7.0
60 integer-gmp-1.0.2.0 integer-logarithms-1.0.3 kan-extensions-5.2
61 lens-4.17.1 linear-1.20.9 loop-0.3.0 matrix-0.3.6.1 mtl-2.2.2
62 pretty-1.1.3.6 primitive-0.6.4.0 profunctors-5.3 random-1.1
63 reflection-2.1.4 scientific-0.3.6.2 semigroupoids-5.3.2 stm-2.5.0.0
64 tagged-0.8.6 template-haskell-2.14.0.0 text-1.2.3.1
65 th-abstraction-0.2.11.0 time-1.8.0.2 transformers-0.5.6.2
66 transformers-base-0.4.5.2 transformers-compat-0.6.5
67 unordered-containers-0.2.9.0 vector-0.12.0.3
68orphans: time-1.8.0.2:Data.Time.Clock.TAI
69 reflection-2.1.4:Data.Reflection
70 vector-0.12.0.3:Data.Vector.Unboxed stm-2.5.0.0:Control.Monad.STM
71 hashable-1.2.7.0:Data.Hashable.Generic text-1.2.3.1:Data.Text.Lazy
72 text-1.2.3.1:Data.Text binary-0.8.6.0:Data.Binary.Generic
73 bytestring-0.10.8.2:Data.ByteString.Builder
74 text-1.2.3.1:Data.Text.Show linear-1.20.9:Linear.Instances
75 vector-0.12.0.3:Data.Vector.Fusion.Bundle
76 transformers-0.5.6.2:Control.Monad.Trans.Error
77 time-1.8.0.2:Data.Time.Format.Parse
78 time-1.8.0.2:Data.Time.LocalTime.Internal.ZonedTime
79 time-1.8.0.2:Data.Time.LocalTime.Internal.LocalTime
80 time-1.8.0.2:Data.Time.Calendar.Gregorian base-4.12.0.0:GHC.Float
81 base-4.12.0.0:GHC.Base
82family instance modules: adjunctions-4.4:Data.Functor.Rep
83 base-4.12.0.0:Control.Applicative base-4.12.0.0:Data.Complex
84 base-4.12.0.0:Data.Functor.Compose base-4.12.0.0:Data.Functor.Const
85 base-4.12.0.0:Data.Functor.Identity
86 base-4.12.0.0:Data.Functor.Product base-4.12.0.0:Data.Functor.Sum
87 base-4.12.0.0:Data.Monoid base-4.12.0.0:Data.Semigroup
88 base-4.12.0.0:Data.Semigroup.Internal base-4.12.0.0:Data.Version
89 base-4.12.0.0:Data.Void base-4.12.0.0:GHC.Exts
90 base-4.12.0.0:GHC.Generics base-4.12.0.0:GHC.IO.Exception
91 bifunctors-5.5.4:Data.Bifunctor.Biff
92 bifunctors-5.5.4:Data.Bifunctor.Clown
93 bifunctors-5.5.4:Data.Bifunctor.Fix
94 bifunctors-5.5.4:Data.Bifunctor.Flip
95 bifunctors-5.5.4:Data.Bifunctor.Join
96 bifunctors-5.5.4:Data.Bifunctor.Joker
97 bifunctors-5.5.4:Data.Bifunctor.Product
98 bifunctors-5.5.4:Data.Bifunctor.Sum
99 bifunctors-5.5.4:Data.Bifunctor.Tannen
100 bifunctors-5.5.4:Data.Bifunctor.Wrapped bytes-0.15.5:Data.Bytes.Get
101 bytes-0.15.5:Data.Bytes.Signed bytes-0.15.5:Data.Bytes.VarInt
102 containers-0.6.0.1:Data.IntMap.Internal
103 containers-0.6.0.1:Data.IntSet.Internal
104 containers-0.6.0.1:Data.Map.Internal
105 containers-0.6.0.1:Data.Sequence.Internal
106 containers-0.6.0.1:Data.Set.Internal containers-0.6.0.1:Data.Tree
107 free-5.1.1:Control.Comonad.Cofree
108 free-5.1.1:Control.Comonad.Trans.Cofree
109 free-5.1.1:Control.Monad.Free free-5.1.1:Control.Monad.Trans.Free
110 ghc-boot-th-8.6.5:GHC.ForeignSrcLang.Type
111 ghc-boot-th-8.6.5:GHC.LanguageExtensions.Type
112 kan-extensions-5.2:Data.Functor.Day
113 kan-extensions-5.2:Data.Functor.Yoneda lens-4.17.1:Control.Lens.At
114 lens-4.17.1:Control.Lens.Internal.Indexed
115 lens-4.17.1:Control.Lens.Reified lens-4.17.1:Control.Lens.Tuple
116 lens-4.17.1:Control.Lens.Wrapped lens-4.17.1:Control.Lens.Zoom
117 linear-1.20.9:Linear.V linear-1.20.9:Linear.V1
118 linear-1.20.9:Linear.V2 linear-1.20.9:Linear.V3
119 matrix-0.3.6.1:Data.Matrix
120 pretty-1.1.3.6:Text.PrettyPrint.Annotated.HughesPJ
121 pretty-1.1.3.6:Text.PrettyPrint.HughesPJ
122 primitive-0.6.4.0:Control.Monad.Primitive
123 primitive-0.6.4.0:Data.Primitive.Array
124 primitive-0.6.4.0:Data.Primitive.ByteArray
125 primitive-0.6.4.0:Data.Primitive.PrimArray
126 primitive-0.6.4.0:Data.Primitive.SmallArray
127 primitive-0.6.4.0:Data.Primitive.UnliftedArray
128 profunctors-5.3:Data.Profunctor.Composition
129 profunctors-5.3:Data.Profunctor.Rep tagged-0.8.6:Data.Tagged
130 template-haskell-2.14.0.0:Language.Haskell.TH.Syntax
131 text-1.2.3.1:Data.Text text-1.2.3.1:Data.Text.Lazy
132 th-abstraction-0.2.11.0:Language.Haskell.TH.Datatype
133 unordered-containers-0.2.9.0:Data.HashMap.Base
134 unordered-containers-0.2.9.0:Data.HashSet
135 vector-0.12.0.3:Data.Vector vector-0.12.0.3:Data.Vector.Primitive
136 vector-0.12.0.3:Data.Vector.Storable
137 vector-0.12.0.3:Data.Vector.Unboxed
138 vector-0.12.0.3:Data.Vector.Unboxed.Base
139import -/ base-4.12.0.0:Control.Applicative 2ae514eb141d45774730765c61bb41c0
140import -/ base-4.12.0.0:Data.Foldable efb37371da929e7bc88d896298d2d979
141import -/ base-4.12.0.0:Data.List 17d0c71c557e42abe196f130788fd997
142import -/ base-4.12.0.0:Data.OldList e931cf456dc87f11ee6e6fb153bca23e
143import -/ base-4.12.0.0:Data.Tuple c719fc29608fe81c10bee9a1bf1e05ff
144import -/ base-4.12.0.0:Foreign.Storable 379843bb6beffe814f03155babd3a2a1
145import -/ base-4.12.0.0:GHC.Base c00b75f0b052d05c55ba6a4dd1c63b26
146import -/ base-4.12.0.0:GHC.Err ea5e313ef4146b40b5d8b27aa168e736
147import -/ base-4.12.0.0:GHC.List 4014a3c8a3b7c31c8325f6bcf1feea4a
148import -/ base-4.12.0.0:GHC.Num c2039f03637c68f47b0bbff4c18ec616
149import -/ base-4.12.0.0:GHC.Show 838a5d039379d82d9626aae53dfce276
150import -/ base-4.12.0.0:Prelude 3c779dfd6448bdd8e234c336802c2acb
151import -/ base-4.12.0.0:System.IO dd4f3cfe73b94b7cae46a4ca98a3f09f
152import -/ ghc-prim-0.5.3:GHC.Classes 0f6fd7d7db53fc48f6e1f01803cc6c9d
153import -/ ghc-prim-0.5.3:GHC.Types 57064c9f957b09bc2e360061ad5cae0b
154import -/ lens-4.17.1:Control.Lens 3653945a21240fa9b051785ff6456731
155import -/ linear-1.20.9:Linear.V2 d56aa147d201434486a0d7613b12118c
156import -/ linear-1.20.9:Linear.V3 1dcebeca95d66b9152a160ce7257a571
157import -/ matrix-0.3.6.1:Data.Matrix 352cbb223ecd1589261f36f7ff17bc9c
158import -/ random-1.1:System.Random c6898761a03910f08acbe56f79c5fa96
159import -/ vector-0.12.0.3:Data.Vector 2f7b7a0ec8b90d2d82b017d1a022e0b2
160636ccc849665ce7c3156c440898486e4
161 $fEqSquare :: GHC.Classes.Eq Main.Square
162 DFunId
163 {- HasNoCafRefs, Strictness: m, Inline: CONLIKE,
164 Unfolding: DFun:.
165 @ Main.Square Main.$fEqSquare_$c== Main.$fEqSquare_$c/= -}
166636ccc849665ce7c3156c440898486e4
167 $fEqSquare_$c/= :: Main.Square -> Main.Square -> GHC.Types.Bool
168 {- Arity: 2, HasNoCafRefs, Strictness: <S,1*U><S,1*U>,
169 Inline: (sat-args=2),
170 Unfolding: InlineRule (2, False, False)
171 (\ (x :: Main.Square) (y :: Main.Square) ->
172 case x of wild {
173 Main.X
174 -> case y of wild1 {
175 DEFAULT -> GHC.Types.True Main.X -> GHC.Types.False }
176 Main.Qu
177 -> case y of wild1 {
178 DEFAULT -> GHC.Types.True Main.Qu -> GHC.Types.False }
179 Main.O
180 -> case y of wild1 {
181 DEFAULT -> GHC.Types.True Main.O -> GHC.Types.False }
182 Main.T
183 -> case y of wild1 {
184 DEFAULT -> GHC.Types.True Main.T -> GHC.Types.False } }) -}
185636ccc849665ce7c3156c440898486e4
186 $fEqSquare_$c== :: Main.Square -> Main.Square -> GHC.Types.Bool
187 {- Arity: 2, HasNoCafRefs, Strictness: <S,1*U><S,1*U>,
188 Unfolding: (\ (ds :: Main.Square) (ds1 :: Main.Square) ->
189 case ds of wild {
190 Main.X
191 -> case ds1 of wild1 {
192 DEFAULT -> GHC.Types.False Main.X -> GHC.Types.True }
193 Main.Qu
194 -> case ds1 of wild1 {
195 DEFAULT -> GHC.Types.False Main.Qu -> GHC.Types.True }
196 Main.O
197 -> case ds1 of wild1 {
198 DEFAULT -> GHC.Types.False Main.O -> GHC.Types.True }
199 Main.T
200 -> case ds1 of wild1 {
201 DEFAULT -> GHC.Types.False Main.T -> GHC.Types.True } }) -}
202636ccc849665ce7c3156c440898486e4
203 $fShowSquare :: GHC.Show.Show Main.Square
204 DFunId
205 {- Strictness: m, Inline: CONLIKE,
206 Unfolding: DFun:.
207 @ Main.Square
208 Main.$fShowSquare_$cshowsPrec
209 Main.$fShowSquare_$cshow
210 Main.$fShowSquare_$cshowList -}
2114034c5a8da4227c6e128ffb263a94e31
212 $fShowSquare1 :: [GHC.Types.Char]
213 {- Unfolding: (GHC.CString.unpackCString# Main.$fShowSquare2) -}
21483314de2c755664d070f9c06df865e32
215 $fShowSquare2 :: GHC.Prim.Addr#
216 {- HasNoCafRefs, Unfolding: ("T"#) -}
21749ff713629ce3b98fedf0d710cd5834f
218 $fShowSquare3 :: [GHC.Types.Char]
219 {- Unfolding: (GHC.CString.unpackCString# Main.$fShowSquare4) -}
22015c027c2ef0f750ada425ea516d40011
221 $fShowSquare4 :: GHC.Prim.Addr#
222 {- HasNoCafRefs, Unfolding: ("O"#) -}
223a85da46c93392bfafc9def26682718a0
224 $fShowSquare5 :: [GHC.Types.Char]
225 {- Unfolding: (GHC.CString.unpackCString# Main.$fShowSquare6) -}
2262ab4bcdf43d08eb2889562449df03bd4
227 $fShowSquare6 :: GHC.Prim.Addr#
228 {- HasNoCafRefs, Unfolding: ("Qu"#) -}
229e23edf746cf45789786f8cf7d218e23c
230 $fShowSquare7 :: [GHC.Types.Char]
231 {- Unfolding: (GHC.CString.unpackCString# Main.$fShowSquare8) -}
2320f48faaafde9dbcb6bdc9acd532c3d1f
233 $fShowSquare8 :: GHC.Prim.Addr#
234 {- HasNoCafRefs, Unfolding: ("X"#) -}
235636ccc849665ce7c3156c440898486e4
236 $fShowSquare_$cshow :: Main.Square -> GHC.Base.String
237 {- Arity: 1, Strictness: <S,1*U>,
238 Unfolding: InlineRule (1, True, False)
239 (\ (x :: Main.Square) ->
240 case x of wild {
241 Main.X -> Main.$fShowSquare7
242 Main.Qu -> Main.$fShowSquare5
243 Main.O -> Main.$fShowSquare3
244 Main.T -> Main.$fShowSquare1 }) -}
245636ccc849665ce7c3156c440898486e4
246 $fShowSquare_$cshowList :: [Main.Square] -> GHC.Show.ShowS
247 {- Arity: 2, Strictness: <S,1*U><L,U>,
248 Unfolding: InlineRule (2, True, False)
249 (\ (ls :: [Main.Square]) (s1 :: GHC.Base.String) ->
250 GHC.Show.showList__ @ Main.Square Main.$w$cshowsPrec ls s1) -}
251636ccc849665ce7c3156c440898486e4
252 $fShowSquare_$cshowsPrec ::
253 GHC.Types.Int -> Main.Square -> GHC.Show.ShowS
254 {- Arity: 3, Strictness: <L,A><S,1*U><L,1*U>, Inline: [2],
255 Unfolding: InlineRule (3, True, True)
256 (\ (w1 :: GHC.Types.Int)
257 (w2 :: Main.Square)
258 (w3 :: GHC.Base.String) ->
259 Main.$w$cshowsPrec w2 w3) -}
26016f9cbadd6cc253275bae13256416fc2
261 $s$fEq(,) :: GHC.Classes.Eq (GHC.Types.Int, GHC.Types.Int)
262 {- HasNoCafRefs, Strictness: m, Inline: CONLIKE,
263 Unfolding: DFun:.
264 @ (GHC.Types.Int, GHC.Types.Int)
265 (GHC.Classes.$fEq(,)_$c==
266 @ GHC.Types.Int
267 @ GHC.Types.Int
268 GHC.Classes.$fEqInt
269 GHC.Classes.$fEqInt)
270 Main.$s$fEq(,)_$s$fEq(,)_$c/= -}
271d9c29de69e24759049df94d820948480
272 $s$fEq(,)_$s$fEq(,)_$c/= ::
273 (GHC.Types.Int, GHC.Types.Int)
274 -> (GHC.Types.Int, GHC.Types.Int) -> GHC.Types.Bool
275 {- Arity: 2, HasNoCafRefs,
276 Strictness: <S(S(S)L),1*U(1*U(U),1*U(U))><S(S(S)L),1*U(1*U(U),1*U(U))>,
277 Inline: (sat-args=2),
278 Unfolding: InlineRule (2, False, False)
279 (\ (x :: (GHC.Types.Int, GHC.Types.Int))
280 (y :: (GHC.Types.Int, GHC.Types.Int)) ->
281 case x of wild { (,) a1 a2 ->
282 case y of wild1 { (,) b1 b2 ->
283 case GHC.Classes.eqInt a1 b1 of wild2 {
284 GHC.Types.False -> GHC.Types.True
285 GHC.Types.True
286 -> case GHC.Classes.eqInt a2 b2 of wild3 {
287 GHC.Types.False -> GHC.Types.True
288 GHC.Types.True -> GHC.Types.False } } } }) -}
289a5aa05036c6055a96ceac3d767cdd7d3
290 $ssubtract :: GHC.Types.Int -> GHC.Types.Int -> GHC.Types.Int
291 {- Arity: 2, HasNoCafRefs, Strictness: <S(S),1*U(U)><S(S),1*U(U)>m,
292 Inline: (sat-args=2),
293 Unfolding: InlineRule (2, False, True)
294 (\ (x :: GHC.Types.Int) (y :: GHC.Types.Int) ->
295 GHC.Num.$fNumInt_$c- y x) -}
2964b1b8958426064b7d9309d9d2fdefe7c
297 $ssubtract1 ::
298 GHC.Integer.Type.Integer
299 -> GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer
300 {- Arity: 2, Strictness: <S,U><S,1*U>, Inline: (sat-args=2),
301 Unfolding: InlineRule (2, False, True)
302 (\ (x :: GHC.Integer.Type.Integer)
303 (y :: GHC.Integer.Type.Integer) ->
304 GHC.Integer.Type.minusInteger y x) -}
3056611e1da6e72881a60833105d1d890e3
306 $tc'O :: GHC.Types.TyCon
307 {- HasNoCafRefs, Strictness: m,
308 Unfolding: (GHC.Types.TyCon
309 9675801932394384788##
310 6712316648948115877##
311 Main.$trModule
312 Main.$tc'O2
313 0#
314 Main.$tc'O1) -}
315be5d1f5fee02b88e4232cb81c2af2579
316 $tc'O1 :: GHC.Types.KindRep
317 {- HasNoCafRefs, Strictness: m1, Inline: [~] -}
318ff261ad5b24f7fdd4296a33c047646a3
319 $tc'O2 :: GHC.Types.TrName
320 {- HasNoCafRefs, Strictness: m1,
321 Unfolding: (GHC.Types.TrNameS Main.$tc'O3) -}
322ef99b4220de234abd7b20254f6eb8a41
323 $tc'O3 :: GHC.Prim.Addr#
324 {- HasNoCafRefs, Unfolding: ("'O"#) -}
325ee107ec2d080306c47caa0ad45ca2789
326 $tc'Qu :: GHC.Types.TyCon
327 {- HasNoCafRefs, Strictness: m,
328 Unfolding: (GHC.Types.TyCon
329 17979074984894399304##
330 18119058677283552676##
331 Main.$trModule
332 Main.$tc'Qu1
333 0#
334 Main.$tc'O1) -}
335aa91b9b113b846476e7a8ca91ca447fa
336 $tc'Qu1 :: GHC.Types.TrName
337 {- HasNoCafRefs, Strictness: m1,
338 Unfolding: (GHC.Types.TrNameS Main.$tc'Qu2) -}
339ad8c06afed71d1de83408f6e00133f92
340 $tc'Qu2 :: GHC.Prim.Addr#
341 {- HasNoCafRefs, Unfolding: ("'Qu"#) -}
34241821a7de349be54ac630d2049b64a42
343 $tc'T :: GHC.Types.TyCon
344 {- HasNoCafRefs, Strictness: m,
345 Unfolding: (GHC.Types.TyCon
346 15564654814037795574##
347 9702549696965301893##
348 Main.$trModule
349 Main.$tc'T1
350 0#
351 Main.$tc'O1) -}
35282969608b13a211f112632f79676d867
353 $tc'T1 :: GHC.Types.TrName
354 {- HasNoCafRefs, Strictness: m1,
355 Unfolding: (GHC.Types.TrNameS Main.$tc'T2) -}
356187cc49652b02277d0b99ae5ea1a5fd9
357 $tc'T2 :: GHC.Prim.Addr#
358 {- HasNoCafRefs, Unfolding: ("'T"#) -}
359581a21f4a7e2a1d9b2996ff8c471b022
360 $tc'X :: GHC.Types.TyCon
361 {- HasNoCafRefs, Strictness: m,
362 Unfolding: (GHC.Types.TyCon
363 5225325308912582631##
364 14983302646393556978##
365 Main.$trModule
366 Main.$tc'X1
367 0#
368 Main.$tc'O1) -}
3693a2176738fada4904e3cf07296e7fdfd
370 $tc'X1 :: GHC.Types.TrName
371 {- HasNoCafRefs, Strictness: m1,
372 Unfolding: (GHC.Types.TrNameS Main.$tc'X2) -}
373568425ffbb1010e85481e6073e42496e
374 $tc'X2 :: GHC.Prim.Addr#
375 {- HasNoCafRefs, Unfolding: ("'X"#) -}
376dbf71b2385a61bc04046efc2d3fd1efc
377 $tcSquare :: GHC.Types.TyCon
378 {- HasNoCafRefs, Strictness: m,
379 Unfolding: (GHC.Types.TyCon
380 10164887948691462873##
381 15713138518001860047##
382 Main.$trModule
383 Main.$tcSquare1
384 0#
385 GHC.Types.krep$*) -}
386375635f77e678ce251c5463aacfeeccd
387 $tcSquare1 :: GHC.Types.TrName
388 {- HasNoCafRefs, Strictness: m1,
389 Unfolding: (GHC.Types.TrNameS Main.$tcSquare2) -}
39028ba19c10877e3323cf2c279f530ca96
391 $tcSquare2 :: GHC.Prim.Addr#
392 {- HasNoCafRefs, Unfolding: ("Square"#) -}
393be86c9d078d3acbf19ba91fe74a24273
394 $trModule :: GHC.Types.Module
395 {- HasNoCafRefs, Strictness: m,
396 Unfolding: (GHC.Types.Module Main.$trModule3 Main.$trModule1) -}
397b09d86f2c49dd5176b544d8d13ddb6c5
398 $trModule1 :: GHC.Types.TrName
399 {- HasNoCafRefs, Strictness: m1,
400 Unfolding: (GHC.Types.TrNameS Main.$trModule2) -}
401e5875966b74dad2d29772660b8a75e33
402 $trModule2 :: GHC.Prim.Addr#
403 {- HasNoCafRefs, Unfolding: ("Main"#) -}
40423b03bd7d075a00f5ad1ee10e6add7b8
405 $trModule3 :: GHC.Types.TrName
406 {- HasNoCafRefs, Strictness: m1,
407 Unfolding: (GHC.Types.TrNameS Main.$trModule4) -}
408d026be77cb9ced20e35a61514e0458aa
409 $trModule4 :: GHC.Prim.Addr#
410 {- HasNoCafRefs, Unfolding: ("main"#) -}
411636ccc849665ce7c3156c440898486e4
412 $w$cshowsPrec :: Main.Square -> GHC.Base.String -> GHC.Base.String
413 {- Arity: 2, Strictness: <S,1*U><L,1*U>, Inline: [2],
414 Unfolding: (\ (w1 :: Main.Square) (w2 :: GHC.Base.String) ->
415 case w1 of wild {
416 Main.X -> GHC.Base.++ @ GHC.Types.Char Main.$fShowSquare7 w2
417 Main.Qu -> GHC.Base.++ @ GHC.Types.Char Main.$fShowSquare5 w2
418 Main.O -> GHC.Base.++ @ GHC.Types.Char Main.$fShowSquare3 w2
419 Main.T -> GHC.Base.++ @ GHC.Types.Char Main.$fShowSquare1 w2 }) -}
42098dbe0ea72c75ba926317b7f7608e4d8
421 $wdiag ::
422 GHC.Prim.Int#
423 -> GHC.Types.Int
424 -> Data.Matrix.Matrix a
425 -> [(GHC.Types.Int, GHC.Types.Int)]
426 {- Arity: 3, HasNoCafRefs,
427 Strictness: <S,U><L,U(U)><L,U(U,U,A,A,A,A)>, Inline: [2],
428 Unfolding: (\ @ a
429 (ww :: GHC.Prim.Int#)
430 (ww1 :: GHC.Types.Int)
431 (w1 :: Data.Matrix.Matrix a) ->
432 let {
433 $wc :: (GHC.Types.Int -> GHC.Types.Int)
434 -> (GHC.Types.Int -> GHC.Types.Int)
435 -> [(GHC.Types.Int, GHC.Types.Int)]
436 {- Arity: 2, Strictness: <L,C(U(U))><L,C(U(U))>, Inline: [2] -}
437 = \ (ww2 :: GHC.Types.Int -> GHC.Types.Int)
438 (ww3 :: GHC.Types.Int -> GHC.Types.Int)[OneShot] ->
439 letrec {
440 $wgo2 :: GHC.Prim.Int#
441 -> GHC.Types.Int -> [(GHC.Types.Int, GHC.Types.Int)]
442 {- Arity: 2, Strictness: <S,U><L,1*U(U)>, Inline: [2] -}
443 = \ (ww4 :: GHC.Prim.Int#) (ww5 :: GHC.Types.Int) ->
444 case GHC.Prim.>=# ww4 1# of lwild {
445 DEFAULT -> GHC.Types.[] @ (GHC.Types.Int, GHC.Types.Int)
446 1#
447 -> case w1 of wild { Data.Matrix.M dt dt1 dt2 dt3 dt4 ds1 ->
448 case GHC.Prim.<=# ww4 dt of lwild1 {
449 DEFAULT -> GHC.Types.[] @ (GHC.Types.Int, GHC.Types.Int)
450 1#
451 -> case ww5 of wild1 { GHC.Types.I# x ->
452 case GHC.Prim.>=# x 1# of lwild2 {
453 DEFAULT -> GHC.Types.[] @ (GHC.Types.Int, GHC.Types.Int)
454 1#
455 -> case GHC.Prim.<=# x dt1 of lwild3 {
456 DEFAULT -> GHC.Types.[] @ (GHC.Types.Int, GHC.Types.Int)
457 1#
458 -> let {
459 i :: GHC.Types.Int = GHC.Types.I# ww4
460 } in
461 GHC.Types.:
462 @ (GHC.Types.Int, GHC.Types.Int)
463 (i, wild1)
464 (case ww2 i of ww6 { GHC.Types.I# ww7 ->
465 $wgo2 ww7 (ww3 wild1) }) } } } } } }
466 } in
467 $wgo2 ww ww1
468 } in
469 GHC.Base.++
470 @ (GHC.Types.Int, GHC.Types.Int)
471 ($wc Main.diag_a Main.diag_a)
472 (GHC.Base.++
473 @ (GHC.Types.Int, GHC.Types.Int)
474 ($wc Main.diag_a Main.diag_b)
475 (GHC.Base.++
476 @ (GHC.Types.Int, GHC.Types.Int)
477 ($wc Main.diag_b Main.diag_a)
478 (GHC.Base.++
479 @ (GHC.Types.Int, GHC.Types.Int)
480 ($wc Main.diag_b Main.diag_b)
481 (GHC.Types.[] @ (GHC.Types.Int, GHC.Types.Int)))))) -}
4822caee5b49997123c1e51e55e4c8a1465
483 $wdiag'' ::
484 (GHC.Num.Num b, GHC.Enum.Enum b, GHC.Num.Num a) =>
485 (a -> a -> [a]) -> a -> b -> [(a, b)]
486 {- Arity: 6, HasNoCafRefs,
487 Strictness: <L,U(A,A,A,A,A,A,C(U))><L,U(A,A,A,A,A,A,C(C1(U)),A)><L,U(A,A,A,A,A,A,C(U))><C(C(S)),C(C1(U))><L,U><L,U>,
488 Inline: [2] -}
489e7b8a501f5fd9578b49e2b724f683bc8
490 $wgetDiagL ::
491 GHC.Prim.Int# -> GHC.Types.Int -> Data.Matrix.Matrix a -> [a]
492 {- Arity: 3, Strictness: <S,U><L,U(U)><L,U(U,U,U,U,U,U(U,A,U))>,
493 Inline: [2],
494 Unfolding: (\ @ a
495 (ww :: GHC.Prim.Int#)
496 (ww1 :: GHC.Types.Int)
497 (w1 :: Data.Matrix.Matrix a) ->
498 GHC.Base.map
499 @ (GHC.Types.Int, GHC.Types.Int)
500 @ a
501 (\ (x :: (GHC.Types.Int, GHC.Types.Int)) -> Data.Matrix.! @ a w1 x)
502 (Main.$wdiag @ a ww ww1 w1)) -}
50311f7664f4ae85858621cfb12a0fb3060
504 $wgetRowColDiag ::
505 GHC.Types.Int
506 -> GHC.Types.Int
507 -> GHC.Prim.Int#
508 -> GHC.Prim.Int#
509 -> GHC.Prim.Int#
510 -> GHC.Prim.Int#
511 -> GHC.Prim.Int#
512 -> Data.Vector.Vector a
513 -> [((GHC.Types.Int, GHC.Types.Int), a)]
514 {- Arity: 8,
515 Strictness: <L,U(U)><L,U(U)><L,U><S,U><L,U><L,U><L,U><L,U(U,A,U)>,
516 Inline: [2] -}
517947a5776179f0c1f40c4a8ad30b9fd68
518 $wgo :: [Main.Square] -> GHC.Prim.Int# -> GHC.Types.Int
519 {- Arity: 2, HasNoCafRefs, Strictness: <S,1*U><S,U>m,
520 Inline: [2] -}
521715619f66da8ee3670b7cc69be050c49
522 $wisWinnable ::
523 GHC.Prim.Int# -> Data.Matrix.Matrix Main.Square -> GHC.Types.Bool
524 {- Arity: 2, Strictness: <S,U><L,U(U,U,U,U,U,U(U,A,U))>,
525 Inline: [2],
526 Unfolding: (\ (ww :: GHC.Prim.Int#)
527 (w1 :: Data.Matrix.Matrix Main.Square) ->
528 case GHC.Base.map
529 @ GHC.Types.Int
530 @ GHC.Types.Int
531 (\ (x :: GHC.Types.Int) ->
532 Main.$wgo (Main.getRowL @ Main.Square x w1) 0#)
533 Main.isWinnable1 of wild {
534 [] -> case GHC.List.maximum2 ret_ty GHC.Types.Bool of {}
535 : ipv ipv1
536 -> case ipv of ww1 { GHC.Types.I# ww2 ->
537 case GHC.List.$wgo ipv1 ww2 of ww3 { DEFAULT ->
538 case GHC.Prim.<=# ww ww3 of lwild {
539 DEFAULT -> GHC.Types.False
540 1#
541 -> case GHC.Base.map
542 @ GHC.Types.Int
543 @ GHC.Types.Int
544 (\ (x :: GHC.Types.Int) ->
545 Main.$wgo (Main.getColL @ Main.Square x w1) 0#)
546 Main.isWinnable1 of wild1 {
547 [] -> case GHC.List.maximum2 ret_ty GHC.Types.Bool of {}
548 : ipv2 ipv3
549 -> case ipv2 of ww4 { GHC.Types.I# ww5 ->
550 case GHC.List.$wgo ipv3 ww5 of ww6 { DEFAULT ->
551 GHC.Prim.tagToEnum#
552 @ GHC.Types.Bool
553 (GHC.Prim.<=# ww ww6) } } } } } } }) -}
55429e441a9726247d21b17947cf00c4bf0
555 $wisWinnable' :: Data.Matrix.Matrix Main.Square -> [GHC.Types.Char]
556 {- Arity: 1, Strictness: <L,U(U,U,U,U,U,U(U,A,U))>, Inline: [2],
557 Unfolding: (\ @ p (w1 :: Data.Matrix.Matrix Main.Square) ->
558 GHC.CString.unpackAppendCString#
559 Main.isWinnable'2
560 (case GHC.Base.map
561 @ GHC.Types.Int
562 @ GHC.Types.Int
563 (\ (x :: GHC.Types.Int) ->
564 Main.$wgo (Main.getRowL @ Main.Square x w1) 0#)
565 Main.isWinnable1 of wild {
566 [] -> case GHC.List.maximum2 ret_ty [GHC.Types.Char] of {}
567 : ipv ipv1
568 -> case ipv of ww { GHC.Types.I# ww1 ->
569 case GHC.List.$wgo ipv1 ww1 of ww2 { DEFAULT ->
570 case GHC.Show.$wshowSignedInt
571 0#
572 ww2
573 (GHC.Types.[] @ GHC.Types.Char) of ww4 { (#,#) ww5 ww6 ->
574 GHC.Base.++_$s++
575 @ GHC.Types.Char
576 (GHC.CString.unpackAppendCString#
577 Main.isWinnable'1
578 (case GHC.Base.map
579 @ GHC.Types.Int
580 @ GHC.Types.Int
581 (\ (x :: GHC.Types.Int) ->
582 Main.$wgo (Main.getColL @ Main.Square x w1) 0#)
583 Main.isWinnable1 of wild1 {
584 [] -> case GHC.List.maximum2 ret_ty [GHC.Types.Char] of {}
585 : ipv2 ipv3
586 -> case ipv2 of ww7 { GHC.Types.I# ww8 ->
587 case GHC.List.$wgo ipv3 ww8 of ww9 { DEFAULT ->
588 case GHC.Show.$wshowSignedInt
589 0#
590 ww9
591 (GHC.Types.[]
592 @ GHC.Types.Char) of ww10 { (#,#) ww11 ww12 ->
593 GHC.Types.: @ GHC.Types.Char ww11 ww12 } } } }))
594 ww5
595 ww6 } } } })) -}
5968247c69c6d133659d4fe141dff51dd1d
597 $wmapDiag ::
598 ((GHC.Types.Int, GHC.Types.Int) -> a -> a)
599 -> (GHC.Types.Int, GHC.Types.Int)
600 -> GHC.Prim.Int#
601 -> GHC.Prim.Int#
602 -> GHC.Prim.Int#
603 -> GHC.Prim.Int#
604 -> GHC.Prim.Int#
605 -> Data.Vector.Vector a
606 -> (# GHC.Prim.Int#, GHC.Prim.Int#, GHC.Prim.Int#, GHC.Prim.Int#,
607 GHC.Prim.Int#, Data.Vector.Vector a #)
608 {- Arity: 8,
609 Strictness: <L,C(C1(U))><L,1*U(1*U(U),U(U))><S,U><S,U><L,U><L,U><L,U><L,U(U,A,U)>,
610 Inline: [2] -}
611e1877462335ec1fb231f811fd98a6bec
612 $wmapRowColDiag ::
613 ((GHC.Types.Int, GHC.Types.Int) -> a -> a)
614 -> GHC.Types.Int
615 -> GHC.Types.Int
616 -> GHC.Prim.Int#
617 -> GHC.Prim.Int#
618 -> GHC.Prim.Int#
619 -> GHC.Prim.Int#
620 -> GHC.Prim.Int#
621 -> Data.Vector.Vector a
622 -> (# GHC.Prim.Int#, GHC.Prim.Int#, GHC.Prim.Int#, GHC.Prim.Int#,
623 GHC.Prim.Int#, Data.Vector.Vector a #)
624 {- Arity: 9,
625 Strictness: <L,C(C1(U))><L,U(U)><L,U(U)><S,U><S,U><L,U><L,U><L,U><L,U(U,A,U)>,
626 Inline: [2] -}
627d7372687809e115753d3bf6bcf601536
628 $wmarkX ::
629 (GHC.Types.Int, GHC.Types.Int)
630 -> GHC.Prim.Int#
631 -> GHC.Prim.Int#
632 -> GHC.Prim.Int#
633 -> GHC.Prim.Int#
634 -> GHC.Prim.Int#
635 -> Data.Vector.Vector Main.Square
636 -> (# GHC.Prim.Int#, GHC.Prim.Int#, GHC.Prim.Int#, GHC.Prim.Int#,
637 GHC.Prim.Int#, Data.Vector.Vector Main.Square #)
638 {- Arity: 7,
639 Strictness: <L,1*U(1*U(U),1*U(U))><S,U><S,U><S,U><S,U><S,U><L,1*U(U,U,U)>,
640 Inline: [2],
641 Unfolding: (\ (w1 :: (GHC.Types.Int, GHC.Types.Int))
642 (ww :: GHC.Prim.Int#)
643 (ww1 :: GHC.Prim.Int#)
644 (ww2 :: GHC.Prim.Int#)
645 (ww3 :: GHC.Prim.Int#)
646 (ww4 :: GHC.Prim.Int#)
647 (ww5 :: Data.Vector.Vector Main.Square) ->
648 (# ww, ww1, ww2, ww3, ww4,
649 case ww5 of v2 { Data.Vector.Vector ipv ipv1 ipv2 ->
650 case GHC.Magic.runRW#
651 @ ('GHC.Types.TupleRep
652 '[ 'GHC.Types.TupleRep '[], 'GHC.Types.LiftedRep])
653 @ (# GHC.Prim.State# GHC.Prim.RealWorld,
654 Data.Vector.Vector Main.Square #)
655 (\ (s1 :: GHC.Prim.State# GHC.Prim.RealWorld)[OneShot] ->
656 case GHC.Prim.>=# ipv1 0# of lwild {
657 DEFAULT
658 -> case Main.markX2 ipv1
659 ret_ty (# GHC.Prim.State# GHC.Prim.RealWorld,
660 Data.Vector.Vector Main.Square #)
661 of {}
662 1#
663 -> case GHC.Prim.newArray#
664 @ Main.Square
665 @ (Control.Monad.Primitive.PrimState
666 (GHC.ST.ST GHC.Prim.RealWorld))
667 ipv1
668 (Data.Vector.Mutable.uninitialised @ Main.Square)
669 s1
670 `cast`
671 (GHC.Prim.State#
672 (Sym (Control.Monad.Primitive.D:R:PrimStateST[0]
673 <GHC.Prim.RealWorld>_N)))_R of ds1 { (#,#) ipv3 ipv4 ->
674 case GHC.Prim.copyArray#
675 @ Main.Square
676 @ (Control.Monad.Primitive.PrimState
677 (GHC.ST.ST GHC.Prim.RealWorld))
678 ipv2
679 ipv
680 ipv4
681 0#
682 ipv1
683 ipv3 of s'# { DEFAULT ->
684 case w1 of wild2 { (,) i j ->
685 case i of wild3 { GHC.Types.I# x1 ->
686 case j of wild4 { GHC.Types.I# x2 ->
687 let {
688 x :: GHC.Prim.Int#
689 = GHC.Prim.-#
690 (GHC.Prim.+#
691 (GHC.Prim.*# (GHC.Prim.-# (GHC.Prim.+# x1 ww2) 1#) ww4)
692 (GHC.Prim.+# x2 ww3))
693 1#
694 } in
695 case GHC.Prim.>=# x 0# of lwild1 {
696 DEFAULT
697 -> case Main.markX1 @ GHC.Prim.RealWorld x ipv1
698 ret_ty (# GHC.Prim.State# GHC.Prim.RealWorld,
699 Data.Vector.Vector Main.Square #)
700 of {}
701 1#
702 -> case GHC.Prim.<# x ipv1 of lwild2 {
703 DEFAULT
704 -> case Main.markX1 @ GHC.Prim.RealWorld x ipv1
705 ret_ty (# GHC.Prim.State# GHC.Prim.RealWorld,
706 Data.Vector.Vector Main.Square #)
707 of {}
708 1#
709 -> case GHC.Prim.writeArray#
710 @ (Control.Monad.Primitive.PrimState
711 (GHC.ST.ST GHC.Prim.RealWorld))
712 @ Main.Square
713 ipv4
714 x
715 Main.X
716 s'# of s'#1 { DEFAULT ->
717 case GHC.Prim.unsafeFreezeArray#
718 @ (Control.Monad.Primitive.PrimState
719 (GHC.ST.ST GHC.Prim.RealWorld))
720 @ Main.Square
721 ipv4
722 s'#1 of ds2 { (#,#) ipv5 ipv6 ->
723 (# ipv5
724 `cast`
725 (GHC.Prim.State#
726 (Control.Monad.Primitive.D:R:PrimStateST[0]
727 <GHC.Prim.RealWorld>_N))_R,
728 Data.Vector.Vector
729 @ Main.Square
730 0#
731 ipv1
732 ipv6 #) } } } } } } } } } }) of ds1 { (#,#) ipv3 ipv4 ->
733 ipv4 } } #)) -}
7344085aa77d3428b41dae9dfa21d22b863
735 $wnextAvail ::
736 GHC.Prim.Int#
737 -> GHC.Prim.Int#
738 -> GHC.Prim.Int#
739 -> GHC.Prim.Int#
740 -> GHC.Prim.Int#
741 -> Data.Vector.Vector Main.Square
742 -> (GHC.Types.Int, GHC.Types.Int)
743 {- Arity: 6, Strictness: <S,U><S,U><S,U><S,U><S,U><L,U(U,A,U)>m,
744 Inline: [2],
745 Unfolding: (\ (ww :: GHC.Prim.Int#)
746 (ww1 :: GHC.Prim.Int#)
747 (ww2 :: GHC.Prim.Int#)
748 (ww3 :: GHC.Prim.Int#)
749 (ww4 :: GHC.Prim.Int#)
750 (ww5 :: Data.Vector.Vector Main.Square) ->
751 case Main.nextAvail_$sscanBoard
752 Main.O
753 (Data.Matrix.M @ Main.Square ww ww1 ww2 ww3 ww4 ww5) of wild {
754 [] -> GHC.List.badHead @ (GHC.Types.Int, GHC.Types.Int)
755 : y ys
756 -> case y of ww6 { (,) ww7 ww8 ->
757 letrec {
758 go1 :: [((GHC.Types.Int, GHC.Types.Int), Main.Square)]
759 -> (GHC.Types.Int, GHC.Types.Int)
760 <join 1> {- Arity: 1, Strictness: <S,1*U>m -}
761 = \ (ds :: [((GHC.Types.Int, GHC.Types.Int), Main.Square)]) ->
762 case ds of wild1 {
763 [] -> ww6
764 : y1 ys1
765 -> case y1 of wild2 { (,) ds1 y2 ->
766 case y2 of wild3 {
767 DEFAULT -> GHC.List.badHead @ (GHC.Types.Int, GHC.Types.Int)
768 Main.O -> go1 ys1 } } }
769 } in
770 go1
771 (Main.$wgetRowColDiag
772 @ Main.Square
773 ww7
774 ww8
775 ww
776 ww1
777 ww2
778 ww3
779 ww4
780 ww5) } }) -}
7812e97ede5368f9c2d2ff84f5bb17c4af3
782 $wplaceQueen ::
783 GHC.Types.Int
784 -> GHC.Types.Int
785 -> GHC.Prim.Int#
786 -> GHC.Prim.Int#
787 -> GHC.Prim.Int#
788 -> GHC.Prim.Int#
789 -> GHC.Prim.Int#
790 -> Data.Vector.Vector Main.Square
791 -> (# GHC.Prim.Int#, GHC.Prim.Int#, GHC.Prim.Int#, GHC.Prim.Int#,
792 GHC.Prim.Int#, Data.Vector.Vector Main.Square #)
793 {- Arity: 8,
794 Strictness: <L,U(U)><L,U(U)><S,U><S,U><S,U><S,U><S,U><L,U(U,A,U)>,
795 Inline: [2],
796 Unfolding: (\ (ww :: GHC.Types.Int)
797 (ww1 :: GHC.Types.Int)
798 (ww2 :: GHC.Prim.Int#)
799 (ww3 :: GHC.Prim.Int#)
800 (ww4 :: GHC.Prim.Int#)
801 (ww5 :: GHC.Prim.Int#)
802 (ww6 :: GHC.Prim.Int#)
803 (ww7 :: Data.Vector.Vector Main.Square) ->
804 case Main.$wmapRowColDiag
805 @ Main.Square
806 Main.placeQueen1
807 ww
808 ww1
809 ww2
810 ww3
811 ww4
812 ww5
813 ww6
814 ww7 of ww8 { (#,,,,,#) ww9 ww10 ww11 ww12 ww13 ww14 ->
815 (# ww9, ww10, ww11, ww12, ww13,
816 case ww14 of v2 { Data.Vector.Vector ipv ipv1 ipv2 ->
817 case GHC.Magic.runRW#
818 @ ('GHC.Types.TupleRep
819 '[ 'GHC.Types.TupleRep '[], 'GHC.Types.LiftedRep])
820 @ (# GHC.Prim.State# GHC.Prim.RealWorld,
821 Data.Vector.Vector Main.Square #)
822 (\ (s1 :: GHC.Prim.State# GHC.Prim.RealWorld)[OneShot] ->
823 case GHC.Prim.>=# ipv1 0# of lwild {
824 DEFAULT
825 -> case Main.markX2 ipv1
826 ret_ty (# GHC.Prim.State# GHC.Prim.RealWorld,
827 Data.Vector.Vector Main.Square #)
828 of {}
829 1#
830 -> case GHC.Prim.newArray#
831 @ Main.Square
832 @ (Control.Monad.Primitive.PrimState
833 (GHC.ST.ST GHC.Prim.RealWorld))
834 ipv1
835 (Data.Vector.Mutable.uninitialised @ Main.Square)
836 s1
837 `cast`
838 (GHC.Prim.State#
839 (Sym (Control.Monad.Primitive.D:R:PrimStateST[0]
840 <GHC.Prim.RealWorld>_N)))_R of ds1 { (#,#) ipv3 ipv4 ->
841 case GHC.Prim.copyArray#
842 @ Main.Square
843 @ (Control.Monad.Primitive.PrimState
844 (GHC.ST.ST GHC.Prim.RealWorld))
845 ipv2
846 ipv
847 ipv4
848 0#
849 ipv1
850 ipv3 of s'# { DEFAULT ->
851 case ww of wild3 { GHC.Types.I# x1 ->
852 case ww1 of wild4 { GHC.Types.I# x2 ->
853 let {
854 x :: GHC.Prim.Int#
855 = GHC.Prim.-#
856 (GHC.Prim.+#
857 (GHC.Prim.*# (GHC.Prim.-# (GHC.Prim.+# x1 ww11) 1#) ww13)
858 (GHC.Prim.+# x2 ww12))
859 1#
860 } in
861 case GHC.Prim.>=# x 0# of lwild1 {
862 DEFAULT
863 -> case Main.markX1 @ GHC.Prim.RealWorld x ipv1
864 ret_ty (# GHC.Prim.State# GHC.Prim.RealWorld,
865 Data.Vector.Vector Main.Square #)
866 of {}
867 1#
868 -> case GHC.Prim.<# x ipv1 of lwild2 {
869 DEFAULT
870 -> case Main.markX1 @ GHC.Prim.RealWorld x ipv1
871 ret_ty (# GHC.Prim.State# GHC.Prim.RealWorld,
872 Data.Vector.Vector Main.Square #)
873 of {}
874 1#
875 -> case GHC.Prim.writeArray#
876 @ (Control.Monad.Primitive.PrimState
877 (GHC.ST.ST GHC.Prim.RealWorld))
878 @ Main.Square
879 ipv4
880 x
881 Main.Qu
882 s'# of s'#1 { DEFAULT ->
883 case GHC.Prim.unsafeFreezeArray#
884 @ (Control.Monad.Primitive.PrimState
885 (GHC.ST.ST GHC.Prim.RealWorld))
886 @ Main.Square
887 ipv4
888 s'#1 of ds2 { (#,#) ipv5 ipv6 ->
889 (# ipv5
890 `cast`
891 (GHC.Prim.State#
892 (Control.Monad.Primitive.D:R:PrimStateST[0]
893 <GHC.Prim.RealWorld>_N))_R,
894 Data.Vector.Vector
895 @ Main.Square
896 0#
897 ipv1
898 ipv6 #) } } } } } } } } }) of ds1 { (#,#) ipv3 ipv4 ->
899 ipv4 } } #) }) -}
9008ef5fa9322c84b90e14eaeb7d5987990
901 $wplaceQueen' ::
902 GHC.Types.Int
903 -> GHC.Types.Int
904 -> GHC.Prim.Int#
905 -> GHC.Prim.Int#
906 -> GHC.Prim.Int#
907 -> GHC.Prim.Int#
908 -> GHC.Prim.Int#
909 -> Data.Vector.Vector Main.Square
910 -> (# GHC.Prim.Int#, GHC.Prim.Int#, GHC.Prim.Int#, GHC.Prim.Int#,
911 GHC.Prim.Int#, Data.Vector.Vector Main.Square #)
912 {- Arity: 8,
913 Strictness: <L,U(U)><L,U(U)><S,U><S,U><S,U><S,U><S,U><L,U(U,A,U)>,
914 Inline: [2],
915 Unfolding: (\ (ww :: GHC.Types.Int)
916 (ww1 :: GHC.Types.Int)
917 (ww2 :: GHC.Prim.Int#)
918 (ww3 :: GHC.Prim.Int#)
919 (ww4 :: GHC.Prim.Int#)
920 (ww5 :: GHC.Prim.Int#)
921 (ww6 :: GHC.Prim.Int#)
922 (ww7 :: Data.Vector.Vector Main.Square) ->
923 case Data.Matrix.$wmapCol
924 @ Main.Square
925 (Main.placeQueen'_fX @ GHC.Types.Int @ Main.Square)
926 ww1
927 ww2
928 ww3
929 ww4
930 ww5
931 ww6
932 ww7 of ww8 { (#,,,,,#) ww9 ww10 ww11 ww12 ww13 ww14 ->
933 case Data.Matrix.$wmapRow
934 @ Main.Square
935 (Main.placeQueen'_fX @ GHC.Types.Int @ Main.Square)
936 ww
937 ww9
938 ww10
939 ww11
940 ww12
941 ww13
942 ww14 of ww15 { (#,,,,,#) ww16 ww17 ww18 ww19 ww20 ww21 ->
943 (# ww16, ww17, ww18, ww19, ww20,
944 case ww21 of v2 { Data.Vector.Vector ipv ipv1 ipv2 ->
945 case GHC.Magic.runRW#
946 @ ('GHC.Types.TupleRep
947 '[ 'GHC.Types.TupleRep '[], 'GHC.Types.LiftedRep])
948 @ (# GHC.Prim.State# GHC.Prim.RealWorld,
949 Data.Vector.Vector Main.Square #)
950 (\ (s1 :: GHC.Prim.State# GHC.Prim.RealWorld)[OneShot] ->
951 case GHC.Prim.>=# ipv1 0# of lwild {
952 DEFAULT
953 -> case Main.markX2 ipv1
954 ret_ty (# GHC.Prim.State# GHC.Prim.RealWorld,
955 Data.Vector.Vector Main.Square #)
956 of {}
957 1#
958 -> case GHC.Prim.newArray#
959 @ Main.Square
960 @ (Control.Monad.Primitive.PrimState
961 (GHC.ST.ST GHC.Prim.RealWorld))
962 ipv1
963 (Data.Vector.Mutable.uninitialised @ Main.Square)
964 s1
965 `cast`
966 (GHC.Prim.State#
967 (Sym (Control.Monad.Primitive.D:R:PrimStateST[0]
968 <GHC.Prim.RealWorld>_N)))_R of ds1 { (#,#) ipv3 ipv4 ->
969 case GHC.Prim.copyArray#
970 @ Main.Square
971 @ (Control.Monad.Primitive.PrimState
972 (GHC.ST.ST GHC.Prim.RealWorld))
973 ipv2
974 ipv
975 ipv4
976 0#
977 ipv1
978 ipv3 of s'# { DEFAULT ->
979 case ww of wild3 { GHC.Types.I# x1 ->
980 case ww1 of wild4 { GHC.Types.I# x2 ->
981 let {
982 x :: GHC.Prim.Int#
983 = GHC.Prim.-#
984 (GHC.Prim.+#
985 (GHC.Prim.*# (GHC.Prim.-# (GHC.Prim.+# x1 ww18) 1#) ww20)
986 (GHC.Prim.+# x2 ww19))
987 1#
988 } in
989 case GHC.Prim.>=# x 0# of lwild1 {
990 DEFAULT
991 -> case Main.markX1 @ GHC.Prim.RealWorld x ipv1
992 ret_ty (# GHC.Prim.State# GHC.Prim.RealWorld,
993 Data.Vector.Vector Main.Square #)
994 of {}
995 1#
996 -> case GHC.Prim.<# x ipv1 of lwild2 {
997 DEFAULT
998 -> case Main.markX1 @ GHC.Prim.RealWorld x ipv1
999 ret_ty (# GHC.Prim.State# GHC.Prim.RealWorld,
1000 Data.Vector.Vector Main.Square #)
1001 of {}
1002 1#
1003 -> case GHC.Prim.writeArray#
1004 @ (Control.Monad.Primitive.PrimState
1005 (GHC.ST.ST GHC.Prim.RealWorld))
1006 @ Main.Square
1007 ipv4
1008 x
1009 Main.Qu
1010 s'# of s'#1 { DEFAULT ->
1011 case GHC.Prim.unsafeFreezeArray#
1012 @ (Control.Monad.Primitive.PrimState
1013 (GHC.ST.ST GHC.Prim.RealWorld))
1014 @ Main.Square
1015 ipv4
1016 s'#1 of ds2 { (#,#) ipv5 ipv6 ->
1017 (# ipv5
1018 `cast`
1019 (GHC.Prim.State#
1020 (Control.Monad.Primitive.D:R:PrimStateST[0]
1021 <GHC.Prim.RealWorld>_N))_R,
1022 Data.Vector.Vector
1023 @ Main.Square
1024 0#
1025 ipv1
1026 ipv6 #) } } } } } } } } }) of ds1 { (#,#) ipv3 ipv4 ->
1027 ipv4 } } #) } }) -}
1028c57b742ed68452b2e8b2cded00e72e1c
1029 $wsolve ::
1030 GHC.Classes.Eq t =>
1031 (t -> t -> GHC.Types.Bool)
1032 -> (t -> t -> GHC.Types.Bool)
1033 -> GHC.Num.Num t => t -> [Data.Matrix.Matrix Main.Square]
1034 {- Arity: 5,
1035 Strictness: <L,1*U(C(C1(U)),A)><C(C(S)),1*C1(C1(U))><L,1*C1(C1(U))><L,U(A,C(C1(U)),A,A,A,A,C(U))><L,U>,
1036 Inline: [2],
1037 Unfolding: (\ @ t
1038 (ww :: GHC.Classes.Eq t)
1039 (ww1 :: t -> t -> GHC.Types.Bool)
1040 (ww2 :: t -> t -> GHC.Types.Bool)
1041 (w1 :: GHC.Num.Num t)
1042 (w2 :: t) ->
1043 case ww1 w2 (GHC.Num.fromInteger @ t w1 Main.ops5) of wild {
1044 GHC.Types.False
1045 -> case ww2 w2 (GHC.Num.fromInteger @ t w1 Main.lo1) of wild1 {
1046 GHC.Types.False
1047 -> case ww of ww3 { GHC.Classes.C:Eq ww4 ww5 ->
1048 let {
1049 lvl12 :: t = GHC.Num.fromInteger @ t w1 Main.ops5
1050 } in
1051 let {
1052 lvl13 :: t = GHC.Num.fromInteger @ t w1 Main.lo2
1053 } in
1054 letrec {
1055 solveN :: t -> [Data.Matrix.Matrix Main.Square]
1056 {- Arity: 1, Strictness: <L,U> -}
1057 = \ (ds :: t) ->
1058 case ww4 ds lvl13 of wild2 {
1059 GHC.Types.False
1060 -> case ww4 ds lvl12 of wild3 {
1061 GHC.Types.False
1062 -> Main.solve_go (solveN (GHC.Num.- @ t w1 ds lvl12))
1063 GHC.Types.True -> Main.solve1 }
1064 GHC.Types.True -> GHC.Types.[] @ (Data.Matrix.Matrix Main.Square) }
1065 } in
1066 solveN w2 }
1067 GHC.Types.True -> GHC.Types.[] @ (Data.Matrix.Matrix Main.Square) }
1068 GHC.Types.True
1069 -> GHC.Types.[] @ (Data.Matrix.Matrix Main.Square) }) -}
1070f5d40babaf79dc225afeeacf39e71d14
1071 $wwinners ::
1072 (p -> p -> GHC.Types.Bool)
1073 -> GHC.Num.Num p =>
1074 p
1075 -> [Data.Matrix.Matrix Main.Square]
1076 -> [Data.Matrix.Matrix Main.Square]
1077 {- Arity: 4,
1078 Strictness: <C(C(S)),C(C1(U))><L,U(A,C(C1(U)),A,A,A,A,1*C1(U))><L,U><S,1*U>,
1079 Inline: [2],
1080 Unfolding: (\ @ p
1081 (ww :: p -> p -> GHC.Types.Bool)
1082 (w1 :: GHC.Num.Num p)
1083 (w2 :: p)
1084 (w3 :: [Data.Matrix.Matrix Main.Square]) ->
1085 let {
1086 lvl12 :: p = GHC.Num.fromInteger @ p w1 Main.ops5
1087 } in
1088 letrec {
1089 winners2 :: p
1090 -> [Data.Matrix.Matrix Main.Square]
1091 -> [Data.Matrix.Matrix Main.Square]
1092 <join 2> {- Arity: 2, Strictness: <L,U><S,1*U> -}
1093 = \ (ds :: p) (b :: [Data.Matrix.Matrix Main.Square]) ->
1094 case ww ds lvl12 of wild {
1095 GHC.Types.False
1096 -> winners2 (GHC.Num.- @ p w1 ds lvl12) (Main.winners1 @ p b)
1097 GHC.Types.True -> Main.winners_go b }
1098 } in
1099 winners2 w2 w3) -}
1100fc231a19666745198b5cad6fbcf77735
1101 $wwinners' ::
1102 Data.Matrix.Matrix Main.Square -> [Data.Matrix.Matrix Main.Square]
1103 {- Arity: 1, Strictness: <L,U(U,U,U,U,U,U(U,A,U))>, Inline: [2],
1104 Unfolding: (\ @ p (w1 :: Data.Matrix.Matrix Main.Square) ->
1105 letrec {
1106 go1 :: [(GHC.Types.Int, GHC.Types.Int)]
1107 -> [Data.Matrix.Matrix Main.Square]
1108 {- Arity: 1, Strictness: <S,1*U> -}
1109 = \ (ds :: [(GHC.Types.Int, GHC.Types.Int)]) ->
1110 case ds of wild {
1111 [] -> GHC.Types.[] @ (Data.Matrix.Matrix Main.Square)
1112 : y ys
1113 -> case y of ww { (,) ww1 ww2 ->
1114 case w1 of ww3 { Data.Matrix.M ww4 ww5 ww6 ww7 ww8 ww9 ->
1115 let {
1116 exit :: [Data.Matrix.Matrix Main.Square] <join 0>
1117 = GHC.Types.:
1118 @ (Data.Matrix.Matrix Main.Square)
1119 (case Main.$wplaceQueen
1120 ww1
1121 ww2
1122 ww4
1123 ww5
1124 ww6
1125 ww7
1126 ww8
1127 ww9 of ww10 { (#,,,,,#) ww11 ww12 ww13 ww14 ww15 ww16 ->
1128 Data.Matrix.M @ Main.Square ww11 ww12 ww13 ww14 ww15 ww16 })
1129 (go1 ys)
1130 } in
1131 let {
1132 exit1 :: [Data.Matrix.Matrix Main.Square] <join 0> = go1 ys
1133 } in
1134 letrec {
1135 go2 :: [((GHC.Types.Int, GHC.Types.Int), Main.Square)]
1136 -> [Data.Matrix.Matrix Main.Square]
1137 <join 1> {- Arity: 1, Strictness: <S,1*U> -}
1138 = \ (ds1 :: [((GHC.Types.Int, GHC.Types.Int), Main.Square)]) ->
1139 case ds1 of wild1 {
1140 [] -> exit
1141 : y1 ys1
1142 -> case y1 of wild2 { (,) ds2 y2 ->
1143 case y2 of wild3 { DEFAULT -> exit1 Main.O -> go2 ys1 } } }
1144 } in
1145 go2
1146 (Main.$wgetRowColDiag
1147 @ Main.Square
1148 ww1
1149 ww2
1150 ww4
1151 ww5
1152 ww6
1153 ww7
1154 ww8
1155 ww9) } } }
1156 } in
1157 go1 (Main.nextAvail_$sscanBoard Main.O w1)) -}
1158636ccc849665ce7c3156c440898486e4
1159 data Square = X | Qu | O | T
1160e6f15f421e1dad77000d8fc6a4ea855b
1161 allPositions :: [(GHC.Types.Int, GHC.Types.Int)]
1162 {- Unfolding: (Main.allPositions_go 1#) -}
1163346f770a613a5360df15e8c985bdce13
1164 allPositions_go ::
1165 GHC.Prim.Int# -> [(GHC.Types.Int, GHC.Types.Int)]
1166 {- Arity: 1, HasNoCafRefs, Strictness: <L,U> -}
1167194ce8b8e7f8d37be79aac8aa28e9d44
1168 allops :: b -> b -> [(b, b)]
1169 {- Arity: 2, HasNoCafRefs, Strictness: <L,U><L,U>m2,
1170 Unfolding: InlineRule (2, True, False)
1171 (\ @ b (a :: b) (b1 :: b) ->
1172 GHC.Types.:
1173 @ (b, b)
1174 (a, a)
1175 (GHC.Types.:
1176 @ (b, b)
1177 (a, b1)
1178 (GHC.Types.:
1179 @ (b, b)
1180 (b1, a)
1181 (GHC.Types.: @ (b, b) (b1, b1) (GHC.Types.[] @ (b, b)))))) -}
11821510beb52847e90895824612d049f264
1183 applyop :: (t1, t2) -> (t1 -> a, t2 -> b) -> (a, b)
1184 {- Arity: 2, HasNoCafRefs,
1185 Strictness: <S,1*U(U,U)><S,1*U(1*C1(U),1*C1(U))>m,
1186 Unfolding: InlineRule (2, True, False)
1187 (\ @ t @ t1 @ a @ b (ds :: (t, t1)) (ds1 :: (t -> a, t1 -> b)) ->
1188 case ds of wild { (,) x y ->
1189 case ds1 of wild1 { (,) a1 b1 -> (a1 x, b1 y) } }) -}
11906f09b815b2eac49fd5e364003153edb6
1191 applyops ::
1192 (GHC.Integer.Type.Integer, GHC.Integer.Type.Integer)
1193 -> [(GHC.Integer.Type.Integer, GHC.Integer.Type.Integer)]
1194 {- Arity: 1, Strictness: <L,U(U,U)>,
1195 Unfolding: InlineRule (1, True, False)
1196 (\ (p :: (GHC.Integer.Type.Integer, GHC.Integer.Type.Integer)) ->
1197 GHC.Base.build
1198 @ (GHC.Integer.Type.Integer, GHC.Integer.Type.Integer)
1199 (\ @ b1
1200 (c :: (GHC.Integer.Type.Integer, GHC.Integer.Type.Integer)
1201 -> b1 -> b1)[OneShot]
1202 (n :: b1)[OneShot] ->
1203 GHC.Base.foldr
1204 @ (GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer,
1205 GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer)
1206 @ b1
1207 (GHC.Base.mapFB
1208 @ (GHC.Integer.Type.Integer, GHC.Integer.Type.Integer)
1209 @ b1
1210 @ (GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer,
1211 GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer)
1212 c
1213 (Main.applyop
1214 @ GHC.Integer.Type.Integer
1215 @ GHC.Integer.Type.Integer
1216 @ GHC.Integer.Type.Integer
1217 @ GHC.Integer.Type.Integer
1218 p))
1219 n
1220 Main.ops)) -}
12213d3675529761c115a8648803688b15f0
1222 diag ::
1223 (GHC.Types.Int, GHC.Types.Int)
1224 -> Data.Matrix.Matrix a -> [(GHC.Types.Int, GHC.Types.Int)]
1225 {- Arity: 2, HasNoCafRefs,
1226 Strictness: <S(S(S)L),1*U(1*U(U),U(U))><L,U(U,U,A,A,A,A)>,
1227 Inline: [2],
1228 Unfolding: InlineRule (2, True, False)
1229 (\ @ a
1230 (w1 :: (GHC.Types.Int, GHC.Types.Int))
1231 (w2 :: Data.Matrix.Matrix a) ->
1232 case w1 of ww { (,) ww1 ww2 ->
1233 case ww1 of ww3 { GHC.Types.I# ww4 ->
1234 Main.$wdiag @ a ww4 ww2 w2 } }) -}
1235521caf14a897d9945170c2a83c7838bf
1236 diag'' ::
1237 (GHC.Num.Num b, GHC.Enum.Enum b, GHC.Num.Num a, GHC.Enum.Enum a) =>
1238 a -> b -> [(a, b)]
1239 {- Arity: 6, HasNoCafRefs,
1240 Strictness: <L,U(A,A,A,A,A,A,C(U))><L,U(A,A,A,A,A,A,C(C1(U)),A)><L,U(A,A,A,A,A,A,C(U))><S(LLLLLLC(C(S))L),1*U(A,A,A,A,A,A,C(C1(U)),A)><L,U><L,U>,
1241 Inline: [2],
1242 Unfolding: InlineRule (6, True, False)
1243 (\ @ b
1244 @ a
1245 (w1 :: GHC.Num.Num b)
1246 (w2 :: GHC.Enum.Enum b)
1247 (w3 :: GHC.Num.Num a)
1248 (w4 :: GHC.Enum.Enum a)
1249 (w5 :: a)
1250 (w6 :: b) ->
1251 case w4 of ww { GHC.Enum.C:Enum ww1 ww2 ww3 ww4 ww5 ww6 ww7 ww8 ->
1252 Main.$wdiag'' @ b @ a w1 w2 w3 ww7 w5 w6 }) -}
12532189f869b91b6ccf81bf4b6df23487af
1254 diag1 :: GHC.Types.Int
1255 {- HasNoCafRefs, Strictness: m, Unfolding: (GHC.Types.I# 1#) -}
12564813f5027120582dc077480ee2be320f
1257 diag_a :: GHC.Types.Int -> GHC.Types.Int
1258 {- Arity: 1, HasNoCafRefs, Strictness: <S(S),1*U(U)>m,
1259 Unfolding: InlineRule (1, True, False)
1260 (\ (ds :: GHC.Types.Int) ->
1261 case ds of wild { GHC.Types.I# x ->
1262 GHC.Types.I# (GHC.Prim.+# x 1#) }) -}
126390a1a91fcfdff7b345d5ba6f915f51fe
1264 diag_b :: GHC.Types.Int -> GHC.Types.Int
1265 {- Arity: 1, HasNoCafRefs,
1266 Unfolding: (Main.$ssubtract Main.diag1) -}
1267d565538a2eaa3b46fc2f853fadab9e26
1268 getColL :: GHC.Types.Int -> Data.Matrix.Matrix b -> [b]
1269 {- Arity: 2, Strictness: <L,U(U)><L,U(U,U,U,U,U,U(U,A,U))>,
1270 Unfolding: (\ @ b
1271 (c :: GHC.Types.Int)
1272 (b1 :: Data.Matrix.Matrix b) ->
1273 let {
1274 lvl12 :: GHC.Base.String
1275 = GHC.Show.$fShow(,)_$sgo1
1276 Main.getColL17
1277 (\ (w2 :: GHC.Base.String)[OneShot] ->
1278 case c of ww2 { GHC.Types.I# ww3 ->
1279 case GHC.Show.$wshowSignedInt 0# ww3 w2 of ww4 { (#,#) ww5 ww6 ->
1280 GHC.Types.: @ GHC.Types.Char ww5 ww6 } })
1281 (GHC.Types.[] @ GHC.Show.ShowS)
1282 } in
1283 let {
1284 lvl13 :: [GHC.Types.Char]
1285 = GHC.Types.: @ GHC.Types.Char GHC.Show.showList__1 lvl12
1286 } in
1287 letrec {
1288 go1 :: GHC.Prim.Int# -> [b] {- Arity: 1, Strictness: <L,U> -}
1289 = \ (x :: GHC.Prim.Int#) ->
1290 GHC.Types.:
1291 @ b
1292 (case b1 of wild { Data.Matrix.M dt dt1 dt2 dt3 dt4 ds ->
1293 let {
1294 $j :: b <join 0> {- Strictness: x -}
1295 = GHC.Err.error
1296 @ 'GHC.Types.LiftedRep
1297 @ b
1298 Main.getColL3
1299 `cast`
1300 (Sym (GHC.Classes.N:IP[0]
1301 <"callStack">_N <GHC.Stack.Types.CallStack>_N))
1302 (GHC.CString.unpackAppendCString#
1303 Main.getColL2
1304 (let {
1305 z :: [GHC.Types.Char]
1306 = GHC.CString.unpackAppendCString#
1307 Main.getColL1
1308 (case Data.Matrix.$wsizeStr
1309 dt
1310 (GHC.Types.I# dt1) of ww2 { (#,#) ww3 ww4 ->
1311 Main.getColL_go (GHC.Types.: @ GHC.Types.Char ww3 ww4) })
1312 } in
1313 letrec {
1314 go2 :: [GHC.Types.Char] -> [GHC.Types.Char]
1315 {- Arity: 1, Strictness: <S,1*U> -}
1316 = \ (ds1 :: [GHC.Types.Char]) ->
1317 case ds1 of wild1 {
1318 [] -> z : y ys -> GHC.Types.: @ GHC.Types.Char y (go2 ys) }
1319 } in
1320 go2
1321 (GHC.Types.:
1322 @ GHC.Types.Char
1323 GHC.Show.$fShow(,)4
1324 (case GHC.Show.$wshowSignedInt
1325 0#
1326 x
1327 lvl13 of ww4 { (#,#) ww5 ww6 ->
1328 GHC.Types.: @ GHC.Types.Char ww5 ww6 }))))
1329 } in
1330 case GHC.Prim.># x dt of lwild {
1331 DEFAULT
1332 -> case c of wild2 { GHC.Types.I# x1 ->
1333 case GHC.Prim.># x1 dt1 of lwild1 {
1334 DEFAULT
1335 -> case GHC.Prim.<# x 1# of lwild2 {
1336 DEFAULT
1337 -> case GHC.Prim.<# x1 1# of lwild3 {
1338 DEFAULT
1339 -> case ds of wild3 { Data.Vector.Vector dt5 dt6 dt7 ->
1340 case GHC.Prim.indexArray#
1341 @ b
1342 dt7
1343 (GHC.Prim.-#
1344 (GHC.Prim.+#
1345 dt5
1346 (GHC.Prim.+#
1347 (GHC.Prim.*#
1348 (GHC.Prim.-# (GHC.Prim.+# x dt2) 1#)
1349 dt4)
1350 (GHC.Prim.+# x1 dt3)))
1351 1#) of ds2 { Unit# ipv ->
1352 ipv } }
1353 1# -> $j }
1354 1# -> $j }
1355 1# -> $j } }
1356 1# -> $j } })
1357 (case x of wild {
1358 DEFAULT -> go1 (GHC.Prim.+# wild 1#) 8# -> GHC.Types.[] @ b })
1359 } in
1360 go1 1#) -}
136159a3d6e7a7d530f2d5917c5d492ef742
1362 getColL1 :: GHC.Prim.Addr#
1363 {- HasNoCafRefs, Unfolding: (" element from a "#) -}
13647b742804a973a371e3e88e2b04b6943d
1365 getColL10 :: GHC.Prim.Addr#
1366 {- HasNoCafRefs, Unfolding: ("./Data/Matrix.hs"#) -}
136716a55bd560443de3787e26963c224d00
1368 getColL11 :: [GHC.Types.Char]
1369 {- Unfolding: (GHC.CString.unpackCString# Main.getColL12) -}
137049b261779522cf2cb70b366e5468ac70
1371 getColL12 :: GHC.Prim.Addr#
1372 {- HasNoCafRefs, Unfolding: ("Data.Matrix"#) -}
137392b62b416ca035d74d9f76c2d45db080
1374 getColL13 :: [GHC.Types.Char]
1375 {- Unfolding: (GHC.CString.unpackCString# Main.getColL14) -}
1376d70fe03047f9d5d1fbd4af4cf9015d44
1377 getColL14 :: GHC.Prim.Addr#
1378 {- HasNoCafRefs,
1379 Unfolding: ("matrix-0.3.6.1-CUcUqfmsmAA7saz436AQSk"#) -}
13803231f8c7d8c0936ef4d69ce873202d4f
1381 getColL15 :: [GHC.Types.Char]
1382 {- Unfolding: (GHC.CString.unpackCString# Main.getColL16) -}
1383c23d90f9195be571da707594d1a5f451
1384 getColL16 :: GHC.Prim.Addr#
1385 {- HasNoCafRefs, Unfolding: ("error"#) -}
1386ff1980320d786af053c918c56beea394
1387 getColL17 :: [GHC.Types.Char]
1388 {- HasNoCafRefs, Strictness: m2,
1389 Unfolding: (GHC.Types.:
1390 @ GHC.Types.Char
1391 GHC.Show.$fShow(,)2
1392 (GHC.Types.[] @ GHC.Types.Char)) -}
139379518a96650d201c5f67e67a4db3cb67
1394 getColL2 :: GHC.Prim.Addr#
1395 {- HasNoCafRefs, Unfolding: ("getElem: Trying to get the "#) -}
13965619add454821844124a1652165aec69
1397 getColL3 :: GHC.Stack.Types.CallStack
1398 {- Strictness: m2,
1399 Unfolding: (GHC.Stack.Types.PushCallStack
1400 Main.getColL15
1401 Main.getColL4
1402 GHC.Stack.Types.EmptyCallStack) -}
1403eeb651480663ce22e6859c5904879429
1404 getColL4 :: GHC.Stack.Types.SrcLoc
1405 {- Strictness: m,
1406 Unfolding: (GHC.Stack.Types.SrcLoc
1407 Main.getColL13
1408 Main.getColL11
1409 Main.getColL9
1410 Main.getColL8
1411 Main.getColL7
1412 Main.getColL6
1413 Main.getColL5) -}
1414de832c74ff8c2a95f2e64d0ce59ab379
1415 getColL5 :: GHC.Types.Int
1416 {- HasNoCafRefs, Strictness: m, Unfolding: (GHC.Types.I# 22#) -}
14176cbddb6b2bd4ca54512efe418fc3f972
1418 getColL6 :: GHC.Types.Int
1419 {- HasNoCafRefs, Strictness: m, Unfolding: (GHC.Types.I# 456#) -}
14206ebdb60bb88d05048f3b0d9a4cfa8ea5
1421 getColL7 :: GHC.Types.Int
1422 {- HasNoCafRefs, Strictness: m, Unfolding: (GHC.Types.I# 6#) -}
1423fbf781328cfd77e1d9fea86e2f58d3a0
1424 getColL8 :: GHC.Types.Int
1425 {- HasNoCafRefs, Strictness: m, Unfolding: (GHC.Types.I# 451#) -}
1426ac6cdea8a10db215e86741010968aa95
1427 getColL9 :: [GHC.Types.Char]
1428 {- Unfolding: (GHC.CString.unpackCString# Main.getColL10) -}
1429b2e16ce0be6dfbeea7c4f1ecb6d7439d
1430 getColL_go :: [GHC.Types.Char] -> [GHC.Types.Char]
1431 {- Arity: 1, Strictness: <S,1*U> -}
1432bad58c8bb42255af4a1eef18a97a672a
1433 getDiagL ::
1434 (GHC.Types.Int, GHC.Types.Int) -> Data.Matrix.Matrix a -> [a]
1435 {- Arity: 2,
1436 Strictness: <S(S(S)L),1*U(1*U(U),U(U))><L,U(U,U,U,U,U,U(U,A,U))>,
1437 Inline: [2],
1438 Unfolding: InlineRule (2, True, False)
1439 (\ @ a
1440 (w1 :: (GHC.Types.Int, GHC.Types.Int))
1441 (w2 :: Data.Matrix.Matrix a) ->
1442 case w1 of ww { (,) ww1 ww2 ->
1443 case ww1 of ww3 { GHC.Types.I# ww4 ->
1444 Main.$wgetDiagL @ a ww4 ww2 w2 } }) -}
1445b3250ecc7862688bbb8836fe2305b560
1446 getRowColDiag ::
1447 (GHC.Types.Int, GHC.Types.Int)
1448 -> Data.Matrix.Matrix a -> [((GHC.Types.Int, GHC.Types.Int), a)]
1449 {- Arity: 2,
1450 Strictness: <S,1*U(U(U),U(U))><S(SSSSSL),1*U(U,U,U,U,U,U(U,A,U))>,
1451 Inline: [2],
1452 Unfolding: InlineRule (2, True, False)
1453 (\ @ a
1454 (w1 :: (GHC.Types.Int, GHC.Types.Int))
1455 (w2 :: Data.Matrix.Matrix a) ->
1456 case w1 of ww { (,) ww1 ww2 ->
1457 case w2 of ww3 { Data.Matrix.M ww4 ww5 ww6 ww7 ww8 ww9 ->
1458 Main.$wgetRowColDiag @ a ww1 ww2 ww4 ww5 ww6 ww7 ww8 ww9 } }) -}
145989c54d6735deee0f2e6f5893b7bb62b3
1460 getRowL :: GHC.Types.Int -> Data.Matrix.Matrix b -> [b]
1461 {- Arity: 2, Strictness: <L,U(U)><L,U(U,U,U,U,U,U(U,A,U))>,
1462 Unfolding: (\ @ b
1463 (r :: GHC.Types.Int)
1464 (b1 :: Data.Matrix.Matrix b) ->
1465 letrec {
1466 go1 :: GHC.Prim.Int# -> [b] {- Arity: 1, Strictness: <L,U> -}
1467 = \ (x :: GHC.Prim.Int#) ->
1468 GHC.Types.:
1469 @ b
1470 (case b1 of wild { Data.Matrix.M dt dt1 dt2 dt3 dt4 ds ->
1471 case r of wild1 { GHC.Types.I# x1 ->
1472 let {
1473 $j :: b <join 0> {- Strictness: x -}
1474 = GHC.Err.error
1475 @ 'GHC.Types.LiftedRep
1476 @ b
1477 Main.getColL3
1478 `cast`
1479 (Sym (GHC.Classes.N:IP[0]
1480 <"callStack">_N <GHC.Stack.Types.CallStack>_N))
1481 (GHC.CString.unpackAppendCString#
1482 Main.getColL2
1483 (let {
1484 z :: [GHC.Types.Char]
1485 = GHC.CString.unpackAppendCString#
1486 Main.getColL1
1487 (case Data.Matrix.$wsizeStr
1488 dt
1489 (GHC.Types.I# dt1) of ww2 { (#,#) ww3 ww4 ->
1490 Main.getColL_go (GHC.Types.: @ GHC.Types.Char ww3 ww4) })
1491 } in
1492 letrec {
1493 go2 :: [GHC.Types.Char] -> [GHC.Types.Char]
1494 {- Arity: 1, Strictness: <S,1*U> -}
1495 = \ (ds1 :: [GHC.Types.Char]) ->
1496 case ds1 of wild2 {
1497 [] -> z : y ys -> GHC.Types.: @ GHC.Types.Char y (go2 ys) }
1498 } in
1499 go2
1500 (GHC.Types.:
1501 @ GHC.Types.Char
1502 GHC.Show.$fShow(,)4
1503 (case GHC.Show.$wshowSignedInt
1504 0#
1505 x1
1506 (GHC.Types.:
1507 @ GHC.Types.Char
1508 GHC.Show.showList__1
1509 (GHC.Show.$fShow(,)_$sgo1
1510 Main.getColL17
1511 (\ (w2 :: GHC.Base.String)[OneShot] ->
1512 case GHC.Show.$wshowSignedInt
1513 0#
1514 x
1515 w2 of ww4 { (#,#) ww5 ww6 ->
1516 GHC.Types.: @ GHC.Types.Char ww5 ww6 })
1517 (GHC.Types.[]
1518 @ GHC.Show.ShowS))) of ww4 { (#,#) ww5 ww6 ->
1519 GHC.Types.: @ GHC.Types.Char ww5 ww6 }))))
1520 } in
1521 case GHC.Prim.># x1 dt of lwild {
1522 DEFAULT
1523 -> case GHC.Prim.># x dt1 of lwild1 {
1524 DEFAULT
1525 -> case GHC.Prim.<# x1 1# of lwild2 {
1526 DEFAULT
1527 -> case GHC.Prim.<# x 1# of lwild3 {
1528 DEFAULT
1529 -> case ds of wild3 { Data.Vector.Vector dt5 dt6 dt7 ->
1530 case GHC.Prim.indexArray#
1531 @ b
1532 dt7
1533 (GHC.Prim.-#
1534 (GHC.Prim.+#
1535 dt5
1536 (GHC.Prim.+#
1537 (GHC.Prim.*#
1538 (GHC.Prim.-# (GHC.Prim.+# x1 dt2) 1#)
1539 dt4)
1540 (GHC.Prim.+# x dt3)))
1541 1#) of ds2 { Unit# ipv ->
1542 ipv } }
1543 1# -> $j }
1544 1# -> $j }
1545 1# -> $j }
1546 1# -> $j } } })
1547 (case x of wild {
1548 DEFAULT -> go1 (GHC.Prim.+# wild 1#) 8# -> GHC.Types.[] @ b })
1549 } in
1550 go1 1#) -}
15512a4c80aa03a4f7ee0eee9342de9b7e08
1552 initBoard :: Data.Matrix.Matrix Main.Square
1553 {- Strictness: m,
1554 Unfolding: (Data.Matrix.M
1555 @ Main.Square
1556 8#
1557 8#
1558 0#
1559 0#
1560 8#
1561 Main.initBoard1) -}
15622e11b49545df662a0298b6b61ce33edc
1563 initBoard1 :: Data.Vector.Vector Main.Square
1564 {- Unfolding: (case GHC.Magic.runRW#
1565 @ ('GHC.Types.TupleRep
1566 '[ 'GHC.Types.TupleRep '[], 'GHC.Types.LiftedRep])
1567 @ (# GHC.Prim.State# GHC.Prim.RealWorld,
1568 Data.Vector.Vector Main.Square #)
1569 Main.initBoard2 of ds1 { (#,#) ipv1 ipv2 ->
1570 ipv2 }) -}
15719ac58488e11448bdb0825964d3026604
1572 initBoard2 ::
1573 GHC.Prim.State# GHC.Prim.RealWorld
1574 -> (# GHC.Prim.State# GHC.Prim.RealWorld,
1575 Data.Vector.Vector Main.Square #)
1576 {- Arity: 1, Strictness: <S,U>,
1577 Unfolding: (\ (s1 :: GHC.Prim.State#
1578 GHC.Prim.RealWorld)[OneShot] ->
1579 case GHC.Prim.newArray#
1580 @ Main.Square
1581 @ (Control.Monad.Primitive.PrimState
1582 (GHC.ST.ST GHC.Prim.RealWorld))
1583 64#
1584 (Data.Vector.Mutable.uninitialised @ Main.Square)
1585 s1
1586 `cast`
1587 (GHC.Prim.State#
1588 (Sym (Control.Monad.Primitive.D:R:PrimStateST[0]
1589 (Nth:0
1590 (Nth:2
1591 (<GHC.Prim.State# GHC.Prim.RealWorld>_R
1592 ->_R ((#,#)
1593 <'GHC.Types.TupleRep '[]>_R
1594 <'GHC.Types.LiftedRep>_R
1595 <GHC.Prim.State# GHC.Prim.RealWorld>_R
1596 (Sub (Sym (Data.Vector.D:R:MutableVector[0])) <GHC.Prim.RealWorld>_N <Main.Square>_N))_R))))))_R of ds1 { (#,#) ipv ipv1 ->
1597 let {
1598 exit :: GHC.Prim.State# GHC.Prim.RealWorld
1599 -> (# GHC.Prim.State# GHC.Prim.RealWorld,
1600 Data.Vector.Vector Main.Square #)
1601 <join 1> {- Arity: 1, Strictness: <S,U> -}
1602 = \ (w1 :: GHC.Prim.State# GHC.Prim.RealWorld)[OneShot] ->
1603 let {
1604 exit1 :: GHC.Prim.State# GHC.Prim.RealWorld
1605 -> (# GHC.Prim.State# GHC.Prim.RealWorld,
1606 Data.Vector.Vector Main.Square #)
1607 <join 1> {- Arity: 1, Strictness: <S,U> -}
1608 = \ (w2 :: GHC.Prim.State# GHC.Prim.RealWorld)[OneShot] ->
1609 case GHC.Prim.writeArray#
1610 @ (Control.Monad.Primitive.PrimState
1611 (GHC.ST.ST GHC.Prim.RealWorld))
1612 @ Main.Square
1613 ipv1
1614 63#
1615 Main.O
1616 w2
1617 `cast`
1618 (GHC.Prim.State#
1619 (Sym (Control.Monad.Primitive.D:R:PrimStateST[0]
1620 <GHC.Prim.RealWorld>_N)))_R of s'# { DEFAULT ->
1621 case GHC.Prim.unsafeFreezeArray#
1622 @ (Control.Monad.Primitive.PrimState
1623 (GHC.ST.ST GHC.Prim.RealWorld))
1624 @ Main.Square
1625 ipv1
1626 s'# of ds2 { (#,#) ipv2 ipv3 ->
1627 (# ipv2
1628 `cast`
1629 (GHC.Prim.State#
1630 (Control.Monad.Primitive.D:R:PrimStateST[0]
1631 <GHC.Prim.RealWorld>_N))_R,
1632 Data.Vector.Vector @ Main.Square 0# 64# ipv3 #) } }
1633 } in
1634 letrec {
1635 $wgo3 :: GHC.Prim.Int#
1636 -> GHC.Prim.State# GHC.Prim.RealWorld
1637 -> (# GHC.Prim.State# GHC.Prim.RealWorld,
1638 Data.Vector.Vector Main.Square #)
1639 <join 2> {- Arity: 2, Strictness: <S,1*U><S,U>, Inline: [2] -}
1640 = \ (ww :: GHC.Prim.Int#)
1641 (w2 :: GHC.Prim.State# GHC.Prim.RealWorld) ->
1642 case ww of wild {
1643 DEFAULT
1644 -> case GHC.Prim.writeArray#
1645 @ (Control.Monad.Primitive.PrimState
1646 (GHC.ST.ST GHC.Prim.RealWorld))
1647 @ Main.Square
1648 ipv1
1649 (GHC.Prim.+# 55# wild)
1650 Main.O
1651 w2
1652 `cast`
1653 (GHC.Prim.State#
1654 (Sym (Control.Monad.Primitive.D:R:PrimStateST[0]
1655 <GHC.Prim.RealWorld>_N)))_R of s'# { DEFAULT ->
1656 $wgo3
1657 (GHC.Prim.+# wild 1#)
1658 s'#
1659 `cast`
1660 (GHC.Prim.State#
1661 (Control.Monad.Primitive.D:R:PrimStateST[0]
1662 <GHC.Prim.RealWorld>_N))_R }
1663 8# -> exit1 w2 }
1664 } in
1665 $wgo3 1# w1
1666 } in
1667 letrec {
1668 $wgo3 :: GHC.Prim.Int#
1669 -> GHC.Prim.State# GHC.Prim.RealWorld
1670 -> (# GHC.Prim.State# GHC.Prim.RealWorld,
1671 Data.Vector.Vector Main.Square #)
1672 <join 2> {- Arity: 2, Strictness: <S,1*U><S,U>, Inline: [2] -}
1673 = \ (ww :: GHC.Prim.Int#)
1674 (w1 :: GHC.Prim.State# GHC.Prim.RealWorld) ->
1675 case ww of wild {
1676 DEFAULT
1677 -> let {
1678 exit1 :: GHC.Prim.State# GHC.Prim.RealWorld
1679 -> (# GHC.Prim.State# GHC.Prim.RealWorld,
1680 Data.Vector.Vector Main.Square #)
1681 <join 1> {- Arity: 1, Strictness: <S,U> -}
1682 = \ (w2 :: GHC.Prim.State# GHC.Prim.RealWorld)[OneShot] ->
1683 case GHC.Prim.writeArray#
1684 @ (Control.Monad.Primitive.PrimState
1685 (GHC.ST.ST GHC.Prim.RealWorld))
1686 @ Main.Square
1687 ipv1
1688 (GHC.Prim.+# -1# (GHC.Prim.*# 8# wild))
1689 Main.O
1690 w2
1691 `cast`
1692 (GHC.Prim.State#
1693 (Sym (Control.Monad.Primitive.D:R:PrimStateST[0]
1694 <GHC.Prim.RealWorld>_N)))_R of s'# { DEFAULT ->
1695 $wgo3
1696 (GHC.Prim.+# wild 1#)
1697 s'#
1698 `cast`
1699 (GHC.Prim.State#
1700 (Control.Monad.Primitive.D:R:PrimStateST[0]
1701 <GHC.Prim.RealWorld>_N))_R }
1702 } in
1703 letrec {
1704 $wgo1 :: GHC.Prim.Int#
1705 -> GHC.Prim.State# GHC.Prim.RealWorld
1706 -> (# GHC.Prim.State# GHC.Prim.RealWorld,
1707 Data.Vector.Vector Main.Square #)
1708 <join 2> {- Arity: 2, Strictness: <S,1*U><S,U>, Inline: [2] -}
1709 = \ (ww1 :: GHC.Prim.Int#)
1710 (w2 :: GHC.Prim.State# GHC.Prim.RealWorld) ->
1711 case ww1 of wild1 {
1712 DEFAULT
1713 -> case GHC.Prim.writeArray#
1714 @ (Control.Monad.Primitive.PrimState
1715 (GHC.ST.ST GHC.Prim.RealWorld))
1716 @ Main.Square
1717 ipv1
1718 (GHC.Prim.+#
1719 -9#
1720 (GHC.Prim.+# wild1 (GHC.Prim.*# 8# wild)))
1721 Main.O
1722 w2
1723 `cast`
1724 (GHC.Prim.State#
1725 (Sym (Control.Monad.Primitive.D:R:PrimStateST[0]
1726 <GHC.Prim.RealWorld>_N)))_R of s'# { DEFAULT ->
1727 $wgo1
1728 (GHC.Prim.+# wild1 1#)
1729 s'#
1730 `cast`
1731 (GHC.Prim.State#
1732 (Control.Monad.Primitive.D:R:PrimStateST[0]
1733 <GHC.Prim.RealWorld>_N))_R }
1734 8# -> exit1 w2 }
1735 } in
1736 $wgo1 1# w1
1737 8# -> exit w1 }
1738 } in
1739 $wgo3
1740 1#
1741 ipv
1742 `cast`
1743 (GHC.Prim.State#
1744 (Control.Monad.Primitive.D:R:PrimStateST[0]
1745 <GHC.Prim.RealWorld>_N))_R }) -}
1746419b12158f8179bd4e20ff85d2021536
1747 isWinnable ::
1748 GHC.Types.Int -> Data.Matrix.Matrix Main.Square -> GHC.Types.Bool
1749 {- Arity: 2, Strictness: <S(S),1*U(U)><L,U(U,U,U,U,U,U(U,A,U))>,
1750 Inline: [2],
1751 Unfolding: InlineRule (2, True, False)
1752 (\ (w1 :: GHC.Types.Int) (w2 :: Data.Matrix.Matrix Main.Square) ->
1753 case w1 of ww { GHC.Types.I# ww1 -> Main.$wisWinnable ww1 w2 }) -}
1754db1e2e2978dca671b96a5fb06e38a355
1755 isWinnable' ::
1756 p -> Data.Matrix.Matrix Main.Square -> [GHC.Types.Char]
1757 {- Arity: 2, Strictness: <L,A><L,U(U,U,U,U,U,U(U,A,U))>,
1758 Inline: [2],
1759 Unfolding: InlineRule (2, True, True)
1760 (\ @ p (w1 :: p) (w2 :: Data.Matrix.Matrix Main.Square) ->
1761 Main.$wisWinnable' @ p w2) -}
1762fe5821aa57b843ac278ee5301d522efa
1763 isWinnable'1 :: GHC.Prim.Addr#
1764 {- HasNoCafRefs, Unfolding: (" | cs: "#) -}
176557dbea7ccb37666dfb68fcfa3dff9762
1766 isWinnable'2 :: GHC.Prim.Addr#
1767 {- HasNoCafRefs, Unfolding: ("rs: "#) -}
176871761c5fe498240bc954dabe79b454e6
1769 isWinnable1 :: [GHC.Types.Int]
1770 {- Unfolding: (GHC.Enum.eftInt 1# 8#) -}
1771467cbfe928e10131bc536f2ce6cf6555
1772 lo1 :: GHC.Integer.Type.Integer
1773 {- HasNoCafRefs, Unfolding: (8) -}
17740443aef89f06e494b8dfadf33d9b611e
1775 lo2 :: GHC.Integer.Type.Integer
1776 {- HasNoCafRefs, Unfolding: (0) -}
17770adafc7a5420e905b14b79259f36d2e1
1778 lo8 :: [GHC.Integer.Type.Integer]
1779 {- Unfolding: (GHC.Enum.enumDeltaToInteger1 Main.lo2 Main.lo1) -}
1780ffd93c9b62998844891c6b51af4852f6
1781 main :: GHC.Types.IO ()
1782 {- Arity: 1,
1783 Unfolding: (GHC.IO.Handle.Text.hPutStr'
1784 GHC.IO.Handle.FD.stdout
1785 Main.main1
1786 GHC.Types.True) -}
1787b44f955f71899d698edc98e351205550
1788 main1 :: [GHC.Types.Char]
1789 {- Unfolding: (GHC.CString.unpackCString# Main.main2) -}
179053f8d0c8d47323120ec6d4f5391ba8c2
1791 main2 :: GHC.Prim.Addr#
1792 {- HasNoCafRefs, Unfolding: ("Hi"#) -}
17932c40f682ff1df8a53498b11b24c5d251
1794 main3 ::
1795 GHC.Prim.State# GHC.Prim.RealWorld
1796 -> (# GHC.Prim.State# GHC.Prim.RealWorld, () #)
1797 {- Arity: 1,
1798 Unfolding: (GHC.TopHandler.runMainIO1 @ () Main.main) -}
17992d937b3fb3901c9c5d6305d505827f2c
1800 mapDiag ::
1801 ((GHC.Types.Int, GHC.Types.Int) -> a -> a)
1802 -> (GHC.Types.Int, GHC.Types.Int)
1803 -> Data.Matrix.Matrix a
1804 -> Data.Matrix.Matrix a
1805 {- Arity: 3,
1806 Strictness: <L,C(C1(U))><L,1*U(1*U(U),U(U))><S(SSSSSL),1*U(U,U,U,U,U,U(U,A,U))>m,
1807 Inline: [2],
1808 Unfolding: InlineRule (3, True, False)
1809 (\ @ a
1810 (w1 :: (GHC.Types.Int, GHC.Types.Int) -> a -> a)
1811 (w2 :: (GHC.Types.Int, GHC.Types.Int))
1812 (w3 :: Data.Matrix.Matrix a) ->
1813 case w3 of ww { Data.Matrix.M ww1 ww2 ww3 ww4 ww5 ww6 ->
1814 case Main.$wmapDiag
1815 @ a
1816 w1
1817 w2
1818 ww1
1819 ww2
1820 ww3
1821 ww4
1822 ww5
1823 ww6 of ww7 { (#,,,,,#) ww8 ww9 ww10 ww11 ww12 ww13 ->
1824 Data.Matrix.M @ a ww8 ww9 ww10 ww11 ww12 ww13 } }) -}
1825a2bd0b58bc5bd047e61382be16fefa00
1826 mapQueensPath ::
1827 ((GHC.Types.Int, GHC.Types.Int) -> a -> a)
1828 -> (GHC.Types.Int, GHC.Types.Int)
1829 -> Data.Matrix.Matrix a
1830 -> Data.Matrix.Matrix a
1831 {- Arity: 3,
1832 Strictness: <L,C(C1(U))><S,1*U(U(U),U(U))><S(SSSSSL),1*U(U,U,U,U,U,U(U,A,U))>m,
1833 Unfolding: InlineRule (0, True, True) Main.mapRowColDiag -}
1834dde1889dbbf5fb38f0e445cb95f5a9de
1835 mapRowColDiag ::
1836 ((GHC.Types.Int, GHC.Types.Int) -> a -> a)
1837 -> (GHC.Types.Int, GHC.Types.Int)
1838 -> Data.Matrix.Matrix a
1839 -> Data.Matrix.Matrix a
1840 {- Arity: 3,
1841 Strictness: <L,C(C1(U))><S,1*U(U(U),U(U))><S(SSSSSL),1*U(U,U,U,U,U,U(U,A,U))>m,
1842 Inline: [2],
1843 Unfolding: InlineRule (3, True, False)
1844 (\ @ a
1845 (w1 :: (GHC.Types.Int, GHC.Types.Int) -> a -> a)
1846 (w2 :: (GHC.Types.Int, GHC.Types.Int))
1847 (w3 :: Data.Matrix.Matrix a) ->
1848 case w2 of ww { (,) ww1 ww2 ->
1849 case w3 of ww3 { Data.Matrix.M ww4 ww5 ww6 ww7 ww8 ww9 ->
1850 case Main.$wmapRowColDiag
1851 @ a
1852 w1
1853 ww1
1854 ww2
1855 ww4
1856 ww5
1857 ww6
1858 ww7
1859 ww8
1860 ww9 of ww10 { (#,,,,,#) ww11 ww12 ww13 ww14 ww15 ww16 ->
1861 Data.Matrix.M @ a ww11 ww12 ww13 ww14 ww15 ww16 } } }) -}
18623943af003e5304a56a545bd865552127
1863 markX ::
1864 (GHC.Types.Int, GHC.Types.Int)
1865 -> Data.Matrix.Matrix Main.Square -> Data.Matrix.Matrix Main.Square
1866 {- Arity: 2,
1867 Strictness: <L,1*U(1*U(U),1*U(U))><S(SSSSSL),1*U(U,U,U,U,U,1*U(U,U,U))>m,
1868 Inline: [2],
1869 Unfolding: InlineRule (2, True, False)
1870 (\ (w1 :: (GHC.Types.Int, GHC.Types.Int))
1871 (w2 :: Data.Matrix.Matrix Main.Square) ->
1872 case w2 of ww { Data.Matrix.M ww1 ww2 ww3 ww4 ww5 ww6 ->
1873 case Main.$wmarkX
1874 w1
1875 ww1
1876 ww2
1877 ww3
1878 ww4
1879 ww5
1880 ww6 of ww7 { (#,,,,,#) ww8 ww9 ww10 ww11 ww12 ww13 ->
1881 Data.Matrix.M @ Main.Square ww8 ww9 ww10 ww11 ww12 ww13 } }) -}
1882ccc5982bcd77bdad61f876f8d47c5d65
1883 markX1 :: GHC.Prim.Int# -> GHC.Prim.Int# -> GHC.ST.ST s ()
1884 {- Arity: 2, Strictness: <B,U><B,U>x -}
1885fbac9f9d7dbb4ee97cbb457aa87ce63d
1886 markX2 ::
1887 GHC.Prim.Int#
1888 -> GHC.ST.ST
1889 GHC.Prim.RealWorld
1890 (Data.Vector.Generic.Base.Mutable
1891 Data.Vector.Vector
1892 (Control.Monad.Primitive.PrimState (GHC.ST.ST GHC.Prim.RealWorld))
1893 Main.Square)
1894 {- Arity: 1, Strictness: <B,U>x -}
18956f1bb09ac67d2a25f7bab55f41ed00c2
1896 nextAvail ::
1897 Data.Matrix.Matrix Main.Square -> (GHC.Types.Int, GHC.Types.Int)
1898 {- Arity: 1, Strictness: <S(SSSSSL),1*U(U,U,U,U,U,U(U,A,U))>m,
1899 Inline: [2],
1900 Unfolding: InlineRule (1, True, False)
1901 (\ (w1 :: Data.Matrix.Matrix Main.Square) ->
1902 case w1 of ww { Data.Matrix.M ww1 ww2 ww3 ww4 ww5 ww6 ->
1903 Main.$wnextAvail ww1 ww2 ww3 ww4 ww5 ww6 }) -}
190490afd4aefbf3357e19db3aabe3af6a43
1905 nextAvail1 ::
1906 GHC.Prim.Int#
1907 -> GHC.Types.Int -> GHC.Prim.Int# -> GHC.Prim.Int# -> Main.Square
1908 {- Arity: 4, Strictness: <B,U><B,1*U(U)><B,U><B,U>x -}
1909a26d623557216e1e594771f61834fea6
1910 nextAvail_$sscanBoard ::
1911 Main.Square
1912 -> Data.Matrix.Matrix Main.Square
1913 -> [(GHC.Types.Int, GHC.Types.Int)]
1914 {- Arity: 2, Strictness: <L,U><L,U(U,U,U,U,U,U(U,A,U))>,
1915 Unfolding: (\ (s1 :: Main.Square)
1916 (b :: Data.Matrix.Matrix Main.Square) ->
1917 letrec {
1918 go1 :: [(GHC.Types.Int, GHC.Types.Int)]
1919 -> [(GHC.Types.Int, GHC.Types.Int)]
1920 {- Arity: 1, Strictness: <S,1*U> -}
1921 = \ (ds :: [(GHC.Types.Int, GHC.Types.Int)]) ->
1922 case ds of wild {
1923 [] -> GHC.Types.[] @ (GHC.Types.Int, GHC.Types.Int)
1924 : y ys
1925 -> case y of wild1 { (,) i j ->
1926 case b of wild2 { Data.Matrix.M dt dt1 dt2 dt3 dt4 ds1 ->
1927 case i of wild3 { GHC.Types.I# x ->
1928 case GHC.Prim.># x dt of lwild {
1929 DEFAULT
1930 -> case j of wild4 { GHC.Types.I# x1 ->
1931 case GHC.Prim.># x1 dt1 of lwild1 {
1932 DEFAULT
1933 -> case GHC.Prim.<# x 1# of lwild2 {
1934 DEFAULT
1935 -> case GHC.Prim.<# x1 1# of lwild3 {
1936 DEFAULT
1937 -> case ds1 of wild5 { Data.Vector.Vector dt5 dt6 dt7 ->
1938 case GHC.Prim.indexArray#
1939 @ Main.Square
1940 dt7
1941 (GHC.Prim.-#
1942 (GHC.Prim.+#
1943 dt5
1944 (GHC.Prim.+#
1945 (GHC.Prim.*#
1946 (GHC.Prim.-#
1947 (GHC.Prim.+# x dt2)
1948 1#)
1949 dt4)
1950 (GHC.Prim.+# x1 dt3)))
1951 1#) of ds2 { Unit# ipv ->
1952 case ipv of wild6 {
1953 Main.X
1954 -> case s1 of wild7 {
1955 DEFAULT -> go1 ys
1956 Main.X
1957 -> GHC.Types.:
1958 @ (GHC.Types.Int, GHC.Types.Int)
1959 wild1
1960 (go1 ys) }
1961 Main.Qu
1962 -> case s1 of wild7 {
1963 DEFAULT -> go1 ys
1964 Main.Qu
1965 -> GHC.Types.:
1966 @ (GHC.Types.Int, GHC.Types.Int)
1967 wild1
1968 (go1 ys) }
1969 Main.O
1970 -> case s1 of wild7 {
1971 DEFAULT -> go1 ys
1972 Main.O
1973 -> GHC.Types.:
1974 @ (GHC.Types.Int, GHC.Types.Int)
1975 wild1
1976 (go1 ys) }
1977 Main.T
1978 -> case s1 of wild7 {
1979 DEFAULT -> go1 ys
1980 Main.T
1981 -> GHC.Types.:
1982 @ (GHC.Types.Int, GHC.Types.Int)
1983 wild1
1984 (go1 ys) } } } }
1985 1#
1986 -> case Main.nextAvail1 x wild4 dt dt1
1987 ret_ty [(GHC.Types.Int, GHC.Types.Int)]
1988 of {} }
1989 1#
1990 -> case Main.nextAvail1 x wild4 dt dt1
1991 ret_ty [(GHC.Types.Int, GHC.Types.Int)]
1992 of {} }
1993 1#
1994 -> case Main.nextAvail1 x wild4 dt dt1
1995 ret_ty [(GHC.Types.Int, GHC.Types.Int)]
1996 of {} } }
1997 1#
1998 -> case Main.nextAvail1 x j dt dt1
1999 ret_ty [(GHC.Types.Int, GHC.Types.Int)]
2000 of {} } } } } }
2001 } in
2002 go1 Main.allPositions) -}
20039b22cd0f7cfb9cd8b86e53ed152db98f
2004 nextOpen :: p -> a
2005 {- Arity: 1, Strictness: <B,A>x,
2006 Unfolding: InlineRule (1, True, True)
2007 (\ @ p @ a (board :: p) ->
2008 GHC.Err.undefined
2009 @ 'GHC.Types.LiftedRep
2010 @ a
2011 Main.nextOpen1
2012 `cast`
2013 (Sym (GHC.Classes.N:IP[0]
2014 <"callStack">_N <GHC.Stack.Types.CallStack>_N))) -}
2015450959e15bf14abeeae70c90d6596591
2016 nextOpen1 :: GHC.Stack.Types.CallStack
2017 {- Strictness: m2,
2018 Unfolding: (GHC.Stack.Types.PushCallStack
2019 Main.nextOpen10
2020 Main.nextOpen2
2021 GHC.Stack.Types.EmptyCallStack) -}
20225492e46593435c9a8973ddd52706b901
2023 nextOpen10 :: [GHC.Types.Char]
2024 {- Unfolding: (GHC.CString.unpackCString# Main.nextOpen11) -}
202534b8814fdedc12dbe175ff398d732cc2
2026 nextOpen11 :: GHC.Prim.Addr#
2027 {- HasNoCafRefs, Unfolding: ("undefined"#) -}
2028a81645774aa6aa0b43d03ce34ef4c86a
2029 nextOpen2 :: GHC.Stack.Types.SrcLoc
2030 {- Strictness: m,
2031 Unfolding: (GHC.Stack.Types.SrcLoc
2032 Main.nextOpen9
2033 Main.nextOpen8
2034 Main.nextOpen6
2035 Main.nextOpen5
2036 Main.nextOpen4
2037 Main.nextOpen5
2038 Main.nextOpen3) -}
203937396b724a9489f0796e02e1242a57cc
2040 nextOpen3 :: GHC.Types.Int
2041 {- HasNoCafRefs, Strictness: m, Unfolding: (GHC.Types.I# 27#) -}
20425039b2582c970c303d6ee00f1c72dc6f
2043 nextOpen4 :: GHC.Types.Int
2044 {- HasNoCafRefs, Strictness: m, Unfolding: (GHC.Types.I# 18#) -}
2045d043f6099eb02d490a19ed2603a147cd
2046 nextOpen5 :: GHC.Types.Int
2047 {- HasNoCafRefs, Strictness: m, Unfolding: (GHC.Types.I# 342#) -}
20488bc53bd5eeee20b8c206a89fe19f2abc
2049 nextOpen6 :: [GHC.Types.Char]
2050 {- Unfolding: (GHC.CString.unpackCString# Main.nextOpen7) -}
205128b6eb018de3ac0765c6732596651e21
2052 nextOpen7 :: GHC.Prim.Addr#
2053 {- HasNoCafRefs, Unfolding: ("src/Main.hs"#) -}
20545dd9ebfbcdd27071fb3e5331918a8ed9
2055 nextOpen8 :: [GHC.Types.Char]
2056 {- Unfolding: (GHC.CString.unpackCString# Main.$trModule2) -}
20573ec743b2d53b5b2446ef227872aec674
2058 nextOpen9 :: [GHC.Types.Char]
2059 {- Unfolding: (GHC.CString.unpackCString# Main.$trModule4) -}
2060b1f6f256d4e82d1580367898de062da9
2061 onBoard :: t1 -> (t1 -> t2) -> t2
2062 {- Arity: 2, HasNoCafRefs, Strictness: <L,U><C(S),1*C1(U)>,
2063 Unfolding: InlineRule (2, True, True)
2064 (\ @ t @ t1 (b :: t) (f :: t -> t1) -> f b) -}
206517b16fcc71d1f9f19009053f733f93b0
2066 openPositions ::
2067 Data.Matrix.Matrix Main.Square -> [(GHC.Types.Int, GHC.Types.Int)]
2068 {- Arity: 1, Strictness: <L,U(U,U,U,U,U,U(U,A,U))>,
2069 Unfolding: InlineRule (1, True, False)
2070 (\ (b :: Data.Matrix.Matrix Main.Square) ->
2071 Main.nextAvail_$sscanBoard Main.O b) -}
20722f3c3f4fd9297ce38b2338795b8625fa
2073 ops ::
2074 [(GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer,
2075 GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer)]
2076 {- Strictness: m2,
2077 Unfolding: (GHC.Types.:
2078 @ (GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer,
2079 GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer)
2080 Main.ops8
2081 Main.ops1) -}
2082914d1c5f1d08a2df33b0758b8b1cbe4f
2083 ops1 ::
2084 [(GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer,
2085 GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer)]
2086 {- Strictness: m2,
2087 Unfolding: (GHC.Types.:
2088 @ (GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer,
2089 GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer)
2090 Main.ops7
2091 Main.ops2) -}
2092c483f6d1360d80e682071a7fada76a2d
2093 ops2 ::
2094 [(GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer,
2095 GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer)]
2096 {- Strictness: m2,
2097 Unfolding: (GHC.Types.:
2098 @ (GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer,
2099 GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer)
2100 Main.ops6
2101 Main.ops3) -}
2102e2bf2566ee0d78e121b68669d2a45b5a
2103 ops3 ::
2104 [(GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer,
2105 GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer)]
2106 {- Strictness: m2,
2107 Unfolding: (GHC.Types.:
2108 @ (GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer,
2109 GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer)
2110 Main.ops4
2111 (GHC.Types.[]
2112 @ (GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer,
2113 GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer))) -}
21144fc14e12c3c545bccf354dfd328363ef
2115 ops4 ::
2116 (GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer,
2117 GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer)
2118 {- Strictness: m, Unfolding: ((Main.ops_b, Main.ops_b)) -}
2119af67511cc9af72bbbf64830e0e5f2972
2120 ops5 :: GHC.Integer.Type.Integer
2121 {- HasNoCafRefs, Unfolding: (1) -}
21224d05bf6b8d38e4924dbd1cd6fe91b988
2123 ops6 ::
2124 (GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer,
2125 GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer)
2126 {- Strictness: m, Unfolding: ((Main.ops_b, Main.ops_a)) -}
2127c8c7d7c9f7f07dc27b1d7488f2d275c4
2128 ops7 ::
2129 (GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer,
2130 GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer)
2131 {- Strictness: m, Unfolding: ((Main.ops_a, Main.ops_b)) -}
2132659cc3ca049e6155e4c40a7665798164
2133 ops8 ::
2134 (GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer,
2135 GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer)
2136 {- Strictness: m, Unfolding: ((Main.ops_a, Main.ops_a)) -}
2137230c5a60ddf52a851259b0f5fb0b5a02
2138 ops_a :: GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer
2139 {- Arity: 1, Strictness: <S,1*U>,
2140 Unfolding: InlineRule (1, True, False)
2141 (\ (ds :: GHC.Integer.Type.Integer) ->
2142 GHC.Integer.Type.plusInteger ds Main.ops5) -}
21430977965361a29e006d3b014e5d47953c
2144 ops_b :: GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer
2145 {- Arity: 1, Unfolding: (Main.$ssubtract1 Main.ops5) -}
2146fa63260e1ced6c325a6fea254285a86e
2147 placeQueen ::
2148 (GHC.Types.Int, GHC.Types.Int)
2149 -> Data.Matrix.Matrix Main.Square -> Data.Matrix.Matrix Main.Square
2150 {- Arity: 2,
2151 Strictness: <S,1*U(U(U),U(U))><S(SSSSSL),1*U(U,U,U,U,U,U(U,A,U))>m,
2152 Inline: [2],
2153 Unfolding: InlineRule (2, True, False)
2154 (\ (w1 :: (GHC.Types.Int, GHC.Types.Int))
2155 (w2 :: Data.Matrix.Matrix Main.Square) ->
2156 case w1 of ww { (,) ww1 ww2 ->
2157 case w2 of ww3 { Data.Matrix.M ww4 ww5 ww6 ww7 ww8 ww9 ->
2158 case Main.$wplaceQueen
2159 ww1
2160 ww2
2161 ww4
2162 ww5
2163 ww6
2164 ww7
2165 ww8
2166 ww9 of ww10 { (#,,,,,#) ww11 ww12 ww13 ww14 ww15 ww16 ->
2167 Data.Matrix.M @ Main.Square ww11 ww12 ww13 ww14 ww15 ww16 } } }) -}
2168a1f12d5025f58ce56d4a5a7bc26dc092
2169 placeQueen' ::
2170 (GHC.Types.Int, GHC.Types.Int)
2171 -> Data.Matrix.Matrix Main.Square -> Data.Matrix.Matrix Main.Square
2172 {- Arity: 2,
2173 Strictness: <S,1*U(U(U),U(U))><S(SSSSSL),1*U(U,U,U,U,U,U(U,A,U))>m,
2174 Inline: [2],
2175 Unfolding: InlineRule (2, True, False)
2176 (\ (w1 :: (GHC.Types.Int, GHC.Types.Int))
2177 (w2 :: Data.Matrix.Matrix Main.Square) ->
2178 case w1 of ww { (,) ww1 ww2 ->
2179 case w2 of ww3 { Data.Matrix.M ww4 ww5 ww6 ww7 ww8 ww9 ->
2180 case Main.$wplaceQueen'
2181 ww1
2182 ww2
2183 ww4
2184 ww5
2185 ww6
2186 ww7
2187 ww8
2188 ww9 of ww10 { (#,,,,,#) ww11 ww12 ww13 ww14 ww15 ww16 ->
2189 Data.Matrix.M @ Main.Square ww11 ww12 ww13 ww14 ww15 ww16 } } }) -}
2190dc257c873b9f55af4a5cae0dd796842c
2191 placeQueen'_fX :: p1 -> p2 -> Main.Square
2192 {- Arity: 2, HasNoCafRefs, Strictness: <L,A><L,A>,
2193 Unfolding: InlineRule (2, True, True)
2194 (\ @ p @ p1 (ds :: p) (x :: p1) -> Main.X) -}
21955867a72be54a53ffdbc791900449f7cf
2196 placeQueen1 ::
2197 (GHC.Types.Int, GHC.Types.Int) -> Main.Square -> Main.Square
2198 {- Arity: 2, HasNoCafRefs, Strictness: <L,A><L,A>,
2199 Unfolding: InlineRule (2, True, True)
2200 (\ (ds :: (GHC.Types.Int, GHC.Types.Int)) (ds1 :: Main.Square) ->
2201 Main.X) -}
22026e29c0608e46d228d79be61c7b198415
2203 queenAllowed ::
2204 (GHC.Types.Int, GHC.Types.Int)
2205 -> Data.Matrix.Matrix Main.Square -> GHC.Types.Bool
2206 {- Arity: 2,
2207 Strictness: <S,1*U(U(U),U(U))><S(SSSSSL),1*U(U,U,U,U,U,U(U,A,U))>,
2208 Unfolding: InlineRule (0, True, True)
2209 Main.queenAllowed1
2210 `cast`
2211 (<(GHC.Types.Int, GHC.Types.Int)>_R
2212 ->_R <Data.Matrix.Matrix Main.Square>_R
2213 ->_R Data.Semigroup.Internal.N:All[0]) -}
221478aa727ec6070d1a0a93c445c121ee95
2215 queenAllowed1 ::
2216 (GHC.Types.Int, GHC.Types.Int)
2217 -> Data.Matrix.Matrix Main.Square -> Data.Semigroup.Internal.All
2218 {- Arity: 2,
2219 Strictness: <S,1*U(U(U),U(U))><S(SSSSSL),1*U(U,U,U,U,U,U(U,A,U))>,
2220 Unfolding: InlineRule (2, True, False)
2221 (\ (p :: (GHC.Types.Int, GHC.Types.Int))
2222 (b :: Data.Matrix.Matrix Main.Square) ->
2223 letrec {
2224 go1 :: [((GHC.Types.Int, GHC.Types.Int), Main.Square)]
2225 -> Data.Semigroup.Internal.All
2226 <join 1> {- Arity: 1 -}
2227 = \ (ds :: [((GHC.Types.Int, GHC.Types.Int), Main.Square)]) ->
2228 case ds of wild {
2229 []
2230 -> GHC.Types.True `cast` (Sym (Data.Semigroup.Internal.N:All[0]))
2231 : y ys
2232 -> case y of wild1 { (,) ds1 y1 ->
2233 case y1 of wild2 {
2234 DEFAULT
2235 -> GHC.Types.False `cast` (Sym (Data.Semigroup.Internal.N:All[0]))
2236 Main.O -> go1 ys } } }
2237 } in
2238 go1 (Main.getRowColDiag @ Main.Square p b)) -}
2239ac3e1db14fd14a5e30c664cab50d0fee
2240 s ::
2241 Data.Matrix.Matrix Main.Square -> [Data.Matrix.Matrix Main.Square]
2242 {- Arity: 1, Strictness: <L,U(U,U,U,U,U,U(U,A,U))>,
2243 Unfolding: (\ (b :: Data.Matrix.Matrix Main.Square) ->
2244 letrec {
2245 go1 :: [(GHC.Types.Int, GHC.Types.Int)]
2246 -> [Data.Matrix.Matrix Main.Square]
2247 {- Arity: 1, Strictness: <S,1*U> -}
2248 = \ (ds :: [(GHC.Types.Int, GHC.Types.Int)]) ->
2249 case ds of wild {
2250 [] -> GHC.Types.[] @ (Data.Matrix.Matrix Main.Square)
2251 : y ys
2252 -> case y of ww { (,) ww1 ww2 ->
2253 case b of ww3 { Data.Matrix.M ww4 ww5 ww6 ww7 ww8 ww9 ->
2254 let {
2255 exit :: [Data.Matrix.Matrix Main.Square] <join 0>
2256 = GHC.Types.:
2257 @ (Data.Matrix.Matrix Main.Square)
2258 (case Main.$wplaceQueen
2259 ww1
2260 ww2
2261 ww4
2262 ww5
2263 ww6
2264 ww7
2265 ww8
2266 ww9 of ww10 { (#,,,,,#) ww11 ww12 ww13 ww14 ww15 ww16 ->
2267 Data.Matrix.M @ Main.Square ww11 ww12 ww13 ww14 ww15 ww16 })
2268 (go1 ys)
2269 } in
2270 let {
2271 exit1 :: [Data.Matrix.Matrix Main.Square] <join 0> = go1 ys
2272 } in
2273 letrec {
2274 go2 :: [((GHC.Types.Int, GHC.Types.Int), Main.Square)]
2275 -> [Data.Matrix.Matrix Main.Square]
2276 <join 1> {- Arity: 1, Strictness: <S,1*U> -}
2277 = \ (ds1 :: [((GHC.Types.Int, GHC.Types.Int), Main.Square)]) ->
2278 case ds1 of wild1 {
2279 [] -> exit
2280 : y1 ys1
2281 -> case y1 of wild2 { (,) ds2 y2 ->
2282 case y2 of wild3 { DEFAULT -> exit1 Main.O -> go2 ys1 } } }
2283 } in
2284 go2
2285 (Main.$wgetRowColDiag
2286 @ Main.Square
2287 ww1
2288 ww2
2289 ww4
2290 ww5
2291 ww6
2292 ww7
2293 ww8
2294 ww9) } } }
2295 } in
2296 go1 (Main.nextAvail_$sscanBoard Main.O b)) -}
2297136bbc6ab363482125bcf62d8afaf976
2298 scanBoard ::
2299 GHC.Classes.Eq a =>
2300 a -> Data.Matrix.Matrix a -> [(GHC.Types.Int, GHC.Types.Int)]
2301 {- Arity: 3,
2302 Strictness: <L,U(C(C1(U)),A)><L,U><L,U(U,U,U,U,U,U(U,A,U))>,
2303 Unfolding: (\ @ a
2304 ($dEq :: GHC.Classes.Eq a)
2305 (s1 :: a)
2306 (b :: Data.Matrix.Matrix a) ->
2307 letrec {
2308 go1 :: [(GHC.Types.Int, GHC.Types.Int)]
2309 -> [(GHC.Types.Int, GHC.Types.Int)]
2310 {- Arity: 1, Strictness: <S,1*U> -}
2311 = \ (ds :: [(GHC.Types.Int, GHC.Types.Int)]) ->
2312 case ds of wild {
2313 [] -> GHC.Types.[] @ (GHC.Types.Int, GHC.Types.Int)
2314 : y ys
2315 -> case y of wild1 { (,) i j ->
2316 case GHC.Classes.==
2317 @ a
2318 $dEq
2319 (case b of wild2 { Data.Matrix.M dt dt1 dt2 dt3 dt4 ds1 ->
2320 case i of wild3 { GHC.Types.I# x ->
2321 let {
2322 $j :: a <join 0> {- Strictness: x -}
2323 = GHC.Err.error
2324 @ 'GHC.Types.LiftedRep
2325 @ a
2326 Main.getColL3
2327 `cast`
2328 (Sym (GHC.Classes.N:IP[0]
2329 <"callStack">_N <GHC.Stack.Types.CallStack>_N))
2330 (GHC.CString.unpackAppendCString#
2331 Main.getColL2
2332 (GHC.Base.++_$s++
2333 @ GHC.Types.Char
2334 (GHC.CString.unpackAppendCString#
2335 Main.getColL1
2336 (case Data.Matrix.$wsizeStr
2337 dt
2338 (GHC.Types.I#
2339 dt1) of ww2 { (#,#) ww3 ww4 ->
2340 GHC.Base.++_$s++
2341 @ GHC.Types.Char
2342 Main.scanBoard_z
2343 ww3
2344 ww4 }))
2345 GHC.Show.$fShow(,)4
2346 (case GHC.Show.$wshowSignedInt
2347 0#
2348 x
2349 (GHC.Types.:
2350 @ GHC.Types.Char
2351 GHC.Show.showList__1
2352 (GHC.Show.$fShow(,)_$sgo1
2353 Main.getColL17
2354 (\ (w2 :: GHC.Base.String)[OneShot] ->
2355 case j of ww2 { GHC.Types.I# ww3 ->
2356 case GHC.Show.$wshowSignedInt
2357 0#
2358 ww3
2359 w2 of ww4 { (#,#) ww5 ww6 ->
2360 GHC.Types.:
2361 @ GHC.Types.Char
2362 ww5
2363 ww6 } })
2364 (GHC.Types.[]
2365 @ GHC.Show.ShowS))) of ww4 { (#,#) ww5 ww6 ->
2366 GHC.Types.: @ GHC.Types.Char ww5 ww6 })))
2367 } in
2368 case GHC.Prim.># x dt of lwild {
2369 DEFAULT
2370 -> case j of wild4 { GHC.Types.I# x1 ->
2371 case GHC.Prim.># x1 dt1 of lwild1 {
2372 DEFAULT
2373 -> case GHC.Prim.<# x 1# of lwild2 {
2374 DEFAULT
2375 -> case GHC.Prim.<# x1 1# of lwild3 {
2376 DEFAULT
2377 -> case ds1 of wild5 { Data.Vector.Vector dt5 dt6 dt7 ->
2378 case GHC.Prim.indexArray#
2379 @ a
2380 dt7
2381 (GHC.Prim.-#
2382 (GHC.Prim.+#
2383 dt5
2384 (GHC.Prim.+#
2385 (GHC.Prim.*#
2386 (GHC.Prim.-#
2387 (GHC.Prim.+# x dt2)
2388 1#)
2389 dt4)
2390 (GHC.Prim.+# x1 dt3)))
2391 1#) of ds2 { Unit# ipv ->
2392 ipv } }
2393 1# -> $j }
2394 1# -> $j }
2395 1# -> $j } }
2396 1# -> $j } } })
2397 s1 of wild2 {
2398 GHC.Types.False -> go1 ys
2399 GHC.Types.True
2400 -> GHC.Types.:
2401 @ (GHC.Types.Int, GHC.Types.Int)
2402 wild1
2403 (go1 ys) } } }
2404 } in
2405 go1 Main.allPositions) -}
2406ba4d206db78a5cdc12cbc5213b6efa45
2407 scanBoard1 :: GHC.Prim.Addr#
2408 {- HasNoCafRefs, Unfolding: (" matrix."#) -}
2409dd473e64c7fd49868fbead83c5d37d7c
2410 scanBoard_z :: [GHC.Types.Char]
2411 {- Unfolding: (GHC.CString.unpackCString# Main.scanBoard1) -}
2412730d75bde90b9d85a238ada997a4cedb
2413 solve ::
2414 (GHC.Classes.Ord t, GHC.Num.Num t) =>
2415 t -> [Data.Matrix.Matrix Main.Square]
2416 {- Arity: 3,
2417 Strictness: <S(LLC(C(S))LLLLL),1*U(1*U(C(C1(U)),A),A,1*C1(C1(U)),A,1*C1(C1(U)),A,A,A)><L,U(A,C(C1(U)),A,A,A,A,C(U))><L,U>,
2418 Inline: [2],
2419 Unfolding: InlineRule (3, True, False)
2420 (\ @ t (w1 :: GHC.Classes.Ord t) (w2 :: GHC.Num.Num t) (w3 :: t) ->
2421 case w1 of ww { GHC.Classes.C:Ord ww1 ww2 ww3 ww4 ww5 ww6 ww7 ww8 ->
2422 Main.$wsolve @ t ww1 ww3 ww5 w2 w3 }) -}
2423bf34852c4989cdd534e45ed8798f1cc1
2424 solve1 :: [Data.Matrix.Matrix Main.Square]
2425 {- Unfolding: (GHC.Base.++
2426 @ (Data.Matrix.Matrix Main.Square)
2427 (Main.solve2 Main.initBoard)
2428 (GHC.Types.[] @ (Data.Matrix.Matrix Main.Square))) -}
2429e1e9b7845f8b9b9dd2f50c649384dcaf
2430 solve2 ::
2431 Data.Matrix.Matrix Main.Square -> [Data.Matrix.Matrix Main.Square]
2432 {- Arity: 1, Strictness: <L,U(U,U,U,U,U,U(U,A,U))>,
2433 Unfolding: (\ (b :: Data.Matrix.Matrix Main.Square) ->
2434 GHC.Base.map
2435 @ (GHC.Types.Int, GHC.Types.Int)
2436 @ (Data.Matrix.Matrix Main.Square)
2437 (\ (p :: (GHC.Types.Int, GHC.Types.Int)) -> Main.placeQueen p b)
2438 (Main.nextAvail_$sscanBoard Main.O b)) -}
2439c184a666bff831ddddecc4b865dff3df
2440 solve_go ::
2441 [Data.Matrix.Matrix Main.Square]
2442 -> [Data.Matrix.Matrix Main.Square]
2443 {- Arity: 1, Strictness: <S,1*U> -}
24447a7a57dbb9af5196c25058ab4a74fa7b
2445 w :: [Data.Matrix.Matrix Main.Square]
2446 {- Unfolding: (Main.$wwinners'
2447 @ GHC.Integer.Type.Integer
2448 Main.initBoard) -}
24494574f1ee92f6f2d180c8f1d8da82d147
2450 winnable :: a
2451 {- Strictness: x -}
2452a4252cdb991d662ac35e424364aba1a6
2453 winners ::
2454 (GHC.Classes.Eq p, GHC.Num.Num p) =>
2455 p
2456 -> [Data.Matrix.Matrix Main.Square]
2457 -> [Data.Matrix.Matrix Main.Square]
2458 {- Arity: 4,
2459 Strictness: <S(C(C(S))L),1*U(C(C1(U)),A)><L,U(A,C(C1(U)),A,A,A,A,C(U))><L,U><S,1*U>,
2460 Inline: [2],
2461 Unfolding: InlineRule (4, True, False)
2462 (\ @ p
2463 (w1 :: GHC.Classes.Eq p)
2464 (w2 :: GHC.Num.Num p)
2465 (w3 :: p)
2466 (w4 :: [Data.Matrix.Matrix Main.Square]) ->
2467 case w1 of ww { GHC.Classes.C:Eq ww1 ww2 ->
2468 Main.$wwinners @ p ww1 w2 w3 w4 }) -}
24693fcc2cf6408df510d613a4b754ea3680
2470 winners' ::
2471 p
2472 -> Data.Matrix.Matrix Main.Square
2473 -> [Data.Matrix.Matrix Main.Square]
2474 {- Arity: 2, Strictness: <L,A><L,U(U,U,U,U,U,U(U,A,U))>,
2475 Inline: [2],
2476 Unfolding: InlineRule (2, True, True)
2477 (\ @ p (w1 :: p) (w2 :: Data.Matrix.Matrix Main.Square) ->
2478 Main.$wwinners' @ p w2) -}
24798c043a319c68bd087e5d8643d5ba7d9d
2480 winners1 ::
2481 [Data.Matrix.Matrix Main.Square]
2482 -> [Data.Matrix.Matrix Main.Square]
2483 {- Arity: 1, Strictness: <S,1*U> -}
24843b9dd7cd56ddb92f4921e9fe96b4dd83
2485 winners_go ::
2486 [Data.Matrix.Matrix Main.Square]
2487 -> [Data.Matrix.Matrix Main.Square]
2488 {- Arity: 1, Strictness: <S,1*U> -}
2489instance GHC.Classes.Eq [Main.Square] = Main.$fEqSquare
2490instance GHC.Show.Show [Main.Square] = Main.$fShowSquare
2491"SPEC scanBoard @ Square" forall ($dEq :: GHC.Classes.Eq
2492 Main.Square)
2493 Main.scanBoard @ Main.Square $dEq = Main.nextAvail_$sscanBoard
2494"SPEC/Main $fEq(,) @ Int @ Int" [orphan] forall (v1 :: GHC.Classes.Eq
2495 GHC.Types.Int)
2496 (v :: GHC.Classes.Eq GHC.Types.Int)
2497 GHC.Classes.$fEq(,) @ GHC.Types.Int @ GHC.Types.Int v v1
2498 = Main.$s$fEq(,)
2499"SPEC/Main $fEq(,)_$c/= @ Int @ Int" [orphan] forall ($dEq1 :: GHC.Classes.Eq
2500 GHC.Types.Int)
2501 ($dEq :: GHC.Classes.Eq GHC.Types.Int)
2502 GHC.Classes.$fEq(,)_$c/= @ GHC.Types.Int @ GHC.Types.Int $dEq $dEq1
2503 = Main.$s$fEq(,)_$s$fEq(,)_$c/=
2504"SPEC/Main subtract @ Int" [orphan] forall ($dNum :: GHC.Num.Num
2505 GHC.Types.Int)
2506 GHC.Num.subtract @ GHC.Types.Int $dNum = Main.$ssubtract
2507"SPEC/Main subtract @ Integer" [orphan] forall ($dNum :: GHC.Num.Num
2508 GHC.Integer.Type.Integer)
2509 GHC.Num.subtract @ GHC.Integer.Type.Integer $dNum
2510 = Main.$ssubtract1
2511trusted: none
2512require own pkg trusted: False
2513module header:
2514 Nothing
2515declaration docs:
2516arg docs:
2517
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/autogen/Paths_8queens.hs b/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/autogen/Paths_8queens.hs
deleted file mode 100644
index 7e16751..0000000
--- a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/autogen/Paths_8queens.hs
+++ /dev/null
@@ -1,50 +0,0 @@
1{-# LANGUAGE CPP #-}
2{-# LANGUAGE NoRebindableSyntax #-}
3{-# OPTIONS_GHC -fno-warn-missing-import-lists #-}
4module Paths_8queens (
5 version,
6 getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir,
7 getDataFileName, getSysconfDir
8 ) where
9
10import qualified Control.Exception as Exception
11import Data.Version (Version(..))
12import System.Environment (getEnv)
13import Prelude
14
15#if defined(VERSION_base)
16
17#if MIN_VERSION_base(4,0,0)
18catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a
19#else
20catchIO :: IO a -> (Exception.Exception -> IO a) -> IO a
21#endif
22
23#else
24catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a
25#endif
26catchIO = Exception.catch
27
28version :: Version
29version = Version [0,1,0,0] []
30bindir, libdir, dynlibdir, datadir, libexecdir, sysconfdir :: FilePath
31
32bindir = "/home/sv/src/8queens/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/bin"
33libdir = "/home/sv/src/8queens/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/8queens-0.1.0.0-1f9e2RemoZD8IyN03WXtS0-8queens"
34dynlibdir = "/home/sv/src/8queens/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5"
35datadir = "/home/sv/src/8queens/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/share/x86_64-linux-ghc-8.6.5/8queens-0.1.0.0"
36libexecdir = "/home/sv/src/8queens/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/libexec/x86_64-linux-ghc-8.6.5/8queens-0.1.0.0"
37sysconfdir = "/home/sv/src/8queens/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/etc"
38
39getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir, getSysconfDir :: IO FilePath
40getBinDir = catchIO (getEnv "8queens_bindir") (\_ -> return bindir)
41getLibDir = catchIO (getEnv "8queens_libdir") (\_ -> return libdir)
42getDynLibDir = catchIO (getEnv "8queens_dynlibdir") (\_ -> return dynlibdir)
43getDataDir = catchIO (getEnv "8queens_datadir") (\_ -> return datadir)
44getLibexecDir = catchIO (getEnv "8queens_libexecdir") (\_ -> return libexecdir)
45getSysconfDir = catchIO (getEnv "8queens_sysconfdir") (\_ -> return sysconfdir)
46
47getDataFileName :: FilePath -> IO FilePath
48getDataFileName name = do
49 dir <- getDataDir
50 return (dir ++ "/" ++ name)
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/autogen/cabal_macros.h b/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/autogen/cabal_macros.h
deleted file mode 100644
index 80cc9e2..0000000
--- a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/8queens/autogen/cabal_macros.h
+++ /dev/null
@@ -1,195 +0,0 @@
1/* DO NOT EDIT: This file is automatically generated by Cabal */
2
3/* package 8queens-0.1.0.0 */
4#ifndef VERSION_8queens
5#define VERSION_8queens "0.1.0.0"
6#endif /* VERSION_8queens */
7#ifndef MIN_VERSION_8queens
8#define MIN_VERSION_8queens(major1,major2,minor) (\
9 (major1) < 0 || \
10 (major1) == 0 && (major2) < 1 || \
11 (major1) == 0 && (major2) == 1 && (minor) <= 0)
12#endif /* MIN_VERSION_8queens */
13
14/* package base-4.12.0.0 */
15#ifndef VERSION_base
16#define VERSION_base "4.12.0.0"
17#endif /* VERSION_base */
18#ifndef MIN_VERSION_base
19#define MIN_VERSION_base(major1,major2,minor) (\
20 (major1) < 4 || \
21 (major1) == 4 && (major2) < 12 || \
22 (major1) == 4 && (major2) == 12 && (minor) <= 0)
23#endif /* MIN_VERSION_base */
24
25/* package lens-4.17.1 */
26#ifndef VERSION_lens
27#define VERSION_lens "4.17.1"
28#endif /* VERSION_lens */
29#ifndef MIN_VERSION_lens
30#define MIN_VERSION_lens(major1,major2,minor) (\
31 (major1) < 4 || \
32 (major1) == 4 && (major2) < 17 || \
33 (major1) == 4 && (major2) == 17 && (minor) <= 1)
34#endif /* MIN_VERSION_lens */
35
36/* package linear-1.20.9 */
37#ifndef VERSION_linear
38#define VERSION_linear "1.20.9"
39#endif /* VERSION_linear */
40#ifndef MIN_VERSION_linear
41#define MIN_VERSION_linear(major1,major2,minor) (\
42 (major1) < 1 || \
43 (major1) == 1 && (major2) < 20 || \
44 (major1) == 1 && (major2) == 20 && (minor) <= 9)
45#endif /* MIN_VERSION_linear */
46
47/* package matrix-0.3.6.1 */
48#ifndef VERSION_matrix
49#define VERSION_matrix "0.3.6.1"
50#endif /* VERSION_matrix */
51#ifndef MIN_VERSION_matrix
52#define MIN_VERSION_matrix(major1,major2,minor) (\
53 (major1) < 0 || \
54 (major1) == 0 && (major2) < 3 || \
55 (major1) == 0 && (major2) == 3 && (minor) <= 6)
56#endif /* MIN_VERSION_matrix */
57
58/* package random-1.1 */
59#ifndef VERSION_random
60#define VERSION_random "1.1"
61#endif /* VERSION_random */
62#ifndef MIN_VERSION_random
63#define MIN_VERSION_random(major1,major2,minor) (\
64 (major1) < 1 || \
65 (major1) == 1 && (major2) < 1 || \
66 (major1) == 1 && (major2) == 1 && (minor) <= 0)
67#endif /* MIN_VERSION_random */
68
69/* package vector-0.12.0.3 */
70#ifndef VERSION_vector
71#define VERSION_vector "0.12.0.3"
72#endif /* VERSION_vector */
73#ifndef MIN_VERSION_vector
74#define MIN_VERSION_vector(major1,major2,minor) (\
75 (major1) < 0 || \
76 (major1) == 0 && (major2) < 12 || \
77 (major1) == 0 && (major2) == 12 && (minor) <= 0)
78#endif /* MIN_VERSION_vector */
79
80/* tool gcc-6.3.0 */
81#ifndef TOOL_VERSION_gcc
82#define TOOL_VERSION_gcc "6.3.0"
83#endif /* TOOL_VERSION_gcc */
84#ifndef MIN_TOOL_VERSION_gcc
85#define MIN_TOOL_VERSION_gcc(major1,major2,minor) (\
86 (major1) < 6 || \
87 (major1) == 6 && (major2) < 3 || \
88 (major1) == 6 && (major2) == 3 && (minor) <= 0)
89#endif /* MIN_TOOL_VERSION_gcc */
90
91/* tool ghc-8.6.5 */
92#ifndef TOOL_VERSION_ghc
93#define TOOL_VERSION_ghc "8.6.5"
94#endif /* TOOL_VERSION_ghc */
95#ifndef MIN_TOOL_VERSION_ghc
96#define MIN_TOOL_VERSION_ghc(major1,major2,minor) (\
97 (major1) < 8 || \
98 (major1) == 8 && (major2) < 6 || \
99 (major1) == 8 && (major2) == 6 && (minor) <= 5)
100#endif /* MIN_TOOL_VERSION_ghc */
101
102/* tool ghc-pkg-8.6.5 */
103#ifndef TOOL_VERSION_ghc_pkg
104#define TOOL_VERSION_ghc_pkg "8.6.5"
105#endif /* TOOL_VERSION_ghc_pkg */
106#ifndef MIN_TOOL_VERSION_ghc_pkg
107#define MIN_TOOL_VERSION_ghc_pkg(major1,major2,minor) (\
108 (major1) < 8 || \
109 (major1) == 8 && (major2) < 6 || \
110 (major1) == 8 && (major2) == 6 && (minor) <= 5)
111#endif /* MIN_TOOL_VERSION_ghc_pkg */
112
113/* tool haddock-2.22.0 */
114#ifndef TOOL_VERSION_haddock
115#define TOOL_VERSION_haddock "2.22.0"
116#endif /* TOOL_VERSION_haddock */
117#ifndef MIN_TOOL_VERSION_haddock
118#define MIN_TOOL_VERSION_haddock(major1,major2,minor) (\
119 (major1) < 2 || \
120 (major1) == 2 && (major2) < 22 || \
121 (major1) == 2 && (major2) == 22 && (minor) <= 0)
122#endif /* MIN_TOOL_VERSION_haddock */
123
124/* tool happy-1.19.9 */
125#ifndef TOOL_VERSION_happy
126#define TOOL_VERSION_happy "1.19.9"
127#endif /* TOOL_VERSION_happy */
128#ifndef MIN_TOOL_VERSION_happy
129#define MIN_TOOL_VERSION_happy(major1,major2,minor) (\
130 (major1) < 1 || \
131 (major1) == 1 && (major2) < 19 || \
132 (major1) == 1 && (major2) == 19 && (minor) <= 9)
133#endif /* MIN_TOOL_VERSION_happy */
134
135/* tool hpc-0.67 */
136#ifndef TOOL_VERSION_hpc
137#define TOOL_VERSION_hpc "0.67"
138#endif /* TOOL_VERSION_hpc */
139#ifndef MIN_TOOL_VERSION_hpc
140#define MIN_TOOL_VERSION_hpc(major1,major2,minor) (\
141 (major1) < 0 || \
142 (major1) == 0 && (major2) < 67 || \
143 (major1) == 0 && (major2) == 67 && (minor) <= 0)
144#endif /* MIN_TOOL_VERSION_hpc */
145
146/* tool hsc2hs-0.68.5 */
147#ifndef TOOL_VERSION_hsc2hs
148#define TOOL_VERSION_hsc2hs "0.68.5"
149#endif /* TOOL_VERSION_hsc2hs */
150#ifndef MIN_TOOL_VERSION_hsc2hs
151#define MIN_TOOL_VERSION_hsc2hs(major1,major2,minor) (\
152 (major1) < 0 || \
153 (major1) == 0 && (major2) < 68 || \
154 (major1) == 0 && (major2) == 68 && (minor) <= 5)
155#endif /* MIN_TOOL_VERSION_hsc2hs */
156
157/* tool pkg-config-0.29 */
158#ifndef TOOL_VERSION_pkg_config
159#define TOOL_VERSION_pkg_config "0.29"
160#endif /* TOOL_VERSION_pkg_config */
161#ifndef MIN_TOOL_VERSION_pkg_config
162#define MIN_TOOL_VERSION_pkg_config(major1,major2,minor) (\
163 (major1) < 0 || \
164 (major1) == 0 && (major2) < 29 || \
165 (major1) == 0 && (major2) == 29 && (minor) <= 0)
166#endif /* MIN_TOOL_VERSION_pkg_config */
167
168/* tool runghc-8.6.5 */
169#ifndef TOOL_VERSION_runghc
170#define TOOL_VERSION_runghc "8.6.5"
171#endif /* TOOL_VERSION_runghc */
172#ifndef MIN_TOOL_VERSION_runghc
173#define MIN_TOOL_VERSION_runghc(major1,major2,minor) (\
174 (major1) < 8 || \
175 (major1) == 8 && (major2) < 6 || \
176 (major1) == 8 && (major2) == 6 && (minor) <= 5)
177#endif /* MIN_TOOL_VERSION_runghc */
178
179/* tool strip-2.28 */
180#ifndef TOOL_VERSION_strip
181#define TOOL_VERSION_strip "2.28"
182#endif /* TOOL_VERSION_strip */
183#ifndef MIN_TOOL_VERSION_strip
184#define MIN_TOOL_VERSION_strip(major1,major2,minor) (\
185 (major1) < 2 || \
186 (major1) == 2 && (major2) < 28 || \
187 (major1) == 2 && (major2) == 28 && (minor) <= 0)
188#endif /* MIN_TOOL_VERSION_strip */
189
190#ifndef CURRENT_COMPONENT_ID
191#define CURRENT_COMPONENT_ID "8queens-0.1.0.0-1f9e2RemoZD8IyN03WXtS0-8queens"
192#endif /* CURRENT_COMPONENT_ID */
193#ifndef CURRENT_PACKAGE_VERSION
194#define CURRENT_PACKAGE_VERSION "0.1.0.0"
195#endif /* CURRENT_PACKAGE_VERSION */
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/package.conf.inplace/package.cache b/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/package.conf.inplace/package.cache
deleted file mode 100644
index b3cae5c..0000000
--- a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/package.conf.inplace/package.cache
+++ /dev/null
Binary files differ
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/package.conf.inplace/package.cache.lock b/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/package.conf.inplace/package.cache.lock
deleted file mode 100644
index e69de29..0000000
--- a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/package.conf.inplace/package.cache.lock
+++ /dev/null
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup-config b/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup-config
deleted file mode 100644
index 81c2525..0000000
--- a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup-config
+++ /dev/null
Binary files differ
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/stack-build-caches/exe-8queens b/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/stack-build-caches/exe-8queens
deleted file mode 100644
index a41b89b..0000000
--- a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/stack-build-caches/exe-8queens
+++ /dev/null
Binary files differ
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/stack-cabal-mod b/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/stack-cabal-mod
deleted file mode 100644
index 13bd001..0000000
--- a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/stack-cabal-mod
+++ /dev/null
Binary files differ
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/stack-config-cache b/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/stack-config-cache
deleted file mode 100644
index 4a70cec..0000000
--- a/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/stack-config-cache
+++ /dev/null
Binary files differ
diff --git a/.stack-work/ghci/3a535720/cabal_macros.h b/.stack-work/ghci/3a535720/cabal_macros.h
deleted file mode 100644
index 38daada..0000000
--- a/.stack-work/ghci/3a535720/cabal_macros.h
+++ /dev/null
@@ -1,198 +0,0 @@
1/* DO NOT EDIT: This file is automatically generated by Cabal */
2
3/* package 8queens-0.1.0.0 */
4#ifndef VERSION_8queens
5#define VERSION_8queens "0.1.0.0"
6#endif /* VERSION_8queens */
7#ifndef MIN_VERSION_8queens
8#define MIN_VERSION_8queens(major1,major2,minor) (\
9 (major1) < 0 || \
10 (major1) == 0 && (major2) < 1 || \
11 (major1) == 0 && (major2) == 1 && (minor) <= 0)
12#endif /* MIN_VERSION_8queens */
13
14/* package base-4.12.0.0 */
15#ifndef VERSION_base
16#define VERSION_base "4.12.0.0"
17#endif /* VERSION_base */
18#ifndef MIN_VERSION_base
19#define MIN_VERSION_base(major1,major2,minor) (\
20 (major1) < 4 || \
21 (major1) == 4 && (major2) < 12 || \
22 (major1) == 4 && (major2) == 12 && (minor) <= 0)
23#endif /* MIN_VERSION_base */
24
25/* package lens-4.17.1 */
26#ifndef VERSION_lens
27#define VERSION_lens "4.17.1"
28#endif /* VERSION_lens */
29#ifndef MIN_VERSION_lens
30#define MIN_VERSION_lens(major1,major2,minor) (\
31 (major1) < 4 || \
32 (major1) == 4 && (major2) < 17 || \
33 (major1) == 4 && (major2) == 17 && (minor) <= 1)
34#endif /* MIN_VERSION_lens */
35
36/* package linear-1.20.9 */
37#ifndef VERSION_linear
38#define VERSION_linear "1.20.9"
39#endif /* VERSION_linear */
40#ifndef MIN_VERSION_linear
41#define MIN_VERSION_linear(major1,major2,minor) (\
42 (major1) < 1 || \
43 (major1) == 1 && (major2) < 20 || \
44 (major1) == 1 && (major2) == 20 && (minor) <= 9)
45#endif /* MIN_VERSION_linear */
46
47/* package matrix-0.3.6.1 */
48#ifndef VERSION_matrix
49#define VERSION_matrix "0.3.6.1"
50#endif /* VERSION_matrix */
51#ifndef MIN_VERSION_matrix
52#define MIN_VERSION_matrix(major1,major2,minor) (\
53 (major1) < 0 || \
54 (major1) == 0 && (major2) < 3 || \
55 (major1) == 0 && (major2) == 3 && (minor) <= 6)
56#endif /* MIN_VERSION_matrix */
57
58/* package random-1.1 */
59#ifndef VERSION_random
60#define VERSION_random "1.1"
61#endif /* VERSION_random */
62#ifndef MIN_VERSION_random
63#define MIN_VERSION_random(major1,major2,minor) (\
64 (major1) < 1 || \
65 (major1) == 1 && (major2) < 1 || \
66 (major1) == 1 && (major2) == 1 && (minor) <= 0)
67#endif /* MIN_VERSION_random */
68
69/* package vector-0.12.0.3 */
70#ifndef VERSION_vector
71#define VERSION_vector "0.12.0.3"
72#endif /* VERSION_vector */
73#ifndef MIN_VERSION_vector
74#define MIN_VERSION_vector(major1,major2,minor) (\
75 (major1) < 0 || \
76 (major1) == 0 && (major2) < 12 || \
77 (major1) == 0 && (major2) == 12 && (minor) <= 0)
78#endif /* MIN_VERSION_vector */
79
80/* tool gcc-6.3.0 */
81#ifndef TOOL_VERSION_gcc
82#define TOOL_VERSION_gcc "6.3.0"
83#endif /* TOOL_VERSION_gcc */
84#ifndef MIN_TOOL_VERSION_gcc
85#define MIN_TOOL_VERSION_gcc(major1,major2,minor) (\
86 (major1) < 6 || \
87 (major1) == 6 && (major2) < 3 || \
88 (major1) == 6 && (major2) == 3 && (minor) <= 0)
89#endif /* MIN_TOOL_VERSION_gcc */
90
91/* tool ghc-8.6.5 */
92#ifndef TOOL_VERSION_ghc
93#define TOOL_VERSION_ghc "8.6.5"
94#endif /* TOOL_VERSION_ghc */
95#ifndef MIN_TOOL_VERSION_ghc
96#define MIN_TOOL_VERSION_ghc(major1,major2,minor) (\
97 (major1) < 8 || \
98 (major1) == 8 && (major2) < 6 || \
99 (major1) == 8 && (major2) == 6 && (minor) <= 5)
100#endif /* MIN_TOOL_VERSION_ghc */
101
102/* tool ghc-pkg-8.6.5 */
103#ifndef TOOL_VERSION_ghc_pkg
104#define TOOL_VERSION_ghc_pkg "8.6.5"
105#endif /* TOOL_VERSION_ghc_pkg */
106#ifndef MIN_TOOL_VERSION_ghc_pkg
107#define MIN_TOOL_VERSION_ghc_pkg(major1,major2,minor) (\
108 (major1) < 8 || \
109 (major1) == 8 && (major2) < 6 || \
110 (major1) == 8 && (major2) == 6 && (minor) <= 5)
111#endif /* MIN_TOOL_VERSION_ghc_pkg */
112
113/* tool haddock-2.22.0 */
114#ifndef TOOL_VERSION_haddock
115#define TOOL_VERSION_haddock "2.22.0"
116#endif /* TOOL_VERSION_haddock */
117#ifndef MIN_TOOL_VERSION_haddock
118#define MIN_TOOL_VERSION_haddock(major1,major2,minor) (\
119 (major1) < 2 || \
120 (major1) == 2 && (major2) < 22 || \
121 (major1) == 2 && (major2) == 22 && (minor) <= 0)
122#endif /* MIN_TOOL_VERSION_haddock */
123
124/* tool happy-1.19.9 */
125#ifndef TOOL_VERSION_happy
126#define TOOL_VERSION_happy "1.19.9"
127#endif /* TOOL_VERSION_happy */
128#ifndef MIN_TOOL_VERSION_happy
129#define MIN_TOOL_VERSION_happy(major1,major2,minor) (\
130 (major1) < 1 || \
131 (major1) == 1 && (major2) < 19 || \
132 (major1) == 1 && (major2) == 19 && (minor) <= 9)
133#endif /* MIN_TOOL_VERSION_happy */
134
135/* tool hpc-0.67 */
136#ifndef TOOL_VERSION_hpc
137#define TOOL_VERSION_hpc "0.67"
138#endif /* TOOL_VERSION_hpc */
139#ifndef MIN_TOOL_VERSION_hpc
140#define MIN_TOOL_VERSION_hpc(major1,major2,minor) (\
141 (major1) < 0 || \
142 (major1) == 0 && (major2) < 67 || \
143 (major1) == 0 && (major2) == 67 && (minor) <= 0)
144#endif /* MIN_TOOL_VERSION_hpc */
145
146/* tool hsc2hs-0.68.5 */
147#ifndef TOOL_VERSION_hsc2hs
148#define TOOL_VERSION_hsc2hs "0.68.5"
149#endif /* TOOL_VERSION_hsc2hs */
150#ifndef MIN_TOOL_VERSION_hsc2hs
151#define MIN_TOOL_VERSION_hsc2hs(major1,major2,minor) (\
152 (major1) < 0 || \
153 (major1) == 0 && (major2) < 68 || \
154 (major1) == 0 && (major2) == 68 && (minor) <= 5)
155#endif /* MIN_TOOL_VERSION_hsc2hs */
156
157/* tool pkg-config-0.29 */
158#ifndef TOOL_VERSION_pkg_config
159#define TOOL_VERSION_pkg_config "0.29"
160#endif /* TOOL_VERSION_pkg_config */
161#ifndef MIN_TOOL_VERSION_pkg_config
162#define MIN_TOOL_VERSION_pkg_config(major1,major2,minor) (\
163 (major1) < 0 || \
164 (major1) == 0 && (major2) < 29 || \
165 (major1) == 0 && (major2) == 29 && (minor) <= 0)
166#endif /* MIN_TOOL_VERSION_pkg_config */
167
168/* tool runghc-8.6.5 */
169#ifndef TOOL_VERSION_runghc
170#define TOOL_VERSION_runghc "8.6.5"
171#endif /* TOOL_VERSION_runghc */
172#ifndef MIN_TOOL_VERSION_runghc
173#define MIN_TOOL_VERSION_runghc(major1,major2,minor) (\
174 (major1) < 8 || \
175 (major1) == 8 && (major2) < 6 || \
176 (major1) == 8 && (major2) == 6 && (minor) <= 5)
177#endif /* MIN_TOOL_VERSION_runghc */
178
179/* tool strip-2.28 */
180#ifndef TOOL_VERSION_strip
181#define TOOL_VERSION_strip "2.28"
182#endif /* TOOL_VERSION_strip */
183#ifndef MIN_TOOL_VERSION_strip
184#define MIN_TOOL_VERSION_strip(major1,major2,minor) (\
185 (major1) < 2 || \
186 (major1) == 2 && (major2) < 28 || \
187 (major1) == 2 && (major2) == 28 && (minor) <= 0)
188#endif /* MIN_TOOL_VERSION_strip */
189
190#ifndef CURRENT_COMPONENT_ID
191#define CURRENT_COMPONENT_ID "8queens-0.1.0.0-1f9e2RemoZD8IyN03WXtS0-8queens"
192#endif /* CURRENT_COMPONENT_ID */
193#ifndef CURRENT_PACKAGE_VERSION
194#define CURRENT_PACKAGE_VERSION "0.1.0.0"
195#endif /* CURRENT_PACKAGE_VERSION */
196
197#undef CURRENT_PACKAGE_KEY
198#undef CURRENT_COMPONENT_ID
diff --git a/.stack-work/ghci/429a2e1e/cabal_macros.h b/.stack-work/ghci/429a2e1e/cabal_macros.h
deleted file mode 100644
index cca702a..0000000
--- a/.stack-work/ghci/429a2e1e/cabal_macros.h
+++ /dev/null
@@ -1,176 +0,0 @@
1/* DO NOT EDIT: This file is automatically generated by Cabal */
2
3/* package 8queens-0.1.0.0 */
4#ifndef VERSION_8queens
5#define VERSION_8queens "0.1.0.0"
6#endif /* VERSION_8queens */
7#ifndef MIN_VERSION_8queens
8#define MIN_VERSION_8queens(major1,major2,minor) (\
9 (major1) < 0 || \
10 (major1) == 0 && (major2) < 1 || \
11 (major1) == 0 && (major2) == 1 && (minor) <= 0)
12#endif /* MIN_VERSION_8queens */
13
14/* package base-4.12.0.0 */
15#ifndef VERSION_base
16#define VERSION_base "4.12.0.0"
17#endif /* VERSION_base */
18#ifndef MIN_VERSION_base
19#define MIN_VERSION_base(major1,major2,minor) (\
20 (major1) < 4 || \
21 (major1) == 4 && (major2) < 12 || \
22 (major1) == 4 && (major2) == 12 && (minor) <= 0)
23#endif /* MIN_VERSION_base */
24
25/* package lens-4.17.1 */
26#ifndef VERSION_lens
27#define VERSION_lens "4.17.1"
28#endif /* VERSION_lens */
29#ifndef MIN_VERSION_lens
30#define MIN_VERSION_lens(major1,major2,minor) (\
31 (major1) < 4 || \
32 (major1) == 4 && (major2) < 17 || \
33 (major1) == 4 && (major2) == 17 && (minor) <= 1)
34#endif /* MIN_VERSION_lens */
35
36/* package linear-1.20.9 */
37#ifndef VERSION_linear
38#define VERSION_linear "1.20.9"
39#endif /* VERSION_linear */
40#ifndef MIN_VERSION_linear
41#define MIN_VERSION_linear(major1,major2,minor) (\
42 (major1) < 1 || \
43 (major1) == 1 && (major2) < 20 || \
44 (major1) == 1 && (major2) == 20 && (minor) <= 9)
45#endif /* MIN_VERSION_linear */
46
47/* package matrix-0.3.6.1 */
48#ifndef VERSION_matrix
49#define VERSION_matrix "0.3.6.1"
50#endif /* VERSION_matrix */
51#ifndef MIN_VERSION_matrix
52#define MIN_VERSION_matrix(major1,major2,minor) (\
53 (major1) < 0 || \
54 (major1) == 0 && (major2) < 3 || \
55 (major1) == 0 && (major2) == 3 && (minor) <= 6)
56#endif /* MIN_VERSION_matrix */
57
58/* tool gcc-6.3.0 */
59#ifndef TOOL_VERSION_gcc
60#define TOOL_VERSION_gcc "6.3.0"
61#endif /* TOOL_VERSION_gcc */
62#ifndef MIN_TOOL_VERSION_gcc
63#define MIN_TOOL_VERSION_gcc(major1,major2,minor) (\
64 (major1) < 6 || \
65 (major1) == 6 && (major2) < 3 || \
66 (major1) == 6 && (major2) == 3 && (minor) <= 0)
67#endif /* MIN_TOOL_VERSION_gcc */
68
69/* tool ghc-8.6.5 */
70#ifndef TOOL_VERSION_ghc
71#define TOOL_VERSION_ghc "8.6.5"
72#endif /* TOOL_VERSION_ghc */
73#ifndef MIN_TOOL_VERSION_ghc
74#define MIN_TOOL_VERSION_ghc(major1,major2,minor) (\
75 (major1) < 8 || \
76 (major1) == 8 && (major2) < 6 || \
77 (major1) == 8 && (major2) == 6 && (minor) <= 5)
78#endif /* MIN_TOOL_VERSION_ghc */
79
80/* tool ghc-pkg-8.6.5 */
81#ifndef TOOL_VERSION_ghc_pkg
82#define TOOL_VERSION_ghc_pkg "8.6.5"
83#endif /* TOOL_VERSION_ghc_pkg */
84#ifndef MIN_TOOL_VERSION_ghc_pkg
85#define MIN_TOOL_VERSION_ghc_pkg(major1,major2,minor) (\
86 (major1) < 8 || \
87 (major1) == 8 && (major2) < 6 || \
88 (major1) == 8 && (major2) == 6 && (minor) <= 5)
89#endif /* MIN_TOOL_VERSION_ghc_pkg */
90
91/* tool haddock-2.22.0 */
92#ifndef TOOL_VERSION_haddock
93#define TOOL_VERSION_haddock "2.22.0"
94#endif /* TOOL_VERSION_haddock */
95#ifndef MIN_TOOL_VERSION_haddock
96#define MIN_TOOL_VERSION_haddock(major1,major2,minor) (\
97 (major1) < 2 || \
98 (major1) == 2 && (major2) < 22 || \
99 (major1) == 2 && (major2) == 22 && (minor) <= 0)
100#endif /* MIN_TOOL_VERSION_haddock */
101
102/* tool happy-1.19.9 */
103#ifndef TOOL_VERSION_happy
104#define TOOL_VERSION_happy "1.19.9"
105#endif /* TOOL_VERSION_happy */
106#ifndef MIN_TOOL_VERSION_happy
107#define MIN_TOOL_VERSION_happy(major1,major2,minor) (\
108 (major1) < 1 || \
109 (major1) == 1 && (major2) < 19 || \
110 (major1) == 1 && (major2) == 19 && (minor) <= 9)
111#endif /* MIN_TOOL_VERSION_happy */
112
113/* tool hpc-0.67 */
114#ifndef TOOL_VERSION_hpc
115#define TOOL_VERSION_hpc "0.67"
116#endif /* TOOL_VERSION_hpc */
117#ifndef MIN_TOOL_VERSION_hpc
118#define MIN_TOOL_VERSION_hpc(major1,major2,minor) (\
119 (major1) < 0 || \
120 (major1) == 0 && (major2) < 67 || \
121 (major1) == 0 && (major2) == 67 && (minor) <= 0)
122#endif /* MIN_TOOL_VERSION_hpc */
123
124/* tool hsc2hs-0.68.5 */
125#ifndef TOOL_VERSION_hsc2hs
126#define TOOL_VERSION_hsc2hs "0.68.5"
127#endif /* TOOL_VERSION_hsc2hs */
128#ifndef MIN_TOOL_VERSION_hsc2hs
129#define MIN_TOOL_VERSION_hsc2hs(major1,major2,minor) (\
130 (major1) < 0 || \
131 (major1) == 0 && (major2) < 68 || \
132 (major1) == 0 && (major2) == 68 && (minor) <= 5)
133#endif /* MIN_TOOL_VERSION_hsc2hs */
134
135/* tool pkg-config-0.29 */
136#ifndef TOOL_VERSION_pkg_config
137#define TOOL_VERSION_pkg_config "0.29"
138#endif /* TOOL_VERSION_pkg_config */
139#ifndef MIN_TOOL_VERSION_pkg_config
140#define MIN_TOOL_VERSION_pkg_config(major1,major2,minor) (\
141 (major1) < 0 || \
142 (major1) == 0 && (major2) < 29 || \
143 (major1) == 0 && (major2) == 29 && (minor) <= 0)
144#endif /* MIN_TOOL_VERSION_pkg_config */
145
146/* tool runghc-8.6.5 */
147#ifndef TOOL_VERSION_runghc
148#define TOOL_VERSION_runghc "8.6.5"
149#endif /* TOOL_VERSION_runghc */
150#ifndef MIN_TOOL_VERSION_runghc
151#define MIN_TOOL_VERSION_runghc(major1,major2,minor) (\
152 (major1) < 8 || \
153 (major1) == 8 && (major2) < 6 || \
154 (major1) == 8 && (major2) == 6 && (minor) <= 5)
155#endif /* MIN_TOOL_VERSION_runghc */
156
157/* tool strip-2.28 */
158#ifndef TOOL_VERSION_strip
159#define TOOL_VERSION_strip "2.28"
160#endif /* TOOL_VERSION_strip */
161#ifndef MIN_TOOL_VERSION_strip
162#define MIN_TOOL_VERSION_strip(major1,major2,minor) (\
163 (major1) < 2 || \
164 (major1) == 2 && (major2) < 28 || \
165 (major1) == 2 && (major2) == 28 && (minor) <= 0)
166#endif /* MIN_TOOL_VERSION_strip */
167
168#ifndef CURRENT_COMPONENT_ID
169#define CURRENT_COMPONENT_ID "8queens-0.1.0.0-ELLkn1g8V07FUCj6OAQnSh-8queens"
170#endif /* CURRENT_COMPONENT_ID */
171#ifndef CURRENT_PACKAGE_VERSION
172#define CURRENT_PACKAGE_VERSION "0.1.0.0"
173#endif /* CURRENT_PACKAGE_VERSION */
174
175#undef CURRENT_PACKAGE_KEY
176#undef CURRENT_COMPONENT_ID
diff --git a/.stack-work/ghci/c89d8de5/cabal_macros.h b/.stack-work/ghci/c89d8de5/cabal_macros.h
deleted file mode 100644
index 6234f14..0000000
--- a/.stack-work/ghci/c89d8de5/cabal_macros.h
+++ /dev/null
@@ -1,198 +0,0 @@
1/* DO NOT EDIT: This file is automatically generated by Cabal */
2
3/* package 8queens-0.1.0.0 */
4#ifndef VERSION_8queens
5#define VERSION_8queens "0.1.0.0"
6#endif /* VERSION_8queens */
7#ifndef MIN_VERSION_8queens
8#define MIN_VERSION_8queens(major1,major2,minor) (\
9 (major1) < 0 || \
10 (major1) == 0 && (major2) < 1 || \
11 (major1) == 0 && (major2) == 1 && (minor) <= 0)
12#endif /* MIN_VERSION_8queens */
13
14/* package base-4.12.0.0 */
15#ifndef VERSION_base
16#define VERSION_base "4.12.0.0"
17#endif /* VERSION_base */
18#ifndef MIN_VERSION_base
19#define MIN_VERSION_base(major1,major2,minor) (\
20 (major1) < 4 || \
21 (major1) == 4 && (major2) < 12 || \
22 (major1) == 4 && (major2) == 12 && (minor) <= 0)
23#endif /* MIN_VERSION_base */
24
25/* package hmatrix-0.19.0.0 */
26#ifndef VERSION_hmatrix
27#define VERSION_hmatrix "0.19.0.0"
28#endif /* VERSION_hmatrix */
29#ifndef MIN_VERSION_hmatrix
30#define MIN_VERSION_hmatrix(major1,major2,minor) (\
31 (major1) < 0 || \
32 (major1) == 0 && (major2) < 19 || \
33 (major1) == 0 && (major2) == 19 && (minor) <= 0)
34#endif /* MIN_VERSION_hmatrix */
35
36/* package lens-4.17.1 */
37#ifndef VERSION_lens
38#define VERSION_lens "4.17.1"
39#endif /* VERSION_lens */
40#ifndef MIN_VERSION_lens
41#define MIN_VERSION_lens(major1,major2,minor) (\
42 (major1) < 4 || \
43 (major1) == 4 && (major2) < 17 || \
44 (major1) == 4 && (major2) == 17 && (minor) <= 1)
45#endif /* MIN_VERSION_lens */
46
47/* package linear-1.20.9 */
48#ifndef VERSION_linear
49#define VERSION_linear "1.20.9"
50#endif /* VERSION_linear */
51#ifndef MIN_VERSION_linear
52#define MIN_VERSION_linear(major1,major2,minor) (\
53 (major1) < 1 || \
54 (major1) == 1 && (major2) < 20 || \
55 (major1) == 1 && (major2) == 20 && (minor) <= 9)
56#endif /* MIN_VERSION_linear */
57
58/* package matrix-0.3.6.1 */
59#ifndef VERSION_matrix
60#define VERSION_matrix "0.3.6.1"
61#endif /* VERSION_matrix */
62#ifndef MIN_VERSION_matrix
63#define MIN_VERSION_matrix(major1,major2,minor) (\
64 (major1) < 0 || \
65 (major1) == 0 && (major2) < 3 || \
66 (major1) == 0 && (major2) == 3 && (minor) <= 6)
67#endif /* MIN_VERSION_matrix */
68
69/* package random-1.1 */
70#ifndef VERSION_random
71#define VERSION_random "1.1"
72#endif /* VERSION_random */
73#ifndef MIN_VERSION_random
74#define MIN_VERSION_random(major1,major2,minor) (\
75 (major1) < 1 || \
76 (major1) == 1 && (major2) < 1 || \
77 (major1) == 1 && (major2) == 1 && (minor) <= 0)
78#endif /* MIN_VERSION_random */
79
80/* tool gcc-6.3.0 */
81#ifndef TOOL_VERSION_gcc
82#define TOOL_VERSION_gcc "6.3.0"
83#endif /* TOOL_VERSION_gcc */
84#ifndef MIN_TOOL_VERSION_gcc
85#define MIN_TOOL_VERSION_gcc(major1,major2,minor) (\
86 (major1) < 6 || \
87 (major1) == 6 && (major2) < 3 || \
88 (major1) == 6 && (major2) == 3 && (minor) <= 0)
89#endif /* MIN_TOOL_VERSION_gcc */
90
91/* tool ghc-8.6.5 */
92#ifndef TOOL_VERSION_ghc
93#define TOOL_VERSION_ghc "8.6.5"
94#endif /* TOOL_VERSION_ghc */
95#ifndef MIN_TOOL_VERSION_ghc
96#define MIN_TOOL_VERSION_ghc(major1,major2,minor) (\
97 (major1) < 8 || \
98 (major1) == 8 && (major2) < 6 || \
99 (major1) == 8 && (major2) == 6 && (minor) <= 5)
100#endif /* MIN_TOOL_VERSION_ghc */
101
102/* tool ghc-pkg-8.6.5 */
103#ifndef TOOL_VERSION_ghc_pkg
104#define TOOL_VERSION_ghc_pkg "8.6.5"
105#endif /* TOOL_VERSION_ghc_pkg */
106#ifndef MIN_TOOL_VERSION_ghc_pkg
107#define MIN_TOOL_VERSION_ghc_pkg(major1,major2,minor) (\
108 (major1) < 8 || \
109 (major1) == 8 && (major2) < 6 || \
110 (major1) == 8 && (major2) == 6 && (minor) <= 5)
111#endif /* MIN_TOOL_VERSION_ghc_pkg */
112
113/* tool haddock-2.22.0 */
114#ifndef TOOL_VERSION_haddock
115#define TOOL_VERSION_haddock "2.22.0"
116#endif /* TOOL_VERSION_haddock */
117#ifndef MIN_TOOL_VERSION_haddock
118#define MIN_TOOL_VERSION_haddock(major1,major2,minor) (\
119 (major1) < 2 || \
120 (major1) == 2 && (major2) < 22 || \
121 (major1) == 2 && (major2) == 22 && (minor) <= 0)
122#endif /* MIN_TOOL_VERSION_haddock */
123
124/* tool happy-1.19.9 */
125#ifndef TOOL_VERSION_happy
126#define TOOL_VERSION_happy "1.19.9"
127#endif /* TOOL_VERSION_happy */
128#ifndef MIN_TOOL_VERSION_happy
129#define MIN_TOOL_VERSION_happy(major1,major2,minor) (\
130 (major1) < 1 || \
131 (major1) == 1 && (major2) < 19 || \
132 (major1) == 1 && (major2) == 19 && (minor) <= 9)
133#endif /* MIN_TOOL_VERSION_happy */
134
135/* tool hpc-0.67 */
136#ifndef TOOL_VERSION_hpc
137#define TOOL_VERSION_hpc "0.67"
138#endif /* TOOL_VERSION_hpc */
139#ifndef MIN_TOOL_VERSION_hpc
140#define MIN_TOOL_VERSION_hpc(major1,major2,minor) (\
141 (major1) < 0 || \
142 (major1) == 0 && (major2) < 67 || \
143 (major1) == 0 && (major2) == 67 && (minor) <= 0)
144#endif /* MIN_TOOL_VERSION_hpc */
145
146/* tool hsc2hs-0.68.5 */
147#ifndef TOOL_VERSION_hsc2hs
148#define TOOL_VERSION_hsc2hs "0.68.5"
149#endif /* TOOL_VERSION_hsc2hs */
150#ifndef MIN_TOOL_VERSION_hsc2hs
151#define MIN_TOOL_VERSION_hsc2hs(major1,major2,minor) (\
152 (major1) < 0 || \
153 (major1) == 0 && (major2) < 68 || \
154 (major1) == 0 && (major2) == 68 && (minor) <= 5)
155#endif /* MIN_TOOL_VERSION_hsc2hs */
156
157/* tool pkg-config-0.29 */
158#ifndef TOOL_VERSION_pkg_config
159#define TOOL_VERSION_pkg_config "0.29"
160#endif /* TOOL_VERSION_pkg_config */
161#ifndef MIN_TOOL_VERSION_pkg_config
162#define MIN_TOOL_VERSION_pkg_config(major1,major2,minor) (\
163 (major1) < 0 || \
164 (major1) == 0 && (major2) < 29 || \
165 (major1) == 0 && (major2) == 29 && (minor) <= 0)
166#endif /* MIN_TOOL_VERSION_pkg_config */
167
168/* tool runghc-8.6.5 */
169#ifndef TOOL_VERSION_runghc
170#define TOOL_VERSION_runghc "8.6.5"
171#endif /* TOOL_VERSION_runghc */
172#ifndef MIN_TOOL_VERSION_runghc
173#define MIN_TOOL_VERSION_runghc(major1,major2,minor) (\
174 (major1) < 8 || \
175 (major1) == 8 && (major2) < 6 || \
176 (major1) == 8 && (major2) == 6 && (minor) <= 5)
177#endif /* MIN_TOOL_VERSION_runghc */
178
179/* tool strip-2.28 */
180#ifndef TOOL_VERSION_strip
181#define TOOL_VERSION_strip "2.28"
182#endif /* TOOL_VERSION_strip */
183#ifndef MIN_TOOL_VERSION_strip
184#define MIN_TOOL_VERSION_strip(major1,major2,minor) (\
185 (major1) < 2 || \
186 (major1) == 2 && (major2) < 28 || \
187 (major1) == 2 && (major2) == 28 && (minor) <= 0)
188#endif /* MIN_TOOL_VERSION_strip */
189
190#ifndef CURRENT_COMPONENT_ID
191#define CURRENT_COMPONENT_ID "8queens-0.1.0.0-CALlXFbfsyqGmcuvjSNrVA-8queens"
192#endif /* CURRENT_COMPONENT_ID */
193#ifndef CURRENT_PACKAGE_VERSION
194#define CURRENT_PACKAGE_VERSION "0.1.0.0"
195#endif /* CURRENT_PACKAGE_VERSION */
196
197#undef CURRENT_PACKAGE_KEY
198#undef CURRENT_COMPONENT_ID
diff --git a/.stack-work/ghci/df908bbc/cabal_macros.h b/.stack-work/ghci/df908bbc/cabal_macros.h
deleted file mode 100644
index 5148526..0000000
--- a/.stack-work/ghci/df908bbc/cabal_macros.h
+++ /dev/null
@@ -1,187 +0,0 @@
1/* DO NOT EDIT: This file is automatically generated by Cabal */
2
3/* package 8queens-0.1.0.0 */
4#ifndef VERSION_8queens
5#define VERSION_8queens "0.1.0.0"
6#endif /* VERSION_8queens */
7#ifndef MIN_VERSION_8queens
8#define MIN_VERSION_8queens(major1,major2,minor) (\
9 (major1) < 0 || \
10 (major1) == 0 && (major2) < 1 || \
11 (major1) == 0 && (major2) == 1 && (minor) <= 0)
12#endif /* MIN_VERSION_8queens */
13
14/* package base-4.12.0.0 */
15#ifndef VERSION_base
16#define VERSION_base "4.12.0.0"
17#endif /* VERSION_base */
18#ifndef MIN_VERSION_base
19#define MIN_VERSION_base(major1,major2,minor) (\
20 (major1) < 4 || \
21 (major1) == 4 && (major2) < 12 || \
22 (major1) == 4 && (major2) == 12 && (minor) <= 0)
23#endif /* MIN_VERSION_base */
24
25/* package lens-4.17.1 */
26#ifndef VERSION_lens
27#define VERSION_lens "4.17.1"
28#endif /* VERSION_lens */
29#ifndef MIN_VERSION_lens
30#define MIN_VERSION_lens(major1,major2,minor) (\
31 (major1) < 4 || \
32 (major1) == 4 && (major2) < 17 || \
33 (major1) == 4 && (major2) == 17 && (minor) <= 1)
34#endif /* MIN_VERSION_lens */
35
36/* package linear-1.20.9 */
37#ifndef VERSION_linear
38#define VERSION_linear "1.20.9"
39#endif /* VERSION_linear */
40#ifndef MIN_VERSION_linear
41#define MIN_VERSION_linear(major1,major2,minor) (\
42 (major1) < 1 || \
43 (major1) == 1 && (major2) < 20 || \
44 (major1) == 1 && (major2) == 20 && (minor) <= 9)
45#endif /* MIN_VERSION_linear */
46
47/* package matrix-0.3.6.1 */
48#ifndef VERSION_matrix
49#define VERSION_matrix "0.3.6.1"
50#endif /* VERSION_matrix */
51#ifndef MIN_VERSION_matrix
52#define MIN_VERSION_matrix(major1,major2,minor) (\
53 (major1) < 0 || \
54 (major1) == 0 && (major2) < 3 || \
55 (major1) == 0 && (major2) == 3 && (minor) <= 6)
56#endif /* MIN_VERSION_matrix */
57
58/* package random-1.1 */
59#ifndef VERSION_random
60#define VERSION_random "1.1"
61#endif /* VERSION_random */
62#ifndef MIN_VERSION_random
63#define MIN_VERSION_random(major1,major2,minor) (\
64 (major1) < 1 || \
65 (major1) == 1 && (major2) < 1 || \
66 (major1) == 1 && (major2) == 1 && (minor) <= 0)
67#endif /* MIN_VERSION_random */
68
69/* tool gcc-6.3.0 */
70#ifndef TOOL_VERSION_gcc
71#define TOOL_VERSION_gcc "6.3.0"
72#endif /* TOOL_VERSION_gcc */
73#ifndef MIN_TOOL_VERSION_gcc
74#define MIN_TOOL_VERSION_gcc(major1,major2,minor) (\
75 (major1) < 6 || \
76 (major1) == 6 && (major2) < 3 || \
77 (major1) == 6 && (major2) == 3 && (minor) <= 0)
78#endif /* MIN_TOOL_VERSION_gcc */
79
80/* tool ghc-8.6.5 */
81#ifndef TOOL_VERSION_ghc
82#define TOOL_VERSION_ghc "8.6.5"
83#endif /* TOOL_VERSION_ghc */
84#ifndef MIN_TOOL_VERSION_ghc
85#define MIN_TOOL_VERSION_ghc(major1,major2,minor) (\
86 (major1) < 8 || \
87 (major1) == 8 && (major2) < 6 || \
88 (major1) == 8 && (major2) == 6 && (minor) <= 5)
89#endif /* MIN_TOOL_VERSION_ghc */
90
91/* tool ghc-pkg-8.6.5 */
92#ifndef TOOL_VERSION_ghc_pkg
93#define TOOL_VERSION_ghc_pkg "8.6.5"
94#endif /* TOOL_VERSION_ghc_pkg */
95#ifndef MIN_TOOL_VERSION_ghc_pkg
96#define MIN_TOOL_VERSION_ghc_pkg(major1,major2,minor) (\
97 (major1) < 8 || \
98 (major1) == 8 && (major2) < 6 || \
99 (major1) == 8 && (major2) == 6 && (minor) <= 5)
100#endif /* MIN_TOOL_VERSION_ghc_pkg */
101
102/* tool haddock-2.22.0 */
103#ifndef TOOL_VERSION_haddock
104#define TOOL_VERSION_haddock "2.22.0"
105#endif /* TOOL_VERSION_haddock */
106#ifndef MIN_TOOL_VERSION_haddock
107#define MIN_TOOL_VERSION_haddock(major1,major2,minor) (\
108 (major1) < 2 || \
109 (major1) == 2 && (major2) < 22 || \
110 (major1) == 2 && (major2) == 22 && (minor) <= 0)
111#endif /* MIN_TOOL_VERSION_haddock */
112
113/* tool happy-1.19.9 */
114#ifndef TOOL_VERSION_happy
115#define TOOL_VERSION_happy "1.19.9"
116#endif /* TOOL_VERSION_happy */
117#ifndef MIN_TOOL_VERSION_happy
118#define MIN_TOOL_VERSION_happy(major1,major2,minor) (\
119 (major1) < 1 || \
120 (major1) == 1 && (major2) < 19 || \
121 (major1) == 1 && (major2) == 19 && (minor) <= 9)
122#endif /* MIN_TOOL_VERSION_happy */
123
124/* tool hpc-0.67 */
125#ifndef TOOL_VERSION_hpc
126#define TOOL_VERSION_hpc "0.67"
127#endif /* TOOL_VERSION_hpc */
128#ifndef MIN_TOOL_VERSION_hpc
129#define MIN_TOOL_VERSION_hpc(major1,major2,minor) (\
130 (major1) < 0 || \
131 (major1) == 0 && (major2) < 67 || \
132 (major1) == 0 && (major2) == 67 && (minor) <= 0)
133#endif /* MIN_TOOL_VERSION_hpc */
134
135/* tool hsc2hs-0.68.5 */
136#ifndef TOOL_VERSION_hsc2hs
137#define TOOL_VERSION_hsc2hs "0.68.5"
138#endif /* TOOL_VERSION_hsc2hs */
139#ifndef MIN_TOOL_VERSION_hsc2hs
140#define MIN_TOOL_VERSION_hsc2hs(major1,major2,minor) (\
141 (major1) < 0 || \
142 (major1) == 0 && (major2) < 68 || \
143 (major1) == 0 && (major2) == 68 && (minor) <= 5)
144#endif /* MIN_TOOL_VERSION_hsc2hs */
145
146/* tool pkg-config-0.29 */
147#ifndef TOOL_VERSION_pkg_config
148#define TOOL_VERSION_pkg_config "0.29"
149#endif /* TOOL_VERSION_pkg_config */
150#ifndef MIN_TOOL_VERSION_pkg_config
151#define MIN_TOOL_VERSION_pkg_config(major1,major2,minor) (\
152 (major1) < 0 || \
153 (major1) == 0 && (major2) < 29 || \
154 (major1) == 0 && (major2) == 29 && (minor) <= 0)
155#endif /* MIN_TOOL_VERSION_pkg_config */
156
157/* tool runghc-8.6.5 */
158#ifndef TOOL_VERSION_runghc
159#define TOOL_VERSION_runghc "8.6.5"
160#endif /* TOOL_VERSION_runghc */
161#ifndef MIN_TOOL_VERSION_runghc
162#define MIN_TOOL_VERSION_runghc(major1,major2,minor) (\
163 (major1) < 8 || \
164 (major1) == 8 && (major2) < 6 || \
165 (major1) == 8 && (major2) == 6 && (minor) <= 5)
166#endif /* MIN_TOOL_VERSION_runghc */
167
168/* tool strip-2.28 */
169#ifndef TOOL_VERSION_strip
170#define TOOL_VERSION_strip "2.28"
171#endif /* TOOL_VERSION_strip */
172#ifndef MIN_TOOL_VERSION_strip
173#define MIN_TOOL_VERSION_strip(major1,major2,minor) (\
174 (major1) < 2 || \
175 (major1) == 2 && (major2) < 28 || \
176 (major1) == 2 && (major2) == 28 && (minor) <= 0)
177#endif /* MIN_TOOL_VERSION_strip */
178
179#ifndef CURRENT_COMPONENT_ID
180#define CURRENT_COMPONENT_ID "8queens-0.1.0.0-9F1bJj1BAyiFVafPDI0zqu-8queens"
181#endif /* CURRENT_COMPONENT_ID */
182#ifndef CURRENT_PACKAGE_VERSION
183#define CURRENT_PACKAGE_VERSION "0.1.0.0"
184#endif /* CURRENT_PACKAGE_VERSION */
185
186#undef CURRENT_PACKAGE_KEY
187#undef CURRENT_COMPONENT_ID
diff --git a/.stack-work/ghci/ec6a65a6/cabal_macros.h b/.stack-work/ghci/ec6a65a6/cabal_macros.h
deleted file mode 100644
index 0068da0..0000000
--- a/.stack-work/ghci/ec6a65a6/cabal_macros.h
+++ /dev/null
@@ -1,165 +0,0 @@
1/* DO NOT EDIT: This file is automatically generated by Cabal */
2
3/* package 8queens-0.1.0.0 */
4#ifndef VERSION_8queens
5#define VERSION_8queens "0.1.0.0"
6#endif /* VERSION_8queens */
7#ifndef MIN_VERSION_8queens
8#define MIN_VERSION_8queens(major1,major2,minor) (\
9 (major1) < 0 || \
10 (major1) == 0 && (major2) < 1 || \
11 (major1) == 0 && (major2) == 1 && (minor) <= 0)
12#endif /* MIN_VERSION_8queens */
13
14/* package base-4.12.0.0 */
15#ifndef VERSION_base
16#define VERSION_base "4.12.0.0"
17#endif /* VERSION_base */
18#ifndef MIN_VERSION_base
19#define MIN_VERSION_base(major1,major2,minor) (\
20 (major1) < 4 || \
21 (major1) == 4 && (major2) < 12 || \
22 (major1) == 4 && (major2) == 12 && (minor) <= 0)
23#endif /* MIN_VERSION_base */
24
25/* package lens-4.17.1 */
26#ifndef VERSION_lens
27#define VERSION_lens "4.17.1"
28#endif /* VERSION_lens */
29#ifndef MIN_VERSION_lens
30#define MIN_VERSION_lens(major1,major2,minor) (\
31 (major1) < 4 || \
32 (major1) == 4 && (major2) < 17 || \
33 (major1) == 4 && (major2) == 17 && (minor) <= 1)
34#endif /* MIN_VERSION_lens */
35
36/* package linear-1.20.9 */
37#ifndef VERSION_linear
38#define VERSION_linear "1.20.9"
39#endif /* VERSION_linear */
40#ifndef MIN_VERSION_linear
41#define MIN_VERSION_linear(major1,major2,minor) (\
42 (major1) < 1 || \
43 (major1) == 1 && (major2) < 20 || \
44 (major1) == 1 && (major2) == 20 && (minor) <= 9)
45#endif /* MIN_VERSION_linear */
46
47/* tool gcc-6.3.0 */
48#ifndef TOOL_VERSION_gcc
49#define TOOL_VERSION_gcc "6.3.0"
50#endif /* TOOL_VERSION_gcc */
51#ifndef MIN_TOOL_VERSION_gcc
52#define MIN_TOOL_VERSION_gcc(major1,major2,minor) (\
53 (major1) < 6 || \
54 (major1) == 6 && (major2) < 3 || \
55 (major1) == 6 && (major2) == 3 && (minor) <= 0)
56#endif /* MIN_TOOL_VERSION_gcc */
57
58/* tool ghc-8.6.5 */
59#ifndef TOOL_VERSION_ghc
60#define TOOL_VERSION_ghc "8.6.5"
61#endif /* TOOL_VERSION_ghc */
62#ifndef MIN_TOOL_VERSION_ghc
63#define MIN_TOOL_VERSION_ghc(major1,major2,minor) (\
64 (major1) < 8 || \
65 (major1) == 8 && (major2) < 6 || \
66 (major1) == 8 && (major2) == 6 && (minor) <= 5)
67#endif /* MIN_TOOL_VERSION_ghc */
68
69/* tool ghc-pkg-8.6.5 */
70#ifndef TOOL_VERSION_ghc_pkg
71#define TOOL_VERSION_ghc_pkg "8.6.5"
72#endif /* TOOL_VERSION_ghc_pkg */
73#ifndef MIN_TOOL_VERSION_ghc_pkg
74#define MIN_TOOL_VERSION_ghc_pkg(major1,major2,minor) (\
75 (major1) < 8 || \
76 (major1) == 8 && (major2) < 6 || \
77 (major1) == 8 && (major2) == 6 && (minor) <= 5)
78#endif /* MIN_TOOL_VERSION_ghc_pkg */
79
80/* tool haddock-2.22.0 */
81#ifndef TOOL_VERSION_haddock
82#define TOOL_VERSION_haddock "2.22.0"
83#endif /* TOOL_VERSION_haddock */
84#ifndef MIN_TOOL_VERSION_haddock
85#define MIN_TOOL_VERSION_haddock(major1,major2,minor) (\
86 (major1) < 2 || \
87 (major1) == 2 && (major2) < 22 || \
88 (major1) == 2 && (major2) == 22 && (minor) <= 0)
89#endif /* MIN_TOOL_VERSION_haddock */
90
91/* tool happy-1.19.9 */
92#ifndef TOOL_VERSION_happy
93#define TOOL_VERSION_happy "1.19.9"
94#endif /* TOOL_VERSION_happy */
95#ifndef MIN_TOOL_VERSION_happy
96#define MIN_TOOL_VERSION_happy(major1,major2,minor) (\
97 (major1) < 1 || \
98 (major1) == 1 && (major2) < 19 || \
99 (major1) == 1 && (major2) == 19 && (minor) <= 9)
100#endif /* MIN_TOOL_VERSION_happy */
101
102/* tool hpc-0.67 */
103#ifndef TOOL_VERSION_hpc
104#define TOOL_VERSION_hpc "0.67"
105#endif /* TOOL_VERSION_hpc */
106#ifndef MIN_TOOL_VERSION_hpc
107#define MIN_TOOL_VERSION_hpc(major1,major2,minor) (\
108 (major1) < 0 || \
109 (major1) == 0 && (major2) < 67 || \
110 (major1) == 0 && (major2) == 67 && (minor) <= 0)
111#endif /* MIN_TOOL_VERSION_hpc */
112
113/* tool hsc2hs-0.68.5 */
114#ifndef TOOL_VERSION_hsc2hs
115#define TOOL_VERSION_hsc2hs "0.68.5"
116#endif /* TOOL_VERSION_hsc2hs */
117#ifndef MIN_TOOL_VERSION_hsc2hs
118#define MIN_TOOL_VERSION_hsc2hs(major1,major2,minor) (\
119 (major1) < 0 || \
120 (major1) == 0 && (major2) < 68 || \
121 (major1) == 0 && (major2) == 68 && (minor) <= 5)
122#endif /* MIN_TOOL_VERSION_hsc2hs */
123
124/* tool pkg-config-0.29 */
125#ifndef TOOL_VERSION_pkg_config
126#define TOOL_VERSION_pkg_config "0.29"
127#endif /* TOOL_VERSION_pkg_config */
128#ifndef MIN_TOOL_VERSION_pkg_config
129#define MIN_TOOL_VERSION_pkg_config(major1,major2,minor) (\
130 (major1) < 0 || \
131 (major1) == 0 && (major2) < 29 || \
132 (major1) == 0 && (major2) == 29 && (minor) <= 0)
133#endif /* MIN_TOOL_VERSION_pkg_config */
134
135/* tool runghc-8.6.5 */
136#ifndef TOOL_VERSION_runghc
137#define TOOL_VERSION_runghc "8.6.5"
138#endif /* TOOL_VERSION_runghc */
139#ifndef MIN_TOOL_VERSION_runghc
140#define MIN_TOOL_VERSION_runghc(major1,major2,minor) (\
141 (major1) < 8 || \
142 (major1) == 8 && (major2) < 6 || \
143 (major1) == 8 && (major2) == 6 && (minor) <= 5)
144#endif /* MIN_TOOL_VERSION_runghc */
145
146/* tool strip-2.28 */
147#ifndef TOOL_VERSION_strip
148#define TOOL_VERSION_strip "2.28"
149#endif /* TOOL_VERSION_strip */
150#ifndef MIN_TOOL_VERSION_strip
151#define MIN_TOOL_VERSION_strip(major1,major2,minor) (\
152 (major1) < 2 || \
153 (major1) == 2 && (major2) < 28 || \
154 (major1) == 2 && (major2) == 28 && (minor) <= 0)
155#endif /* MIN_TOOL_VERSION_strip */
156
157#ifndef CURRENT_COMPONENT_ID
158#define CURRENT_COMPONENT_ID "8queens-0.1.0.0-IKA4wAVh8gqIUrPDFaKU1F-8queens"
159#endif /* CURRENT_COMPONENT_ID */
160#ifndef CURRENT_PACKAGE_VERSION
161#define CURRENT_PACKAGE_VERSION "0.1.0.0"
162#endif /* CURRENT_PACKAGE_VERSION */
163
164#undef CURRENT_PACKAGE_KEY
165#undef CURRENT_COMPONENT_ID
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/bin/8queens b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/bin/8queens
deleted file mode 100755
index b268389..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/bin/8queens
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/bin/intero b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/bin/intero
deleted file mode 100755
index bf82725..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/bin/intero
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/doc/8queens-0.1.0.0/LICENSE b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/doc/8queens-0.1.0.0/LICENSE
deleted file mode 100644
index 513ecb9..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/doc/8queens-0.1.0.0/LICENSE
+++ /dev/null
@@ -1,30 +0,0 @@
1Copyright Steven (c) 2019
2
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7
8 * Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer.
10
11 * Redistributions in binary form must reproduce the above
12 copyright notice, this list of conditions and the following
13 disclaimer in the documentation and/or other materials provided
14 with the distribution.
15
16 * Neither the name of Steven nor the names of other
17 contributors may be used to endorse or promote products derived
18 from this software without specific prior written permission.
19
20THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/doc/intero-0.1.40/LICENSE b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/doc/intero-0.1.40/LICENSE
deleted file mode 100644
index 3501553..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/doc/intero-0.1.40/LICENSE
+++ /dev/null
@@ -1,27 +0,0 @@
1Copyright (c) 2016, Chris Done
2All rights reserved.
3
4Redistribution and use in source and binary forms, with or without
5modification, are permitted provided that the following conditions are met:
6
7* Redistributions of source code must retain the above copyright notice, this
8 list of conditions and the following disclaimer.
9
10* Redistributions in binary form must reproduce the above copyright notice,
11 this list of conditions and the following disclaimer in the documentation
12 and/or other materials provided with the distribution.
13
14* Neither the name of intero nor the names of its
15 contributors may be used to endorse or promote products derived from
16 this software without specific prior written permission.
17
18THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/8queens-0.1.0.0 b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/8queens-0.1.0.0
deleted file mode 100644
index 4a70cec..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/8queens-0.1.0.0
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/Cabal-2.4.1.0-9MZFDeNrcJI10bcroa6pq8 b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/Cabal-2.4.1.0-9MZFDeNrcJI10bcroa6pq8
deleted file mode 100644
index d02600b..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/Cabal-2.4.1.0-9MZFDeNrcJI10bcroa6pq8
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/StateVar-1.1.1.1-2ewTKofpCGhC2np5dyFIaR b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/StateVar-1.1.1.1-2ewTKofpCGhC2np5dyFIaR
deleted file mode 100644
index b0e5bf8..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/StateVar-1.1.1.1-2ewTKofpCGhC2np5dyFIaR
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/adjunctions-4.4-5XvmwZ9ik8T4JDgak5RolE b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/adjunctions-4.4-5XvmwZ9ik8T4JDgak5RolE
deleted file mode 100644
index da1f017..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/adjunctions-4.4-5XvmwZ9ik8T4JDgak5RolE
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/base-orphans-0.8.1-HeyTAcy4PKhDcGhjvJwDzq b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/base-orphans-0.8.1-HeyTAcy4PKhDcGhjvJwDzq
deleted file mode 100644
index 316340d..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/base-orphans-0.8.1-HeyTAcy4PKhDcGhjvJwDzq
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/bifunctors-5.5.4-JI14q9FdaTRLWn4YdH8JmV b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/bifunctors-5.5.4-JI14q9FdaTRLWn4YdH8JmV
deleted file mode 100644
index c5a9f32..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/bifunctors-5.5.4-JI14q9FdaTRLWn4YdH8JmV
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/bytes-0.15.5-3xefL3v3Ncd2XFpMRBDGRq b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/bytes-0.15.5-3xefL3v3Ncd2XFpMRBDGRq
deleted file mode 100644
index 05c0c10..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/bytes-0.15.5-3xefL3v3Ncd2XFpMRBDGRq
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/cabal-doctest-1.0.6-GxlnXP6RWcB1QAJigGyNcv b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/cabal-doctest-1.0.6-GxlnXP6RWcB1QAJigGyNcv
deleted file mode 100644
index c95af0e..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/cabal-doctest-1.0.6-GxlnXP6RWcB1QAJigGyNcv
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/call-stack-0.1.0-J1eWgTNOnM4IGVyeW0v2YZ b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/call-stack-0.1.0-J1eWgTNOnM4IGVyeW0v2YZ
deleted file mode 100644
index 30c9cc5..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/call-stack-0.1.0-J1eWgTNOnM4IGVyeW0v2YZ
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/cereal-0.5.8.0-6rtfJLvNbgP66iuaPkuxJC b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/cereal-0.5.8.0-6rtfJLvNbgP66iuaPkuxJC
deleted file mode 100644
index 0c25bf3..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/cereal-0.5.8.0-6rtfJLvNbgP66iuaPkuxJC
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/comonad-5.0.5-FO6wPvVdvoe5bevdeq1PfM b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/comonad-5.0.5-FO6wPvVdvoe5bevdeq1PfM
deleted file mode 100644
index 57497a8..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/comonad-5.0.5-FO6wPvVdvoe5bevdeq1PfM
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/contravariant-1.5.1-5DqKSjbrRzZU8YLmfpGsF b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/contravariant-1.5.1-5DqKSjbrRzZU8YLmfpGsF
deleted file mode 100644
index ae0c0da..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/contravariant-1.5.1-5DqKSjbrRzZU8YLmfpGsF
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/distributive-0.6-9dQuxsXiNSOFiN4BOgtPCR b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/distributive-0.6-9dQuxsXiNSOFiN4BOgtPCR
deleted file mode 100644
index 6949bc5..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/distributive-0.6-9dQuxsXiNSOFiN4BOgtPCR
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/exceptions-0.10.2-965Nx9KftkgCsZ4B7Zhuyu b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/exceptions-0.10.2-965Nx9KftkgCsZ4B7Zhuyu
deleted file mode 100644
index a6534dc..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/exceptions-0.10.2-965Nx9KftkgCsZ4B7Zhuyu
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/free-5.1.1-4bsEiYxPhIEFqPXXuEKbd4 b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/free-5.1.1-4bsEiYxPhIEFqPXXuEKbd4
deleted file mode 100644
index b43891d..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/free-5.1.1-4bsEiYxPhIEFqPXXuEKbd4
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/ghc-paths-0.1.0.9-KaBYbRV3ryA10w04FwbrO2 b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/ghc-paths-0.1.0.9-KaBYbRV3ryA10w04FwbrO2
deleted file mode 100644
index c1682fc..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/ghc-paths-0.1.0.9-KaBYbRV3ryA10w04FwbrO2
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/hashable-1.2.7.0-CWI8VZuQTAYWIQTQQtqCV b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/hashable-1.2.7.0-CWI8VZuQTAYWIQTQQtqCV
deleted file mode 100644
index 332987d..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/hashable-1.2.7.0-CWI8VZuQTAYWIQTQQtqCV
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/haskeline-0.7.5.0-ADzuRaH0DKHIRvvi965fg2 b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/haskeline-0.7.5.0-ADzuRaH0DKHIRvvi965fg2
deleted file mode 100644
index e60f7c6..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/haskeline-0.7.5.0-ADzuRaH0DKHIRvvi965fg2
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/hmatrix-0.19.0.0-2s9G4ERdQNGmPHLhVSJnl b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/hmatrix-0.19.0.0-2s9G4ERdQNGmPHLhVSJnl
deleted file mode 100644
index ca529d9..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/hmatrix-0.19.0.0-2s9G4ERdQNGmPHLhVSJnl
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/integer-logarithms-1.0.3-L1fXvdNnENnEcLpMml0rI7 b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/integer-logarithms-1.0.3-L1fXvdNnENnEcLpMml0rI7
deleted file mode 100644
index 7b03ace..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/integer-logarithms-1.0.3-L1fXvdNnENnEcLpMml0rI7
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/intero-0.1.40 b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/intero-0.1.40
deleted file mode 100644
index 6c5c634..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/intero-0.1.40
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/invariant-0.5.3-COCiLnaO8ceLaFLP8ApMB8 b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/invariant-0.5.3-COCiLnaO8ceLaFLP8ApMB8
deleted file mode 100644
index dfb60fb..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/invariant-0.5.3-COCiLnaO8ceLaFLP8ApMB8
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/kan-extensions-5.2-GOoLNNVeT9xL7L35wynQJC b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/kan-extensions-5.2-GOoLNNVeT9xL7L35wynQJC
deleted file mode 100644
index 3ff152a..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/kan-extensions-5.2-GOoLNNVeT9xL7L35wynQJC
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/lens-4.17.1-HvuC79b14LY7GYVb6qSW7j b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/lens-4.17.1-HvuC79b14LY7GYVb6qSW7j
deleted file mode 100644
index 1820f26..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/lens-4.17.1-HvuC79b14LY7GYVb6qSW7j
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/linear-1.20.9-8i87OQRLMk19j5jCRXHfj4 b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/linear-1.20.9-8i87OQRLMk19j5jCRXHfj4
deleted file mode 100644
index 30b390c..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/linear-1.20.9-8i87OQRLMk19j5jCRXHfj4
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/loop-0.3.0-KBOFzTkURfGITuXz2VUslN b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/loop-0.3.0-KBOFzTkURfGITuXz2VUslN
deleted file mode 100644
index 979bc87..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/loop-0.3.0-KBOFzTkURfGITuXz2VUslN
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/matrix-0.3.6.1-CUcUqfmsmAA7saz436AQSk b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/matrix-0.3.6.1-CUcUqfmsmAA7saz436AQSk
deleted file mode 100644
index 7122f8d..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/matrix-0.3.6.1-CUcUqfmsmAA7saz436AQSk
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/network-2.8.0.1-Hmt657UE3v349uYmvUXEvW b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/network-2.8.0.1-Hmt657UE3v349uYmvUXEvW
deleted file mode 100644
index 1e72286..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/network-2.8.0.1-Hmt657UE3v349uYmvUXEvW
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/parallel-3.2.2.0-EGl5SOk48TWHAD161C93aQ b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/parallel-3.2.2.0-EGl5SOk48TWHAD161C93aQ
deleted file mode 100644
index 8aa0210..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/parallel-3.2.2.0-EGl5SOk48TWHAD161C93aQ
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/primitive-0.6.4.0-ILgywxtLpvnAOlEISPpP5b b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/primitive-0.6.4.0-ILgywxtLpvnAOlEISPpP5b
deleted file mode 100644
index 42208e7..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/primitive-0.6.4.0-ILgywxtLpvnAOlEISPpP5b
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/profunctors-5.3-IpGd709zs3V8sI6m3XgDzt b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/profunctors-5.3-IpGd709zs3V8sI6m3XgDzt
deleted file mode 100644
index 5fc1728..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/profunctors-5.3-IpGd709zs3V8sI6m3XgDzt
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/random-1.1-3ypV4EIycgb35PKjTYYr5q b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/random-1.1-3ypV4EIycgb35PKjTYYr5q
deleted file mode 100644
index 3c5fbdc..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/random-1.1-3ypV4EIycgb35PKjTYYr5q
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/reflection-2.1.4-E9VXTbXoqHZ5rulgGPZOrF b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/reflection-2.1.4-E9VXTbXoqHZ5rulgGPZOrF
deleted file mode 100644
index 4251fe0..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/reflection-2.1.4-E9VXTbXoqHZ5rulgGPZOrF
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/scientific-0.3.6.2-Jh87LYpjAZH3EhMJkXeu1S b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/scientific-0.3.6.2-Jh87LYpjAZH3EhMJkXeu1S
deleted file mode 100644
index 38eaf58..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/scientific-0.3.6.2-Jh87LYpjAZH3EhMJkXeu1S
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/semigroupoids-5.3.2-Ka80fCBNMcd1Be50r62zFC b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/semigroupoids-5.3.2-Ka80fCBNMcd1Be50r62zFC
deleted file mode 100644
index 0ecc45e..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/semigroupoids-5.3.2-Ka80fCBNMcd1Be50r62zFC
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/semigroups-0.18.5-6T2lH5F6zyQIdwR3JYKMO3 b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/semigroups-0.18.5-6T2lH5F6zyQIdwR3JYKMO3
deleted file mode 100644
index 21dacf0..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/semigroups-0.18.5-6T2lH5F6zyQIdwR3JYKMO3
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/split-0.2.3.3-6n1iQ0JLFvkeXvJXsAqQc b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/split-0.2.3.3-6n1iQ0JLFvkeXvJXsAqQc
deleted file mode 100644
index e54c671..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/split-0.2.3.3-6n1iQ0JLFvkeXvJXsAqQc
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/storable-complex-0.2.3.0-IqTssBZ2G90J9kRbLSMmF1 b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/storable-complex-0.2.3.0-IqTssBZ2G90J9kRbLSMmF1
deleted file mode 100644
index 99987dc..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/storable-complex-0.2.3.0-IqTssBZ2G90J9kRbLSMmF1
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/syb-0.7-KRW1LCxdMiCJrmhxCvzo37 b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/syb-0.7-KRW1LCxdMiCJrmhxCvzo37
deleted file mode 100644
index b815e2e..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/syb-0.7-KRW1LCxdMiCJrmhxCvzo37
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/tagged-0.8.6-EiJ2F18RuD68LSMkg0Ly4r b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/tagged-0.8.6-EiJ2F18RuD68LSMkg0Ly4r
deleted file mode 100644
index 64e8f79..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/tagged-0.8.6-EiJ2F18RuD68LSMkg0Ly4r
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/th-abstraction-0.2.11.0-DAhuCgi08HTBWsDjm9nrOq b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/th-abstraction-0.2.11.0-DAhuCgi08HTBWsDjm9nrOq
deleted file mode 100644
index 1a0a51c..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/th-abstraction-0.2.11.0-DAhuCgi08HTBWsDjm9nrOq
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/transformers-base-0.4.5.2-FZmnqdpGRpbAstl7i9dBCk b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/transformers-base-0.4.5.2-FZmnqdpGRpbAstl7i9dBCk
deleted file mode 100644
index 0b9b0f3..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/transformers-base-0.4.5.2-FZmnqdpGRpbAstl7i9dBCk
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/transformers-compat-0.6.5-JTHfwAgpAU6AqyWxijPF3Z b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/transformers-compat-0.6.5-JTHfwAgpAU6AqyWxijPF3Z
deleted file mode 100644
index 9177e32..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/transformers-compat-0.6.5-JTHfwAgpAU6AqyWxijPF3Z
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/unordered-containers-0.2.9.0-BRWkoSTuML1cQdpep6Oin b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/unordered-containers-0.2.9.0-BRWkoSTuML1cQdpep6Oin
deleted file mode 100644
index 7953ccb..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/unordered-containers-0.2.9.0-BRWkoSTuML1cQdpep6Oin
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/vector-0.12.0.3-2LEYu9M2i7lERDtz76XG3n b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/vector-0.12.0.3-2LEYu9M2i7lERDtz76XG3n
deleted file mode 100644
index 6b4bd67..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/vector-0.12.0.3-2LEYu9M2i7lERDtz76XG3n
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/void-0.7.3-5xXWQQsTYbKFlr3KfNvyL8 b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/void-0.7.3-5xXWQQsTYbKFlr3KfNvyL8
deleted file mode 100644
index 1b77fa9..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/flag-cache/void-0.7.3-5xXWQQsTYbKFlr3KfNvyL8
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/installed-packages/8queens-0.1.0.0 b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/installed-packages/8queens-0.1.0.0
deleted file mode 100644
index 795f563..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/installed-packages/8queens-0.1.0.0
+++ /dev/null
@@ -1 +0,0 @@
1Installed \ No newline at end of file
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/installed-packages/intero-0.1.40 b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/installed-packages/intero-0.1.40
deleted file mode 100644
index 795f563..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/installed-packages/intero-0.1.40
+++ /dev/null
@@ -1 +0,0 @@
1Installed \ No newline at end of file
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/pkgdb/package.cache b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/pkgdb/package.cache
deleted file mode 100644
index b3cae5c..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/pkgdb/package.cache
+++ /dev/null
Binary files differ
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/pkgdb/package.cache.lock b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/pkgdb/package.cache.lock
deleted file mode 100644
index e69de29..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/pkgdb/package.cache.lock
+++ /dev/null
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/share/x86_64-linux-ghc-8.6.5/intero-0.1.40/elisp/haskell-simple-indent.el b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/share/x86_64-linux-ghc-8.6.5/intero-0.1.40/elisp/haskell-simple-indent.el
deleted file mode 100644
index 1d43d23..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/share/x86_64-linux-ghc-8.6.5/intero-0.1.40/elisp/haskell-simple-indent.el
+++ /dev/null
@@ -1,273 +0,0 @@
1;;; haskell-simple-indent.el --- Simple indentation module for Haskell Mode -*- lexical-binding: t -*-
2
3;; Copyright (C) 1998 Heribert Schuetz, Graeme E Moss
4
5;; Author: Heribert Schuetz <Heribert.Schuetz@informatik.uni-muenchen.de>
6;; Graeme E Moss <gem@cs.york.ac.uk>
7;; Keywords: indentation files Haskell
8
9;; This file is not part of GNU Emacs.
10
11;; This file is free software; you can redistribute it and/or modify
12;; it under the terms of the GNU General Public License as published by
13;; the Free Software Foundation; either version 3, or (at your option)
14;; any later version.
15
16;; This file is distributed in the hope that it will be useful,
17;; but WITHOUT ANY WARRANTY; without even the implied warranty of
18;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19;; GNU General Public License for more details.
20
21;; You should have received a copy of the GNU General Public License
22;; along with this program. If not, see <http://www.gnu.org/licenses/>.
23
24;;; Commentary:
25
26;; Purpose:
27;;
28;; To support simple indentation of Haskell scripts.
29;;
30;;
31;; Installation:
32;;
33;; To bind TAB to the indentation command for all Haskell buffers, add
34;; this to .emacs:
35;;
36;; (add-hook 'haskell-mode-hook 'turn-on-haskell-simple-indent)
37;;
38;; Otherwise, call `turn-on-haskell-simple-indent'.
39;;
40;;
41;; Customisation:
42;;
43;; None supported.
44;;
45;;
46;; History:
47;;
48;; If you have any problems or suggestions, after consulting the list
49;; below, email gem@cs.york.ac.uk quoting the version of you are
50;; using, the version of Emacs you are using, and a small example of
51;; the problem or suggestion.
52;;
53;; Version 1.0:
54;; Brought over from Haskell mode v1.1.
55;;
56;; Present Limitations/Future Work (contributions are most welcome!):
57;;
58;; (None so far.)
59
60;;; Code:
61
62;; All functions/variables start with
63;; `(turn-(on/off)-)haskell-simple-indent'.
64
65(require 'haskell-mode)
66
67;;;###autoload
68(defgroup haskell-simple-indent nil
69 "Simple Haskell indentation."
70 :link '(custom-manual "(haskell-mode)Indentation")
71 :group 'haskell
72 :prefix "haskell-simple-indent-")
73
74;; Version.
75(defconst haskell-simple-indent-version "1.2"
76 "`haskell-simple-indent' version number.")
77(defun haskell-simple-indent-version ()
78 "Echo the current version of `haskell-simple-indent' in the minibuffer."
79 (interactive)
80 (message "Using haskell-simple-indent version %s"
81 haskell-simple-indent-version))
82
83;; Partly stolen from `indent-relative' in indent.el:
84(defun haskell-simple-indent ()
85 "Space out to under next visible indent point.
86
87Indent points are positions of non-whitespace following
88whitespace in lines preceeding point. Example:
89
90func arg cx = when (isTrue) $ do
91 print 42
92^ ^ ^ ^ ^ ^ ^ ^ ^ ^
93
94A position is visible if it is to the left of the first
95non-whitespace (indentation) of every nonblank line between the
96position and the current line. If there is no visible indent
97point beyond the current column, position given by
98`indent-next-tab-stop' is used instead."
99 (interactive)
100 (let* ((start-column (or (save-excursion
101 (back-to-indentation)
102 (if (not (eolp))
103 (current-column)))
104 (current-column)))
105 (invisible-from nil) ; `nil' means infinity here
106 (found)
107 (indent))
108 (save-excursion
109 ;; Loop stops if there no more lines above this one or when has
110 ;; found a line starting at first column.
111 (while (and (not found)
112 (or (not invisible-from)
113 (not (zerop invisible-from)))
114 (zerop (forward-line -1)))
115 ;; Ignore empty lines.
116 (if (not (looking-at "[ \t]*\n"))
117 (let ((this-indentation (current-indentation)))
118 ;; Is this line so indented that it cannot have
119 ;; influence on indentation points?
120 (if (or (not invisible-from)
121 (< this-indentation invisible-from))
122 (if (> this-indentation start-column)
123 (setq invisible-from this-indentation)
124 (let ((end (line-end-position)))
125 (move-to-column start-column)
126 ;; Is start-column inside a tab on this line?
127 (if (> (current-column) start-column)
128 (backward-char 1))
129 ;; Skip to the end of non-whitespace.
130 (skip-chars-forward "^ \t" end)
131 ;; Skip over whitespace.
132 (skip-chars-forward " \t" end)
133 ;; Indentation point found if not at the end of
134 ;; line and if not covered by any line below
135 ;; this one. In that case use invisible-from.
136 (setq indent (if (or (= (point) end)
137 (and invisible-from
138 (> (current-column) invisible-from)))
139 invisible-from
140 (current-column)))
141 ;; Signal that solution is found.
142 (setq found t))))))))
143
144
145 (let ((opoint (point-marker)))
146 ;; Indent to the calculated indent or last know invisible-from
147 ;; or use tab-to-tab-stop. Try hard to keep cursor in the same
148 ;; place or move it to the indentation if it was before it. And
149 ;; keep content of the line intact.
150 (setq indent (or indent
151 invisible-from
152 (if (fboundp 'indent-next-tab-stop)
153 (indent-next-tab-stop start-column))
154 (let ((tabs tab-stop-list))
155 (while (and tabs (>= start-column (car tabs)))
156 (setq tabs (cdr tabs)))
157 (if tabs (car tabs)))
158 (* (/ (+ start-column tab-width) tab-width) tab-width)))
159 (indent-line-to indent)
160 (if (> opoint (point))
161 (goto-char opoint))
162 (set-marker opoint nil))))
163
164(defun haskell-simple-indent-backtab ()
165 "Indent backwards. Dual to `haskell-simple-indent'."
166 (interactive)
167 (let ((saved-column (or (save-excursion
168 (back-to-indentation)
169 (if (not (eolp))
170 (current-column)))
171 (current-column)))
172 (i 0)
173 (x 0))
174
175 (save-excursion
176 (back-to-indentation)
177 (delete-region (line-beginning-position) (point)))
178 (while (< (or (save-excursion
179 (back-to-indentation)
180 (if (not (eolp))
181 (current-column)))
182 (current-column)) saved-column)
183 (haskell-simple-indent)
184 (setq i (+ i 1)))
185
186 (save-excursion
187 (back-to-indentation)
188 (delete-region (line-beginning-position) (point)))
189 (while (< x (- i 1))
190 (haskell-simple-indent)
191 (setq x (+ x 1)))))
192
193(defun haskell-simple-indent-newline-same-col ()
194 "Make a newline and go to the same column as the current line."
195 (interactive)
196 (let ((start-end
197 (save-excursion
198 (let* ((start (line-beginning-position))
199 (end (progn (goto-char start)
200 (search-forward-regexp
201 "[^ ]" (line-end-position) t 1))))
202 (when end (cons start (1- end)))))))
203 (if start-end
204 (progn (newline)
205 (insert (buffer-substring-no-properties
206 (car start-end) (cdr start-end))))
207 (newline))))
208
209(defun haskell-simple-indent-newline-indent ()
210 "Make a newline on the current column and indent on step."
211 (interactive)
212 (haskell-simple-indent-newline-same-col)
213 (insert (make-string haskell-indent-spaces ? )))
214
215(defun haskell-simple-indent-comment-indent-function ()
216 "Haskell version of `comment-indent-function'."
217 ;; This is required when filladapt is turned off. Without it, when
218 ;; filladapt is not used, comments which start in column zero
219 ;; cascade one character to the right
220 (save-excursion
221 (beginning-of-line)
222 (let ((eol (line-end-position)))
223 (and comment-start-skip
224 (re-search-forward comment-start-skip eol t)
225 (setq eol (match-beginning 0)))
226 (goto-char eol)
227 (skip-chars-backward " \t")
228 (max comment-column (+ (current-column) (if (bolp) 0 1))))))
229
230;;;###autoload
231(define-minor-mode haskell-simple-indent-mode
232 "Simple Haskell indentation mode that uses simple heuristic.
233In this minor mode, `indent-for-tab-command' (bound to <tab> by
234default) will move the cursor to the next indent point in the
235previous nonblank line, whereas `haskell-simple-indent-backtab'
236\ (bound to <backtab> by default) will move the cursor the
237previous indent point. An indent point is a non-whitespace
238character following whitespace.
239
240Runs `haskell-simple-indent-hook' on activation."
241 :lighter " Ind"
242 :group 'haskell-simple-indent
243 :keymap '(([backtab] . haskell-simple-indent-backtab))
244 (kill-local-variable 'comment-indent-function)
245 (kill-local-variable 'indent-line-function)
246 (when haskell-simple-indent-mode
247 (when (and (bound-and-true-p haskell-indentation-mode)
248 (fboundp 'haskell-indentation-mode))
249 (haskell-indentation-mode 0))
250 (set (make-local-variable 'comment-indent-function) #'haskell-simple-indent-comment-indent-function)
251 (set (make-local-variable 'indent-line-function) 'haskell-simple-indent)
252 (run-hooks 'haskell-simple-indent-hook)))
253
254;; The main functions.
255;;;###autoload
256(defun turn-on-haskell-simple-indent ()
257 "Turn on function `haskell-simple-indent-mode'."
258 (interactive)
259 (haskell-simple-indent-mode))
260(make-obsolete 'turn-on-haskell-simple-indent
261 'haskell-simple-indent-mode
262 "2015-07-23")
263
264(defun turn-off-haskell-simple-indent ()
265 "Turn off function `haskell-simple-indent-mode'."
266 (interactive)
267 (haskell-simple-indent-mode 0))
268
269;; Provide ourselves:
270
271(provide 'haskell-simple-indent)
272
273;;; haskell-simple-indent.el ends here
diff --git a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/share/x86_64-linux-ghc-8.6.5/intero-0.1.40/elisp/intero.el b/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/share/x86_64-linux-ghc-8.6.5/intero-0.1.40/elisp/intero.el
deleted file mode 100644
index a1dd48e..0000000
--- a/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/share/x86_64-linux-ghc-8.6.5/intero-0.1.40/elisp/intero.el
+++ /dev/null
@@ -1,3676 +0,0 @@
1;;; intero.el --- Complete development mode for Haskell
2
3;; Copyright (c) 2016 Chris Done
4;; Copyright (c) 2016 Steve Purcell
5;; Copyright (C) 2016 Артур Файзрахманов
6;; Copyright (c) 2015 Athur Fayzrakhmanov
7;; Copyright (C) 2015 Gracjan Polak
8;; Copyright (c) 2013 Herbert Valerio Riedel
9;; Copyright (c) 2007 Stefan Monnier
10
11;; Author: Chris Done <chrisdone@fpcomplete.com>
12;; Maintainer: Chris Done <chrisdone@fpcomplete.com>
13;; URL: https://github.com/commercialhaskell/intero
14;; Created: 3rd June 2016
15;; Version: 0.1.13
16;; Keywords: haskell, tools
17;; Package-Requires: ((flycheck "0.25") (company "0.8") (emacs "24.4") (haskell-mode "13.0"))
18
19;; This file is free software; you can redistribute it and/or modify
20;; it under the terms of the GNU General Public License as published by
21;; the Free Software Foundation; either version 3, or (at your option)
22;; any later version.
23
24;; This file is distributed in the hope that it will be useful,
25;; but WITHOUT ANY WARRANTY; without even the implied warranty of
26;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27;; GNU General Public License for more details.
28
29;; You should have received a copy of the GNU General Public License
30;; along with GNU Emacs; see the file COPYING. If not, write to
31;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
32;; Boston, MA 02110-1301, USA.
33
34;;; Commentary:
35;;
36;; Mode that enables:
37;;
38;; * Flycheck type checking ✓
39;; * Company mode completion ✓
40;; * Go to definition ✓
41;; * Type of selection ✓
42;; * Info ✓
43;; * REPL ✓
44;; * Apply suggestions (extensions, imports, etc.) ✓
45;; * Find uses
46;; * Completion of stack targets ✓
47;; * List all types in all expressions
48;; * Import management
49;; * Dependency management
50
51;;; Code:
52
53(require 'flycheck)
54(require 'json)
55(require 'warnings)
56(require 'cl-lib)
57(require 'company)
58(require 'comint)
59(require 'widget)
60(require 'eldoc)
61(eval-when-compile
62 (require 'wid-edit))
63(require 'tramp)
64
65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
66;; Configuration
67
68(defgroup intero nil
69 "Complete development mode for Haskell"
70 :group 'haskell)
71
72(defcustom intero-package-version
73 (cl-case system-type
74 ;; Until <https://github.com/haskell/network/issues/313> is fixed:
75 (windows-nt "0.1.39")
76 (cygwin "0.1.39")
77 (t "0.1.39"))
78 "Package version to auto-install.
79
80This version does not necessarily have to be the latest version
81of intero published on Hackage. Sometimes there are changes to
82Intero which have no use for the Emacs mode. It is only bumped
83when the Emacs mode actually requires newer features from the
84intero executable, otherwise we force our users to upgrade
85pointlessly."
86 :group 'intero
87 :type 'string)
88
89(defcustom intero-repl-no-load
90 t
91 "Pass --no-load when starting the repl.
92This causes it to skip loading the files from the selected target."
93 :group 'intero
94 :type 'boolean)
95
96(defcustom intero-repl-no-build
97 t
98 "Pass --no-build when starting the repl.
99This causes it to skip building the target."
100 :group 'intero
101 :type 'boolean)
102
103(defcustom intero-debug nil
104 "Show debug output."
105 :group 'intero
106 :type 'boolean)
107
108(defcustom intero-whitelist
109 nil
110 "Projects to whitelist.
111
112It should be a list of directories.
113
114To use this, use the following mode hook:
115 (add-hook 'haskell-mode-hook 'intero-mode-whitelist)
116or use `intero-global-mode' and add \"/\" to `intero-blacklist'."
117 :group 'intero
118 :type 'string)
119
120(defcustom intero-blacklist
121 nil
122 "Projects to blacklist.
123
124It should be a list of directories.
125
126To use this, use the following mode hook:
127 (add-hook 'haskell-mode-hook 'intero-mode-blacklist)
128or use `intero-global-mode'."
129 :group 'intero
130 :type 'string)
131
132(defcustom intero-stack-executable
133 "stack"
134 "Name or path to the Stack executable to use."
135 :group 'intero
136 :type 'string)
137
138(defcustom intero-pop-to-repl
139 t
140 "When non-nil, pop to REPL when code is sent to it."
141 :group 'intero
142 :type 'boolean)
143
144(defcustom intero-extra-ghc-options nil
145 "Extra GHC options to pass to intero executable.
146
147For example, this variable can be used to run intero with extra
148warnings and perform more checks via flycheck error reporting."
149 :group 'intero
150 :type '(repeat string))
151
152(defcustom intero-extra-ghci-options nil
153 "Extra options to pass to GHCi when running `intero-repl'.
154
155For example, this variable can be used to enable some ghci extensions
156by default."
157 :group 'intero
158 :type '(repeat string))
159
160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
161;; Modes
162
163(defvar intero-mode-map (make-sparse-keymap)
164 "Intero minor mode's map.")
165
166(defvar-local intero-lighter " Intero"
167 "Lighter for the intero minor mode.")
168
169;;;###autoload
170(define-minor-mode intero-mode
171 "Minor mode for Intero.
172
173\\{intero-mode-map}"
174 :lighter intero-lighter
175 :keymap intero-mode-map
176 (when (bound-and-true-p interactive-haskell-mode)
177 (when (fboundp 'interactive-haskell-mode)
178 (message "Disabling interactive-haskell-mode ...")
179 (interactive-haskell-mode -1)))
180 (if intero-mode
181 (progn
182 (intero-flycheck-enable)
183 (add-hook 'completion-at-point-functions 'intero-completion-at-point nil t)
184 (add-to-list (make-local-variable 'company-backends) 'intero-company)
185 (company-mode)
186 (setq-local company-minimum-prefix-length 1)
187 (unless eldoc-documentation-function
188 (setq-local eldoc-documentation-function #'ignore))
189 (add-function :before-until (local 'eldoc-documentation-function) #'intero-eldoc)
190 )
191 (progn
192 (remove-function (local 'eldoc-documentation-function) #'intero-eldoc)
193 (message "Intero mode disabled."))))
194
195;;;###autoload
196(defun intero-mode-whitelist ()
197 "Run intero-mode when the current project is in `intero-whitelist'."
198 (interactive)
199 (when (intero-directories-contain-file (buffer-file-name) intero-whitelist)
200 (intero-mode)))
201
202;;;###autoload
203(defun intero-mode-blacklist ()
204 "Run intero-mode unless the current project is in `intero-blacklist'."
205 (interactive)
206 (unless (intero-directories-contain-file (buffer-file-name) intero-blacklist)
207 (intero-mode)))
208
209(dolist (f '(intero-mode-whitelist intero-mode-blacklist))
210 (make-obsolete
211 f
212 "use `intero-global-mode', which honours `intero-whitelist' and `intero-blacklist'."
213 "2017-05-13"))
214
215
216(define-key intero-mode-map (kbd "C-c C-t") 'intero-type-at)
217(define-key intero-mode-map (kbd "M-?") 'intero-uses-at)
218(define-key intero-mode-map (kbd "C-c C-i") 'intero-info)
219(define-key intero-mode-map (kbd "M-.") 'intero-goto-definition)
220(define-key intero-mode-map (kbd "C-c C-l") 'intero-repl-load)
221(define-key intero-mode-map (kbd "C-c C-c") 'intero-repl-eval-region)
222(define-key intero-mode-map (kbd "C-c C-z") 'intero-repl)
223(define-key intero-mode-map (kbd "C-c C-r") 'intero-apply-suggestions)
224(define-key intero-mode-map (kbd "C-c C-e") 'intero-expand-splice-at-point)
225
226(defun intero-directories-contain-file (file dirs)
227 "Return non-nil if FILE is contained in at least one of DIRS."
228 (and (not (null file))
229 (cl-some (lambda (directory)
230 (file-in-directory-p file directory))
231 dirs)))
232
233(defun intero-mode-maybe ()
234 "Enable `intero-mode' in all Haskell mode buffers.
235The buffer's filename (or working directory) is checked against
236`intero-whitelist' and `intero-blacklist'. If both the whitelist
237and blacklist match, then the whitelist entry wins, and
238`intero-mode' is enabled."
239 (when (intero-mode-should-start-p)
240 (intero-mode 1)))
241
242(defun intero-mode-should-start-p ()
243 "Predicate whether intero should start given user config.
244The buffer's filename (or working directory) is checked against
245`intero-whitelist' and `intero-blacklist'. If both the whitelist
246and blacklist match, then the whitelist entry wins, and
247`intero-mode' is enabled."
248 (and (derived-mode-p 'haskell-mode)
249 (let* ((file (or (buffer-file-name) default-directory))
250 (blacklisted (intero-directories-contain-file
251 file intero-blacklist))
252 (whitelisted (intero-directories-contain-file
253 file intero-whitelist)))
254 (or whitelisted (not blacklisted)))))
255
256;;;###autoload
257(define-globalized-minor-mode intero-global-mode
258 intero-mode intero-mode-maybe
259 :require 'intero)
260
261(define-obsolete-function-alias 'global-intero-mode 'intero-global-mode)
262
263
264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
265;; Global variables/state
266
267(defvar intero-temp-file-buffer-mapping
268 (make-hash-table)
269 "A mapping from file names to buffers.")
270
271;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
272;; Buffer-local variables/state
273
274(defvar-local intero-callbacks (list)
275 "List of callbacks waiting for output.
276LIST is a FIFO.")
277
278(defvar-local intero-async-network-cmd nil
279 "Command to send to the async network process when we connect.")
280
281(defvar-local intero-async-network-connected nil
282 "Did we successfully connect to the intero service?")
283
284(defvar-local intero-async-network-state nil
285 "State to pass to the callback once we get a response.")
286
287(defvar-local intero-async-network-worker nil
288 "The worker we're associated with.")
289
290(defvar-local intero-async-network-callback nil
291 "Callback to call when the connection is closed.")
292
293(defvar-local intero-arguments (list)
294 "Arguments used to call the stack process.")
295
296(defvar-local intero-targets (list)
297 "Targets used for the stack process.")
298
299(defvar-local intero-repl-last-loaded nil
300 "Last loaded module in the REPL.")
301
302(defvar-local intero-repl-send-after-load nil
303 "Send a command after every load.")
304
305(defvar-local intero-start-time nil
306 "Start time of the stack process.")
307
308(defvar-local intero-source-buffer (list)
309 "Buffer from which Intero was first requested to start.")
310
311(defvar-local intero-project-root nil
312 "The project root of the current buffer.")
313
314(defvar-local intero-package-name nil
315 "The package name associated with the current buffer.")
316
317(defvar-local intero-deleting nil
318 "The process of the buffer is being deleted.")
319
320(defvar-local intero-give-up nil
321 "When non-nil, give up trying to start the backend.
322A true value indicates that the backend could not start, or could
323not be installed. The user will have to manually run
324`intero-restart' or `intero-targets' to destroy the buffer and
325create a fresh one without this variable enabled.")
326
327(defvar-local intero-try-with-build nil
328 "Try starting intero without --no-build.
329This is slower, but will build required dependencies.")
330
331(defvar-local intero-starting nil
332 "When non-nil, indicates that the intero process starting up.")
333
334(defvar-local intero-service-port nil
335 "Port that the intero process is listening on for asynchronous commands.")
336
337(defvar-local intero-hoogle-port nil
338 "Port that hoogle server is listening on.")
339
340(defvar-local intero-suggestions nil
341 "Auto actions for the buffer.")
342
343(defvar-local intero-extensions nil
344 "Extensions supported by the compiler.")
345
346(defvar-local intero-ghc-version nil
347 "GHC version used by the project.")
348
349(defvar-local intero-buffer-host nil
350 "The hostname of the box hosting the intero process for the current buffer.")
351
352(defvar-local intero-stack-yaml nil
353 "The yaml file that intero should tell stack to use. When nil,
354 intero relies on stack's default, usually the 'stack.yaml' in
355 the project root.")
356
357(defun intero-inherit-local-variables (buffer)
358 "Make the current buffer inherit values of certain local variables from BUFFER."
359 (let ((variables '(intero-stack-executable
360 intero-repl-no-build
361 intero-repl-no-load
362 intero-stack-yaml
363 ;; TODO: shouldn’t more of the above be here?
364 )))
365 (cl-loop for v in variables do
366 (set (make-local-variable v) (buffer-local-value v buffer)))))
367
368(defmacro intero-with-temp-buffer (&rest body)
369 "Run BODY in `with-temp-buffer', but inherit certain local variables from the current buffer first."
370 (declare (indent 0) (debug t))
371 `(let ((initial-buffer (current-buffer)))
372 (with-temp-buffer
373 (intero-inherit-local-variables initial-buffer)
374 ,@body)))
375
376;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
377;; Interactive commands
378
379(defun intero-add-package (package)
380 "Add a dependency on PACKAGE to the currently-running project backend."
381 (interactive "sPackage: ")
382 (intero-blocking-call 'backend (concat ":set -package " package))
383 (flycheck-buffer))
384
385(defun intero-toggle-debug ()
386 "Toggle debugging mode on/off."
387 (interactive)
388 (setq intero-debug (not intero-debug))
389 (message "Intero debugging is: %s" (if intero-debug "ON" "OFF")))
390
391(defun intero-list-buffers ()
392 "List hidden process buffers created by intero.
393
394You can use this to kill them or look inside."
395 (interactive)
396 (let ((buffers (cl-remove-if-not
397 (lambda (buffer)
398 (string-match-p " intero:" (buffer-name buffer)))
399 (buffer-list))))
400 (if buffers
401 (display-buffer
402 (list-buffers-noselect
403 nil
404 buffers))
405 (error "There are no Intero process buffers"))))
406
407(defun intero-cd ()
408 "Change directory in the backend process."
409 (interactive)
410 (intero-async-call
411 'backend
412 (concat ":cd "
413 (read-directory-name "Change Intero directory: "))))
414
415(defun intero-fontify-expression (expression)
416 "Return a haskell-fontified version of EXPRESSION."
417 (intero-with-temp-buffer
418 (when (fboundp 'haskell-mode)
419 (let ((flycheck-checkers nil)
420 (haskell-mode-hook nil))
421 (haskell-mode)))
422 (insert expression)
423 (if (fboundp 'font-lock-ensure)
424 (font-lock-ensure)
425 (font-lock-fontify-buffer))
426 (buffer-string)))
427
428(defun intero-uses-at ()
429 "Highlight where the identifier at point is used."
430 (interactive)
431 (let* ((thing (intero-thing-at-point))
432 (uses (split-string (apply #'intero-get-uses-at thing)
433 "\n"
434 t)))
435 (unless (null uses)
436 (let ((highlighted nil))
437 (cl-loop
438 for use in uses
439 when (string-match
440 "\\(.*?\\):(\\([0-9]+\\),\\([0-9]+\\))-(\\([0-9]+\\),\\([0-9]+\\))$"
441 use)
442 do (let* ((returned-file (match-string 1 use))
443 (loaded-file (intero-extend-path-by-buffer-host returned-file))
444 (sline (string-to-number (match-string 2 use)))
445 (scol (string-to-number (match-string 3 use)))
446 (eline (string-to-number (match-string 4 use)))
447 (ecol (string-to-number (match-string 5 use)))
448 (start (save-excursion (goto-char (point-min))
449 (forward-line (1- sline))
450 (forward-char (1- scol))
451 (point))))
452 (when (intero-temp-file-p loaded-file)
453 (unless highlighted
454 (intero-highlight-uses-mode))
455 (setq highlighted t)
456 (intero-highlight-uses-mode-highlight
457 start
458 (save-excursion (goto-char (point-min))
459 (forward-line (1- eline))
460 (forward-char (1- ecol))
461 (point))
462 (= start (car thing))))))))))
463
464(defun intero-type-at (insert)
465 "Get the type of the thing or selection at point.
466
467With prefix argument INSERT, inserts the type above the current
468line as a type signature."
469 (interactive "P")
470 (let* ((thing (intero-thing-at-point))
471 (origin-buffer (current-buffer))
472 (origin (buffer-name))
473 (package (intero-package-name))
474 (ty (apply #'intero-get-type-at thing))
475 (string (buffer-substring (nth 0 thing) (nth 1 thing))))
476 (if insert
477 (save-excursion
478 (goto-char (line-beginning-position))
479 (insert (intero-fontify-expression ty) "\n"))
480 (with-current-buffer (intero-help-buffer)
481 (let ((buffer-read-only nil)
482 (help-string
483 (concat
484 (intero-fontify-expression string)
485 " in `"
486 (propertize origin 'origin-buffer origin-buffer)
487 "'"
488 " (" package ")"
489 "\n\n"
490 (intero-fontify-expression ty))))
491 (erase-buffer)
492 (intero-help-push-history origin-buffer help-string)
493 (intero-help-pagination)
494 (insert help-string)
495 (goto-char (point-min))))
496 (message
497 "%s" (intero-fontify-expression ty)))))
498
499(defun intero-info (ident)
500 "Get the info of the thing with IDENT at point."
501 (interactive (list (intero-ident-at-point)))
502 (let ((origin-buffer (current-buffer))
503 (package (intero-package-name))
504 (info (intero-get-info-of ident))
505 (origin (buffer-name)))
506 (with-current-buffer (pop-to-buffer (intero-help-buffer))
507 (let ((buffer-read-only nil)
508 (help-string
509 (concat
510 (intero-fontify-expression ident)
511 " in `"
512 (propertize origin 'origin-buffer origin-buffer)
513 "'"
514 " (" package ")"
515 "\n\n"
516 (intero-fontify-expression info))))
517 (erase-buffer)
518 (intero-help-push-history origin-buffer help-string)
519 (intero-help-pagination)
520 (insert help-string)
521 (goto-char (point-min))))))
522
523(defun intero-goto-definition ()
524 "Jump to the definition of the thing at point.
525Returns nil when unable to find definition."
526 (interactive)
527 (let ((result (apply #'intero-get-loc-at (intero-thing-at-point))))
528
529 (if (not (string-match "\\(.*?\\):(\\([0-9]+\\),\\([0-9]+\\))-(\\([0-9]+\\),\\([0-9]+\\))$"
530 result))
531 (message "%s" result)
532 (if (fboundp 'xref-push-marker-stack) ;; Emacs 25
533 (xref-push-marker-stack)
534 (with-no-warnings
535 (ring-insert find-tag-marker-ring (point-marker))))
536 (let* ((returned-file (match-string 1 result))
537 (line (string-to-number (match-string 2 result)))
538 (col (string-to-number (match-string 3 result)))
539 (loaded-file (intero-extend-path-by-buffer-host returned-file)))
540 (if (intero-temp-file-p loaded-file)
541 (let ((original-buffer (intero-temp-file-origin-buffer loaded-file)))
542 (if original-buffer
543 (switch-to-buffer original-buffer)
544 (error "Attempted to load temp file. Try restarting Intero.
545If the problem persists, please report this as a bug!")))
546 (find-file
547 (expand-file-name
548 returned-file
549 (intero-extend-path-by-buffer-host (intero-project-root)))))
550 (pop-mark)
551 (goto-char (point-min))
552 (forward-line (1- line))
553 (forward-char (1- col))
554 t))))
555
556(defmacro intero-with-dump-splices (exp)
557 "Run EXP but with dump-splices enabled in the intero backend process."
558 `(when (intero-blocking-call 'backend ":set -ddump-splices")
559 (let ((result ,exp))
560 (progn
561 nil ; Disable dump-splices here in future
562 result))))
563
564(defun intero-expand-splice-at-point ()
565 "Show the expansion of the template haskell splice at point."
566 (interactive)
567 (unless (intero-gave-up 'backend)
568 (intero-with-dump-splices
569 (let* ((output (intero-blocking-call
570 'backend
571 (concat ":load " (intero-path-for-ghci (intero-temp-file-name)))))
572 (msgs (intero-parse-errors-warnings-splices nil (current-buffer) output))
573 (line (line-number-at-pos))
574 (column (if (save-excursion
575 (forward-char 1)
576 (looking-back "$(" 1))
577 (+ 2 (current-column))
578 (if (looking-at-p "$(")
579 (+ 3 (current-column))
580 (1+ (current-column)))))
581 (expansion-msg
582 (cl-loop for msg in msgs
583 when (and (eq (flycheck-error-level msg) 'splice)
584 (= (flycheck-error-line msg) line)
585 (<= (flycheck-error-column msg) column))
586 return (flycheck-error-message msg)))
587 (expansion
588 (when expansion-msg
589 (string-trim
590 (replace-regexp-in-string "^Splicing expression" "" expansion-msg)))))
591 (when expansion
592 (message "%s" (intero-fontify-expression expansion)))))))
593
594(defun intero-restart ()
595 "Simply restart the process with the same configuration as before."
596 (interactive)
597 (when (intero-buffer-p 'backend)
598 (let ((targets (buffer-local-value 'intero-targets
599 (intero-buffer 'backend)))
600 (stack-yaml (buffer-local-value 'intero-stack-yaml
601 (intero-buffer 'backend))))
602 (intero-destroy 'backend)
603 (intero-get-worker-create 'backend targets (current-buffer) stack-yaml)
604 (intero-repl-restart))))
605
606(defun intero-read-targets ()
607 "Read a list of stack targets."
608 (let ((old-targets
609 (buffer-local-value 'intero-targets (intero-buffer 'backend)))
610 (available-targets (intero-get-targets)))
611 (if available-targets
612 (intero-multiswitch
613 "Set the targets to use for stack ghci:"
614 (mapcar (lambda (target)
615 (list :key target
616 :title target
617 :default (member target old-targets)))
618 available-targets))
619 (split-string (read-from-minibuffer "Targets: " nil nil nil nil old-targets)
620 " "
621 t))))
622
623(defun intero-targets (targets save-dir-local)
624 "Set the TARGETS to use for stack ghci.
625When SAVE-DIR-LOCAL is non-nil, save TARGETS as the
626directory-local value for `intero-targets'."
627 (interactive (list (intero-read-targets)
628 (y-or-n-p "Save selected target(s) in directory local variables for future sessions? ")))
629 (intero-destroy)
630 (intero-get-worker-create 'backend targets (current-buffer))
631 (intero-repl-restart)
632 (when save-dir-local
633 (save-window-excursion
634 (let ((default-directory (intero-project-root)))
635 (add-dir-local-variable 'haskell-mode 'intero-targets targets)
636 (save-buffer)))))
637
638(defun intero-stack-yaml (file save-dir-local)
639 "Change the yaml FILE that intero should tell stack to use.
640Intero will be restarted with the new configuration. When
641SAVE-DIR-LOCAL is non-nil, save FILE as the directory-local value
642for `intero-stack-yaml'."
643 (interactive (list (read-file-name
644 "Select YAML config: "
645 (file-name-as-directory (intero-project-root)))
646 (y-or-n-p "Save selected stack yaml config in directory local variable for future sessions? ")))
647 (let ((stack-yaml (expand-file-name file)))
648 (setq intero-stack-yaml stack-yaml)
649 (with-current-buffer (intero-buffer 'backend)
650 (setq intero-stack-yaml stack-yaml))
651 (intero-restart)
652 (intero-repl-restart)
653 (when save-dir-local
654 (save-window-excursion
655 (let ((default-directory (intero-project-root)))
656 (add-dir-local-variable 'haskell-mode 'intero-stack-yaml stack-yaml)
657 (save-buffer))))))
658
659(defun intero-destroy (&optional worker)
660 "Stop WORKER and kill its associated process buffer.
661If not provided, WORKER defaults to the current worker process."
662 (interactive)
663 (if worker
664 (intero-delete-worker worker)
665 (intero-delete-worker 'backend)))
666
667;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
668;; DevelMain integration
669
670(defun intero-devel-reload ()
671 "Reload the module `DevelMain' and then run `DevelMain.update'.
672
673This is for doing live update of the code of servers or GUI
674applications. Put your development version of the program in
675`DevelMain', and define `update' to auto-start the program on a
676new thread, and use the `foreign-store' package to access the
677running context across :load/:reloads in Intero."
678 (interactive)
679 (unwind-protect
680 (with-current-buffer
681 (or (get-buffer "DevelMain.hs")
682 (if (y-or-n-p
683 "You need to open a buffer named DevelMain.hs. Find now? ")
684 (ido-find-file)
685 (error "No DevelMain.hs buffer")))
686 (message "Reloading ...")
687 (intero-async-call
688 'backend
689 ":load DevelMain"
690 (current-buffer)
691 (lambda (buffer reply)
692 (if (string-match-p "^O[Kk], modules loaded" reply)
693 (intero-async-call
694 'backend
695 "DevelMain.update"
696 buffer
697 (lambda (_buffer reply)
698 (message "DevelMain updated. Output was:\n%s"
699 reply)))
700 (progn
701 (message "DevelMain FAILED. Switch to DevelMain.hs and compile that.")
702 (switch-to-buffer buffer)
703 (flycheck-buffer)
704 (flycheck-list-errors))))))))
705
706;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
707;; Flycheck integration
708
709(defun intero-flycheck-enable ()
710 "Enable intero's flycheck support in this buffer."
711 (flycheck-select-checker 'intero)
712 (setq intero-check-last-mod-time nil
713 intero-check-last-results nil)
714 (flycheck-mode))
715
716(defun intero-check (checker cont)
717 "Run a check with CHECKER and pass the status onto CONT."
718 (if (intero-gave-up 'backend)
719 (run-with-timer 0
720 nil
721 cont
722 'interrupted)
723 (let* ((file-buffer (current-buffer))
724 (staging-file (intero-path-for-ghci (intero-staging-file-name)))
725 (temp-file (intero-path-for-ghci (intero-temp-file-name))))
726 ;; We queue up to :move the staging file to the target temp
727 ;; file, which also updates its modified time.
728 (intero-async-call
729 'backend
730 (format ":move %s %s" staging-file temp-file))
731 ;; We load up the target temp file, which has only been updated
732 ;; by the copy above.
733 (intero-async-call
734 'backend
735 (concat ":load " temp-file)
736 (list :cont cont
737 :file-buffer file-buffer
738 :checker checker)
739 (lambda (state string)
740 (with-current-buffer (plist-get state :file-buffer)
741 (let* ((compile-ok (string-match "O[Kk], modules loaded: \\(.*\\)\\.$" string))
742 (modules (match-string 1 string))
743 (msgs (intero-parse-errors-warnings-splices
744 (plist-get state :checker)
745 (current-buffer)
746 string)))
747 (intero-collect-compiler-messages msgs)
748 (let ((results (cl-remove-if (lambda (msg)
749 (eq 'splice (flycheck-error-level msg)))
750 msgs)))
751 (setq intero-check-last-results results)
752 (funcall (plist-get state :cont) 'finished results))
753 (when compile-ok
754 (intero-async-call 'backend
755 (concat ":module + "
756 (replace-regexp-in-string "," "" modules))
757 nil
758 (lambda (_st _))))))))
759 ;; We sleep for at least one second to allow a buffer period
760 ;; between module updates. GHCi will consider a module Foo to be
761 ;; unchanged even if its filename has changed or timestmap has
762 ;; changed, if the timestamp is less than 1 second.
763 (intero-async-call
764 'backend
765 ":sleep 1"))))
766
767(flycheck-define-generic-checker 'intero
768 "A syntax and type checker for Haskell using an Intero worker
769process."
770 :start 'intero-check
771 :modes '(haskell-mode literate-haskell-mode)
772 :predicate (lambda () intero-mode))
773
774(add-to-list 'flycheck-checkers 'intero)
775
776(defun intero-parse-errors-warnings-splices (checker buffer string)
777 "Parse flycheck errors and warnings.
778CHECKER and BUFFER are added to each item parsed from STRING."
779 (intero-with-temp-buffer
780 (insert string)
781 (goto-char (point-min))
782 (let ((messages (list))
783 (temp-file (intero-temp-file-name buffer))
784 (found-error-as-warning nil))
785 (while (search-forward-regexp
786 (concat "[\r\n]\\([A-Z]?:?[^ \r\n:][^:\n\r]+\\):\\([0-9()-:]+\\):"
787 "[ \n\r]+\\([[:unibyte:][:nonascii:]]+?\\)\n[^ ]")
788 nil t 1)
789 (let* ((local-file (intero-canonicalize-path (match-string 1)))
790 (file (intero-extend-path-by-buffer-host local-file buffer))
791 (location-raw (match-string 2))
792 (msg (replace-regexp-in-string
793 "[\n\r ]*|$"
794 ""
795 (match-string 3))) ;; Replace gross bullet points.
796 (type (cond ((string-match "^Warning:" msg)
797 (setq msg (replace-regexp-in-string "^Warning: *" "" msg))
798 (if (string-match-p
799 (rx bol
800 "["
801 (or "-Wdeferred-type-errors"
802 "-Wdeferred-out-of-scope-variables"
803 "-Wtyped-holes")
804 "]")
805 msg)
806 (progn (setq found-error-as-warning t)
807 'error)
808 'warning))
809 ((string-match-p "^Splicing " msg) 'splice)
810 (t 'error)))
811 (location (intero-parse-error
812 (concat local-file ":" location-raw ": x")))
813 (line (plist-get location :line))
814 (column (plist-get location :col)))
815 (setq messages
816 (cons (flycheck-error-new-at
817 line column type
818 msg
819 :checker checker
820 :buffer buffer
821 :filename (if (intero-paths-for-same-file temp-file file)
822 (intero-buffer-file-name buffer)
823 file))
824 messages)))
825 (forward-line -1))
826 (delete-dups
827 (if found-error-as-warning
828 (cl-remove-if (lambda (msg) (eq 'warning (flycheck-error-level msg))) messages)
829 messages)))))
830
831(defconst intero-error-regexp-alist
832 `((,(concat
833 "^ *\\(?1:[^\t\r\n]+?\\):"
834 "\\(?:"
835 "\\(?2:[0-9]+\\):\\(?4:[0-9]+\\)\\(?:-\\(?5:[0-9]+\\)\\)?" ;; "121:1" & "12:3-5"
836 "\\|"
837 "(\\(?2:[0-9]+\\),\\(?4:[0-9]+\\))-(\\(?3:[0-9]+\\),\\(?5:[0-9]+\\))" ;; "(289,5)-(291,36)"
838 "\\)"
839 ":\\(?6: Warning:\\)?")
840 1 (2 . 3) (4 . 5) (6 . nil)) ;; error/warning locus
841
842 ;; multiple declarations
843 ("^ \\(?:Declared at:\\| \\) \\(?1:[^ \t\r\n]+\\):\\(?2:[0-9]+\\):\\(?4:[0-9]+\\)$"
844 1 2 4 0) ;; info locus
845
846 ;; this is the weakest pattern as it's subject to line wrapping et al.
847 (" at \\(?1:[^ \t\r\n]+\\):\\(?2:[0-9]+\\):\\(?4:[0-9]+\\)\\(?:-\\(?5:[0-9]+\\)\\)?[)]?$"
848 1 2 (4 . 5) 0)) ;; info locus
849 "Regexps used for matching GHC compile messages.")
850
851(defun intero-parse-error (string)
852 "Parse the line number from the error in STRING."
853 (save-match-data
854 (when (string-match (mapconcat #'car intero-error-regexp-alist "\\|")
855 string)
856 (let ((string3 (match-string 3 string))
857 (string5 (match-string 5 string)))
858 (list :file (match-string 1 string)
859 :line (string-to-number (match-string 2 string))
860 :col (string-to-number (match-string 4 string))
861 :line2 (when string3
862 (string-to-number string3))
863 :col2 (when string5
864 (string-to-number string5)))))))
865
866(defun intero-call-in-buffer (buffer func &rest args)
867 "In BUFFER, call FUNC with ARGS."
868 (with-current-buffer buffer
869 (apply func args)))
870
871;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
872;; Traditional completion-at-point function
873
874(defun intero-completion-at-point ()
875 "A (blocking) function suitable for use in `completion-at-point-functions'."
876 (let ((prefix-info (intero-completions-grab-prefix)))
877 (when prefix-info
878 (cl-destructuring-bind
879 (beg end prefix _type) prefix-info
880 (let ((completions
881 (intero-completion-response-to-list
882 (intero-blocking-call
883 'backend
884 (format ":complete repl %S" prefix)))))
885 (when completions
886 (list beg end completions)))))))
887
888(defun intero-repl-completion-at-point ()
889 "A (blocking) function suitable for use in `completion-at-point-functions'.
890Should only be used in the repl"
891 (let* ((beg (save-excursion (intero-repl-beginning-of-line) (point)))
892 (end (point))
893 (str (buffer-substring-no-properties beg end))
894 (repl-buffer (current-buffer))
895 (proc (get-buffer-process (current-buffer))))
896 (with-temp-buffer
897 (comint-redirect-send-command-to-process
898 (format ":complete repl %S" str) ;; command
899 (current-buffer) ;; output buffer
900 proc ;; target process
901 nil ;; echo
902 t) ;; no-display
903 (while (not (with-current-buffer repl-buffer
904 comint-redirect-completed))
905 (sleep-for 0.01))
906 (let* ((completions (intero-completion-response-to-list (buffer-string)))
907 (first-line (car completions)))
908 (when (string-match "[^ ]* [^ ]* " first-line) ;; "2 2 :load src/"
909 (setq first-line (replace-match "" nil nil first-line))
910 (list (+ beg (length first-line)) end (cdr completions)))))))
911
912;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
913;; Company integration (auto-completion)
914
915(defconst intero-pragmas
916 '("CONLIKE" "SCC" "DEPRECATED" "INCLUDE" "INCOHERENT" "INLINABLE" "INLINE"
917 "LANGUAGE" "LINE" "MINIMAL" "NOINLINE" "NOUNPACK" "OPTIONS" "OPTIONS_GHC"
918 "OVERLAPPABLE" "OVERLAPPING" "OVERLAPS" "RULES" "SOURCE" "SPECIALIZE"
919 "UNPACK" "WARNING")
920 "Pragmas that GHC supports.")
921
922(defun intero-company (command &optional arg &rest ignored)
923 "Company source for intero, with the standard COMMAND and ARG args.
924Other arguments are IGNORED."
925 (interactive (list 'interactive))
926 (cl-case command
927 (interactive (company-begin-backend 'intero-company))
928 (prefix
929 (unless (intero-gave-up 'backend)
930 (or (let ((hole (intero-grab-hole)))
931 (when hole
932 (save-excursion
933 (goto-char (cdr hole))
934 (buffer-substring (car hole) (cdr hole)))))
935 (let ((prefix-info (intero-completions-grab-prefix)))
936 (when prefix-info
937 (cl-destructuring-bind
938 (beg end prefix _type) prefix-info
939 prefix))))))
940 (candidates
941 (unless (intero-gave-up 'backend)
942 (let ((beg-end (intero-grab-hole)))
943 (if beg-end
944 (cons :async
945 (-partial 'intero-async-fill-at
946 (current-buffer)
947 (car beg-end)))
948 (let ((prefix-info (intero-completions-grab-prefix)))
949 (when prefix-info
950 (cons :async
951 (-partial 'intero-company-callback
952 (current-buffer)
953 prefix-info))))))))))
954
955(define-obsolete-function-alias 'company-intero 'intero-company)
956
957(defun intero-company-callback (source-buffer prefix-info cont)
958 "Generate completions for SOURCE-BUFFER based on PREFIX-INFO and call CONT on the results."
959 (cl-destructuring-bind
960 (beg end prefix type) prefix-info
961 (or (and (bound-and-true-p intero-mode)
962 (cl-case type
963 (haskell-completions-module-name-prefix
964 (intero-get-repl-completions source-buffer (concat "import " prefix) cont)
965 t)
966 (haskell-completions-identifier-prefix
967 (intero-get-completions source-buffer beg end cont)
968 t)
969 (haskell-completions-language-extension-prefix
970 (intero-get-repl-completions
971 source-buffer
972 (concat ":set -X" prefix)
973 (-partial (lambda (cont results)
974 (funcall cont
975 (mapcar (lambda (x)
976 (replace-regexp-in-string "^-X" "" x))
977 results)))
978 cont))
979 t)
980 (haskell-completions-pragma-name-prefix
981 (funcall cont
982 (cl-remove-if-not
983 (lambda (candidate)
984 (string-prefix-p prefix candidate))
985 intero-pragmas))
986 t)))
987 (intero-get-repl-completions source-buffer prefix cont))))
988
989(defun intero-completions-grab-prefix (&optional minlen)
990 "Grab prefix at point for possible completion.
991If specified, MINLEN is the shortest completion which will be
992considered."
993 (when (intero-completions-can-grab-prefix)
994 (let ((prefix (cond
995 ((intero-completions-grab-pragma-prefix))
996 ((intero-completions-grab-identifier-prefix)))))
997 (cond ((and minlen prefix)
998 (when (>= (length (nth 2 prefix)) minlen)
999 prefix))
1000 (prefix prefix)))))
1001
1002(defun intero-completions-can-grab-prefix ()
1003 "Check if the case is appropriate for grabbing completion prefix."
1004 (when (not (region-active-p))
1005 (when (looking-at-p (rx (| space line-end punct)))
1006 (when (not (bobp))
1007 (save-excursion
1008 (backward-char)
1009 (not (looking-at-p (rx (| space line-end)))))))))
1010
1011(defun intero-completions-grab-identifier-prefix ()
1012 "Grab identifier prefix."
1013 (let ((pos-at-point (intero-ident-pos-at-point))
1014 (p (point)))
1015 (when pos-at-point
1016 (let* ((start (car pos-at-point))
1017 (end (cdr pos-at-point))
1018 (type 'haskell-completions-identifier-prefix)
1019 (case-fold-search nil)
1020 value)
1021 (when (<= p end)
1022 (setq end p)
1023 (setq value (buffer-substring-no-properties start end))
1024 (when (string-match-p (rx bos upper) value)
1025 (save-excursion
1026 (goto-char (line-beginning-position))
1027 (when (re-search-forward
1028 (rx "import"
1029 (? (1+ space) "qualified")
1030 (1+ space)
1031 upper
1032 (1+ (| alnum ".")))
1033 p ;; bound
1034 t) ;; no-error
1035 (if (equal p (point))
1036 (setq type 'haskell-completions-module-name-prefix)
1037 (when (re-search-forward
1038 (rx (| " as " "("))
1039 start
1040 t)
1041 (setq type 'haskell-completions-identifier-prefix))))))
1042 (when (nth 8 (syntax-ppss))
1043 (setq type 'haskell-completions-general-prefix))
1044 (when value (list start end value type)))))))
1045
1046(defun intero-completions-grab-pragma-prefix ()
1047 "Grab completion prefix for pragma completions.
1048Returns a list of form '(prefix-start-position
1049prefix-end-position prefix-value prefix-type) for pramga names
1050such as WARNING, DEPRECATED, LANGUAGE etc. Also returns
1051completion prefixes for options in case OPTIONS_GHC pragma, or
1052language extensions in case of LANGUAGE pragma. Obsolete OPTIONS
1053pragma is supported also."
1054 (when (nth 4 (syntax-ppss))
1055 ;; We're inside comment
1056 (let ((p (point))
1057 (comment-start (nth 8 (syntax-ppss)))
1058 (case-fold-search nil)
1059 prefix-start
1060 prefix-end
1061 prefix-type
1062 prefix-value)
1063 (save-excursion
1064 (goto-char comment-start)
1065 (when (looking-at (rx "{-#" (1+ (| space "\n"))))
1066 (let ((pragma-start (match-end 0)))
1067 (when (> p pragma-start)
1068 ;; point stands after `{-#`
1069 (goto-char pragma-start)
1070 (when (looking-at (rx (1+ (| upper "_"))))
1071 ;; found suitable sequence for pragma name
1072 (let ((pragma-end (match-end 0))
1073 (pragma-value (match-string-no-properties 0)))
1074 (if (eq p pragma-end)
1075 ;; point is at the end of (in)complete pragma name
1076 ;; prepare resulting values
1077 (progn
1078 (setq prefix-start pragma-start)
1079 (setq prefix-end pragma-end)
1080 (setq prefix-value pragma-value)
1081 (setq prefix-type
1082 'haskell-completions-pragma-name-prefix))
1083 (when (and (> p pragma-end)
1084 (or (equal "OPTIONS_GHC" pragma-value)
1085 (equal "OPTIONS" pragma-value)
1086 (equal "LANGUAGE" pragma-value)))
1087 ;; point is after pragma name, so we need to check
1088 ;; special cases of `OPTIONS_GHC` and `LANGUAGE` pragmas
1089 ;; and provide a completion prefix for possible ghc
1090 ;; option or language extension.
1091 (goto-char pragma-end)
1092 (when (re-search-forward
1093 (rx (* anything)
1094 (1+ (regexp "\\S-")))
1095 p
1096 t)
1097 (let* ((str (match-string-no-properties 0))
1098 (split (split-string str (rx (| space "\n")) t))
1099 (val (car (last split)))
1100 (end (point)))
1101 (when (and (equal p end)
1102 (not (string-match-p "#" val)))
1103 (setq prefix-value val)
1104 (backward-char (length val))
1105 (setq prefix-start (point))
1106 (setq prefix-end end)
1107 (setq
1108 prefix-type
1109 (if (not (equal "LANGUAGE" pragma-value))
1110 'haskell-completions-ghc-option-prefix
1111 'haskell-completions-language-extension-prefix
1112 )))))))))))))
1113 (when prefix-value
1114 (list prefix-start prefix-end prefix-value prefix-type)))))
1115
1116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1117;; Hole filling
1118
1119(defun intero-async-fill-at (buffer beg cont)
1120 "Make the blocking call to the process."
1121 (with-current-buffer buffer
1122 (intero-async-call
1123 'backend
1124 (format
1125 ":fill %s %d %d"
1126 (intero-path-for-ghci (intero-temp-file-name))
1127 (save-excursion (goto-char beg)
1128 (line-number-at-pos))
1129 (save-excursion (goto-char beg)
1130 (1+ (current-column))))
1131 (list :buffer (current-buffer) :cont cont)
1132 (lambda (state reply)
1133 (if (or (string-match "^Couldn't guess" reply)
1134 (string-match "^Unable to " reply)
1135 (intero-parse-error reply))
1136 (funcall (plist-get state :cont) (list))
1137 (with-current-buffer (plist-get state :buffer)
1138 (let ((candidates
1139 (split-string
1140 (replace-regexp-in-string
1141 "\n$" ""
1142 reply)
1143 "[\r\n]"
1144 t)))
1145 (when candidates
1146 (funcall (plist-get state :cont) candidates)))))))))
1147
1148(defun intero-grab-hole ()
1149 "When user is at a hole _ or _foo, return the starting point of
1150that hole."
1151 (let ((beg-end (intero-ident-pos-at-point)))
1152 (when beg-end
1153 (let ((string (buffer-substring-no-properties (car beg-end) (cdr beg-end))))
1154 (when (string-match-p "^_" string)
1155 beg-end)))))
1156
1157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1158;; ELDoc integration
1159
1160(defvar-local intero-eldoc-cache (make-hash-table :test 'equal)
1161 "Cache for types of regions, used by `intero-eldoc'.
1162This is not for saving on requests (we make a request even if
1163something is in cache, overwriting the old entry), but rather for
1164making types show immediately when we do have them cached.")
1165
1166(defun intero-eldoc-maybe-print (msg)
1167 "Print MSG with eldoc if eldoc would display a message now.
1168Like `eldoc-print-current-symbol-info', but just printing MSG
1169instead of using `eldoc-documentation-function'."
1170 (with-demoted-errors "eldoc error: %s"
1171 (and (or (eldoc-display-message-p)
1172 ;; Erase the last message if we won't display a new one.
1173 (when eldoc-last-message
1174 (eldoc-message nil)
1175 nil))
1176 (eldoc-message msg))))
1177
1178(defun intero-eldoc ()
1179 "ELDoc backend for intero."
1180 (let ((buffer (intero-buffer 'backend)))
1181 (when (and buffer (process-live-p (get-buffer-process buffer)))
1182 (apply #'intero-get-type-at-async
1183 (lambda (beg end ty)
1184 (let ((response-status (intero-haskell-utils-repl-response-error-status ty)))
1185 (if (eq 'no-error response-status)
1186 (let ((msg (intero-fontify-expression
1187 (replace-regexp-in-string "[ \n]+" " " ty))))
1188 ;; Got an updated type-at-point, cache and print now:
1189 (puthash (list beg end)
1190 msg
1191 intero-eldoc-cache)
1192 (intero-eldoc-maybe-print msg))
1193 ;; But if we're seeing errors, invalidate cache-at-point:
1194 (remhash (list beg end) intero-eldoc-cache))))
1195 (intero-thing-at-point))))
1196 ;; If we have something cached at point, print that first:
1197 (gethash (intero-thing-at-point) intero-eldoc-cache))
1198
1199(defun intero-haskell-utils-repl-response-error-status (response)
1200 "Parse response REPL's RESPONSE for errors.
1201Returns one of the following symbols:
1202
1203+ unknown-command
1204+ option-missing
1205+ interactive-error
1206+ no-error
1207
1208*Warning*: this funciton covers only three kind of responses:
1209
1210* \"unknown command …\"
1211 REPL missing requested command
1212* \"<interactive>:3:5: …\"
1213 interactive REPL error
1214* \"Couldn't guess that module name. Does it exist?\"
1215 (:type-at and maybe some other commands error)
1216* *all other reposnses* are treated as success reposneses and
1217 'no-error is returned."
1218 (let ((first-line (car (split-string response "\n" t))))
1219 (cond
1220 ((null first-line) 'no-error)
1221 ((string-match-p "^unknown command" first-line)
1222 'unknown-command)
1223 ((string-match-p
1224 "^Couldn't guess that module name. Does it exist?"
1225 first-line)
1226 'option-missing)
1227 ((string-match-p "^<interactive>:" first-line)
1228 'interactive-error)
1229 ((string-match-p "^<no location info>:" first-line)
1230 'inspection-error)
1231 (t 'no-error))))
1232
1233;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1234;; REPL
1235
1236(defconst intero-prompt-regexp "^\4 ")
1237
1238(defvar-local intero-repl-previous-buffer nil
1239 "Records the buffer to which `intero-repl-switch-back' should jump.
1240This is set by `intero-repl-buffer', and should otherwise be nil.")
1241
1242(defun intero-repl-clear-buffer ()
1243 "Clear the current REPL buffer."
1244 (interactive)
1245 (let ((comint-buffer-maximum-size 0))
1246 (comint-truncate-buffer)))
1247
1248(defmacro intero-with-repl-buffer (prompt-options &rest body)
1249 "Evaluate given forms with the REPL as the current buffer.
1250The REPL will be started if necessary, and the REPL buffer will
1251be activated after evaluation. PROMPT-OPTIONS are passed to
1252`intero-repl-buffer'. BODY is the forms to be evaluated."
1253 (declare (indent defun))
1254 (let ((repl-buffer (cl-gensym)))
1255 `(let ((,repl-buffer (intero-repl-buffer ,prompt-options t)))
1256 (with-current-buffer ,repl-buffer
1257 ,@body)
1258 (when intero-pop-to-repl
1259 (pop-to-buffer ,repl-buffer)))))
1260
1261(defun intero-repl-after-load ()
1262 "Set the command to run after load."
1263 (interactive)
1264 (if (eq major-mode 'intero-repl-mode)
1265 (setq intero-repl-send-after-load
1266 (read-from-minibuffer
1267 "Command to run: "
1268 (or intero-repl-send-after-load
1269 (car (ring-elements comint-input-ring))
1270 "")))
1271 (error "Run this in the REPL.")))
1272
1273(defun intero-repl-load (&optional prompt-options)
1274 "Load the current file in the REPL.
1275If PROMPT-OPTIONS is non-nil, prompt with an options list."
1276 (interactive "P")
1277 (save-buffer)
1278 (let ((file (intero-path-for-ghci (intero-buffer-file-name))))
1279 (intero-with-repl-buffer prompt-options
1280 (comint-simple-send
1281 (get-buffer-process (current-buffer))
1282 ":set prompt \"\\n\"")
1283 (if (or (not intero-repl-last-loaded)
1284 (not (equal file intero-repl-last-loaded)))
1285 (progn
1286 (comint-simple-send
1287 (get-buffer-process (current-buffer))
1288 (concat ":load " file))
1289 (setq intero-repl-last-loaded file))
1290 (comint-simple-send
1291 (get-buffer-process (current-buffer))
1292 ":reload"))
1293 (when intero-repl-send-after-load
1294 (comint-simple-send
1295 (get-buffer-process (current-buffer))
1296 intero-repl-send-after-load))
1297 (comint-simple-send (get-buffer-process (current-buffer))
1298 ":set prompt \"\\4 \""))))
1299
1300(defun intero-repl-eval-region (begin end &optional prompt-options)
1301 "Evaluate the code in region from BEGIN to END in the REPL.
1302If the region is unset, the current line will be used.
1303PROMPT-OPTIONS are passed to `intero-repl-buffer' if supplied."
1304 (interactive "r")
1305 (unless (use-region-p)
1306 (setq begin (line-beginning-position)
1307 end (line-end-position)))
1308 (let ((text (buffer-substring-no-properties begin end)))
1309 (intero-with-repl-buffer prompt-options
1310 (comint-simple-send
1311 (get-buffer-process (current-buffer))
1312 text))))
1313
1314(defun intero-repl (&optional prompt-options)
1315 "Start up the REPL for this stack project.
1316If PROMPT-OPTIONS is non-nil, prompt with an options list."
1317 (interactive "P")
1318 (switch-to-buffer-other-window (intero-repl-buffer prompt-options t)))
1319
1320(defun intero-repl-restart ()
1321 "Restart the REPL."
1322 (interactive)
1323 (let* ((root (intero-project-root))
1324 (package-name (intero-package-name))
1325 (backend-buffer (intero-buffer 'backend))
1326 (name (format "*intero:%s:%s:repl*"
1327 (file-name-nondirectory root)
1328 package-name)))
1329 (when (get-buffer name)
1330 (with-current-buffer (get-buffer name)
1331 (goto-char (point-max))
1332 (let ((process (get-buffer-process (current-buffer))))
1333 (when process (kill-process process)))
1334 (intero-repl-mode-start backend-buffer
1335 (buffer-local-value 'intero-targets backend-buffer)
1336 nil
1337 (buffer-local-value 'intero-stack-yaml backend-buffer))))))
1338
1339(defun intero-repl-buffer (prompt-options &optional store-previous)
1340 "Start the REPL buffer.
1341If PROMPT-OPTIONS is non-nil, prompt with an options list. When
1342STORE-PREVIOUS is non-nil, note the caller's buffer in
1343`intero-repl-previous-buffer'."
1344 (let* ((root (intero-project-root))
1345 (package-name (intero-package-name))
1346 (name (format "*intero:%s:%s:repl*"
1347 (file-name-nondirectory root)
1348 package-name))
1349 (initial-buffer (current-buffer))
1350 (backend-buffer (intero-buffer 'backend)))
1351 (with-current-buffer
1352 (or (let ((buf (get-buffer name)))
1353 (and (get-buffer-process buf)
1354 buf))
1355 (with-current-buffer
1356 (get-buffer-create name)
1357 ;; The new buffer doesn't know if the initial buffer was hosted
1358 ;; remotely or not, so we need to extend by the host of the
1359 ;; initial buffer to cd. We could also achieve this by setting the
1360 ;; buffer's intero-buffer-host, but intero-repl-mode wipes this, so
1361 ;; we defer setting that until after.
1362 (cd (intero-extend-path-by-buffer-host root initial-buffer))
1363 (intero-repl-mode) ; wipes buffer-local variables
1364 (intero-inherit-local-variables initial-buffer)
1365 (setq intero-buffer-host (intero-buffer-host initial-buffer))
1366 (intero-repl-mode-start backend-buffer
1367 (buffer-local-value 'intero-targets backend-buffer)
1368 prompt-options
1369 (buffer-local-value 'intero-stack-yaml backend-buffer))
1370 (current-buffer)))
1371 (progn
1372 (when store-previous
1373 (setq intero-repl-previous-buffer initial-buffer))
1374 (current-buffer)))))
1375
1376(defvar intero-hyperlink-map
1377 (let ((map (make-sparse-keymap)))
1378 (define-key map [mouse-1] 'intero-find-file-with-line-and-char)
1379 (define-key map [C-return] 'intero-find-file-with-line-and-char)
1380 map)
1381 "Keymap for clicking on links in REPL.")
1382
1383(define-derived-mode intero-repl-mode comint-mode "Intero-REPL"
1384 "Interactive prompt for Intero."
1385 (when (and (not (eq major-mode 'fundamental-mode))
1386 (eq this-command 'intero-repl-mode))
1387 (error "You probably meant to run: M-x intero-repl"))
1388 (setq-local comint-prompt-regexp intero-prompt-regexp)
1389 (setq-local warning-suppress-types (cons '(undo discard-info) warning-suppress-types))
1390 (setq-local comint-prompt-read-only t)
1391 (add-hook 'completion-at-point-functions 'intero-repl-completion-at-point nil t)
1392 (company-mode))
1393
1394(defun intero-repl-mode-start (backend-buffer targets prompt-options stack-yaml)
1395 "Start the process for the repl in the current buffer.
1396BACKEND-BUFFER is used for options. TARGETS is the targets to
1397load. If PROMPT-OPTIONS is non-nil, prompt with an options list.
1398STACK-YAML is the stack yaml config to use. When nil, tries to
1399use project-wide intero-stack-yaml when nil, otherwise uses
1400stack's default)."
1401 (setq intero-targets targets)
1402 (setq intero-repl-last-loaded nil)
1403 (when stack-yaml
1404 (setq intero-stack-yaml stack-yaml))
1405 (when prompt-options
1406 (intero-repl-options backend-buffer))
1407 (let ((stack-yaml (if stack-yaml
1408 stack-yaml
1409 (buffer-local-value 'intero-stack-yaml backend-buffer)))
1410 (arguments (intero-make-options-list
1411 "ghci"
1412 (or targets
1413 (let ((package-name (buffer-local-value 'intero-package-name
1414 backend-buffer)))
1415 (unless (equal "" package-name)
1416 (list package-name))))
1417 (buffer-local-value 'intero-repl-no-build backend-buffer)
1418 (buffer-local-value 'intero-repl-no-load backend-buffer)
1419 nil
1420 stack-yaml)))
1421 (insert (propertize
1422 (format "Starting:\n %s ghci %s\n" intero-stack-executable
1423 (combine-and-quote-strings arguments))
1424 'face 'font-lock-comment-face))
1425 (let* ((script-buffer
1426 (with-current-buffer (find-file-noselect (intero-make-temp-file "intero-script"))
1427 ;; Commented out this line due to this bug:
1428 ;; https://github.com/chrisdone/intero/issues/569
1429 ;; GHC 8.4.3 has some bug causing a panic on GHCi.
1430 ;; :set -fdefer-type-errors
1431 (insert ":set prompt \"\"
1432:set -fbyte-code
1433:set -fdiagnostics-color=never
1434:set prompt \"\\4 \"
1435")
1436 (basic-save-buffer)
1437 (current-buffer)))
1438 (script
1439 (with-current-buffer script-buffer
1440 (intero-localize-path (intero-buffer-file-name)))))
1441 (let ((process
1442 (get-buffer-process
1443 (apply #'make-comint-in-buffer "intero" (current-buffer) intero-stack-executable nil "ghci"
1444 (append arguments
1445 (list "--verbosity" "silent")
1446 (list "--ghci-options"
1447 (concat "-ghci-script=" script))
1448 (cl-mapcan (lambda (x) (list "--ghci-options" x)) intero-extra-ghci-options))))))
1449 (when (process-live-p process)
1450 (set-process-query-on-exit-flag process nil)
1451 (message "Started Intero process for REPL.")
1452 (kill-buffer script-buffer))))))
1453
1454(defun intero-repl-options (backend-buffer)
1455 "Open an option menu to set options used when starting the REPL.
1456Default options come from user customization and any temporary
1457changes in the BACKEND-BUFFER."
1458 (interactive)
1459 (let* ((old-options
1460 (list
1461 (list :key "load-all"
1462 :title "Load all modules"
1463 :default (not (buffer-local-value 'intero-repl-no-load backend-buffer)))
1464 (list :key "build-first"
1465 :title "Build project first"
1466 :default (not (buffer-local-value 'intero-repl-no-build backend-buffer)))))
1467 (new-options (intero-multiswitch "Start REPL with options:" old-options)))
1468 (with-current-buffer backend-buffer
1469 (setq-local intero-repl-no-load (not (member "load-all" new-options)))
1470 (setq-local intero-repl-no-build (not (member "build-first" new-options))))))
1471
1472(font-lock-add-keywords
1473 'intero-repl-mode
1474 '(("\\(\4\\)"
1475 (0 (prog1 ()
1476 (compose-region (match-beginning 1)
1477 (match-end 1)
1478 ?λ))))))
1479
1480(define-key intero-repl-mode-map [remap move-beginning-of-line] 'intero-repl-beginning-of-line)
1481(define-key intero-repl-mode-map [remap delete-backward-char] 'intero-repl-delete-backward-char)
1482(define-key intero-repl-mode-map (kbd "C-c C-k") 'intero-repl-clear-buffer)
1483(define-key intero-repl-mode-map (kbd "C-c C-z") 'intero-repl-switch-back)
1484
1485(defun intero-repl-delete-backward-char ()
1486 "Delete backwards, excluding the prompt."
1487 (interactive)
1488 (unless (looking-back intero-prompt-regexp (line-beginning-position))
1489 (call-interactively 'delete-backward-char)))
1490
1491(defun intero-repl-beginning-of-line ()
1492 "Go to the beginning of the line, excluding the prompt."
1493 (interactive)
1494 (if (search-backward-regexp intero-prompt-regexp (line-beginning-position) t 1)
1495 (goto-char (+ 2 (line-beginning-position)))
1496 (call-interactively 'move-beginning-of-line)))
1497
1498(defun intero-repl-switch-back ()
1499 "Switch back to the buffer from which this REPL buffer was reached."
1500 (interactive)
1501 (if intero-repl-previous-buffer
1502 (switch-to-buffer-other-window intero-repl-previous-buffer)
1503 (message "No previous buffer.")))
1504
1505;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1506;; Buffer operations
1507
1508(defun intero-thing-at-point ()
1509 "Return (list START END) of something at the point."
1510 (if (region-active-p)
1511 (list (region-beginning)
1512 (region-end))
1513 (let ((pos (intero-ident-pos-at-point)))
1514 (if pos
1515 (list (car pos) (cdr pos))
1516 (list (point) (point))))))
1517
1518(defun intero-ident-at-point ()
1519 "Return the identifier under point, or nil if none found.
1520May return a qualified name."
1521 (let ((reg (intero-ident-pos-at-point)))
1522 (when reg
1523 (buffer-substring-no-properties (car reg) (cdr reg)))))
1524
1525(defun intero-ident-pos-at-point ()
1526 "Return the span of the identifier near point going backward.
1527Returns nil if no identifier found or point is inside string or
1528comment. May return a qualified name."
1529 (when (not (nth 8 (syntax-ppss)))
1530 ;; Do not handle comments and strings
1531 (let (start end)
1532 ;; Initial point position is non-deterministic, it may occur anywhere
1533 ;; inside identifier span, so the approach is:
1534 ;; - first try go left and find left boundary
1535 ;; - then try go right and find right boundary
1536 ;;
1537 ;; In both cases assume the longest path, e.g. when going left take into
1538 ;; account than point may occur at the end of identifier, when going right
1539 ;; take into account that point may occur at the beginning of identifier.
1540 ;;
1541 ;; We should handle `.` character very careful because it is heavily
1542 ;; overloaded. Examples of possible cases:
1543 ;; Control.Monad.>>= -- delimiter
1544 ;; Control.Monad.when -- delimiter
1545 ;; Data.Aeson..: -- delimiter and operator symbol
1546 ;; concat.map -- composition function
1547 ;; .? -- operator symbol
1548 (save-excursion
1549 ;; First, skip whitespace if we're on it, moving point to last
1550 ;; identifier char. That way, if we're at "map ", we'll see the word
1551 ;; "map".
1552 (when (and (looking-at-p (rx eol))
1553 (not (bolp)))
1554 (backward-char))
1555 (when (and (not (eobp))
1556 (eq (char-syntax (char-after)) ? ))
1557 (skip-chars-backward " \t")
1558 (backward-char))
1559 ;; Now let's try to go left.
1560 (save-excursion
1561 (if (not (intero-mode--looking-at-varsym))
1562 ;; Looking at non-operator char, this is quite simple
1563 (progn
1564 (skip-syntax-backward "w_")
1565 ;; Remember position
1566 (setq start (point)))
1567 ;; Looking at operator char.
1568 (while (and (not (bobp))
1569 (intero-mode--looking-at-varsym))
1570 ;; skip all operator chars backward
1571 (setq start (point))
1572 (backward-char))
1573 ;; Extra check for case when reached beginning of the buffer.
1574 (when (intero-mode--looking-at-varsym)
1575 (setq start (point))))
1576 ;; Slurp qualification part if present. If identifier is qualified in
1577 ;; case of non-operator point will stop before `.` dot, but in case of
1578 ;; operator it will stand at `.` delimiting dot. So if we're looking
1579 ;; at `.` let's step one char forward and try to get qualification
1580 ;; part.
1581 (goto-char start)
1582 (when (looking-at-p (rx "."))
1583 (forward-char))
1584 (let ((pos (intero-mode--skip-qualification-backward)))
1585 (when pos
1586 (setq start pos))))
1587 ;; Finally, let's try to go right.
1588 (save-excursion
1589 ;; Try to slurp qualification part first.
1590 (skip-syntax-forward "w_")
1591 (setq end (point))
1592 (while (and (looking-at-p (rx "." upper))
1593 (not (zerop (progn (forward-char)
1594 (skip-syntax-forward "w_")))))
1595 (setq end (point)))
1596 ;; If point was at non-operator we already done, otherwise we need an
1597 ;; extra check.
1598 (while (intero-mode--looking-at-varsym)
1599 (forward-char)
1600 (setq end (point))))
1601 (when (not (= start end))
1602 (cons start end))))))
1603
1604(defun intero-mode--looking-at-varsym ()
1605 "Return t when point stands at operator symbol."
1606 (when (not (eobp))
1607 (let ((lex (intero-lexeme-classify-by-first-char (char-after))))
1608 (or (eq lex 'varsym)
1609 (eq lex 'consym)))))
1610
1611(defun intero-mode--skip-qualification-backward ()
1612 "Skip qualified part of identifier backward.
1613Expects point stands *after* delimiting dot.
1614Returns beginning position of qualified part or nil if no qualified part found."
1615 (when (not (and (bobp)
1616 (looking-at-p (rx bol))))
1617 (let ((case-fold-search nil)
1618 pos)
1619 (while (and (eq (char-before) ?.)
1620 (progn (backward-char)
1621 (not (zerop (skip-syntax-backward "w'"))))
1622 (skip-syntax-forward "'")
1623 (looking-at-p "[[:upper:]]"))
1624 (setq pos (point)))
1625 pos)))
1626
1627(defun intero-lexeme-classify-by-first-char (char)
1628 "Classify token by CHAR.
1629CHAR is a chararacter that is assumed to be the first character
1630of a token."
1631 (let ((category (get-char-code-property char 'general-category)))
1632
1633 (cond
1634 ((or (member char '(?! ?# ?$ ?% ?& ?* ?+ ?. ?/ ?< ?= ?> ?? ?@ ?^ ?| ?~ ?\\ ?-))
1635 (and (> char 127)
1636 (member category '(Pc Pd Po Sm Sc Sk So))))
1637 'varsym)
1638 ((equal char ?:)
1639 'consym)
1640 ((equal char ?\')
1641 'char)
1642 ((equal char ?\")
1643 'string)
1644 ((member category '(Lu Lt))
1645 'conid)
1646 ((or (equal char ?_)
1647 (member category '(Ll Lo)))
1648 'varid)
1649 ((and (>= char ?0) (<= char ?9))
1650 'number)
1651 ((member char '(?\] ?\[ ?\( ?\) ?\{ ?\} ?\` ?\, ?\;))
1652 'special))))
1653
1654(defun intero-buffer-file-name (&optional buffer)
1655 "Call function `buffer-file-name' for BUFFER and clean its result.
1656The path returned is canonicalized and stripped of any text properties."
1657 (let ((name (buffer-file-name buffer)))
1658 (when name
1659 (intero-canonicalize-path (substring-no-properties name)))))
1660
1661(defun intero-paths-for-same-file (path-1 path-2)
1662 "Compare PATH-1 and PATH-2 to see if they represent the same file."
1663 (let ((simplify-path #'(lambda (path)
1664 (if (tramp-tramp-file-p path)
1665 (let* ((dissection (tramp-dissect-file-name path))
1666 (host (tramp-file-name-host dissection))
1667 (localname (tramp-file-name-localname dissection)))
1668 (concat host ":" localname))
1669 (expand-file-name path)))))
1670 (string= (funcall simplify-path path-1) (funcall simplify-path path-2))))
1671
1672(defun intero-buffer-host (&optional buffer)
1673 "Get the hostname of the box hosting the file behind the BUFFER."
1674 (with-current-buffer (or buffer (current-buffer))
1675 (let ((file (intero-buffer-file-name)))
1676 (if intero-buffer-host
1677 intero-buffer-host
1678 (setq intero-buffer-host
1679 (when file
1680 (if (tramp-tramp-file-p file)
1681 (tramp-file-name-host (tramp-dissect-file-name file))
1682 "")))))))
1683
1684(defun intero-extend-path-by-buffer-host (path &optional buffer)
1685 "Take a PATH, and extend it by the host of the provided BUFFER (default to current buffer). Return PATH unchanged if the file is local, or the BUFFER has no host."
1686 (with-current-buffer (or buffer (current-buffer))
1687 (if (or (eq nil (intero-buffer-host)) (eq "" (intero-buffer-host)))
1688 path
1689 (expand-file-name
1690 (concat "/"
1691 (intero-buffer-host)
1692 ":"
1693 path)))))
1694
1695(defvar-local intero-temp-file-name nil
1696 "The name of a temporary file to which the current buffer's content is copied.")
1697
1698(defun intero-temp-file-p (path)
1699 "Is PATH a temp file?"
1700 (string= (file-name-directory path)
1701 (file-name-directory (intero-temp-file-dir))))
1702
1703(defun intero-temp-file-origin-buffer (temp-file)
1704 "Get the original buffer that TEMP-FILE was created for."
1705 (or
1706 (gethash (intero-canonicalize-path temp-file)
1707 intero-temp-file-buffer-mapping)
1708 (cl-loop
1709 for buffer in (buffer-list)
1710 when (string= (intero-canonicalize-path temp-file)
1711 (buffer-local-value 'intero-temp-file-name buffer))
1712 return buffer)))
1713
1714(defun intero-unmangle-file-path (file)
1715 "If FILE is an intero temp file, return the original source path, otherwise FILE."
1716 (or (when (intero-temp-file-p file)
1717 (let ((origin-buffer (intero-temp-file-origin-buffer file)))
1718 (when origin-buffer
1719 (buffer-file-name origin-buffer))))
1720 file))
1721
1722(defun intero-make-temp-file (prefix &optional dir-flag suffix)
1723 "Like `make-temp-file', but using a different temp directory.
1724PREFIX, DIR-FLAG and SUFFIX are all passed to `make-temp-file'
1725unmodified. A different directory is applied so that if docker
1726is used with stack, the commands run inside docker can find the
1727path."
1728 (let ((temporary-file-directory
1729 (intero-temp-file-dir)))
1730 (make-directory temporary-file-directory t)
1731 (make-temp-file prefix dir-flag suffix)))
1732
1733(defun intero-temp-file-dir ()
1734 "Get the temporary file directory for the current intero project."
1735 (let* ((intero-absolute-project-root
1736 (intero-extend-path-by-buffer-host (intero-project-root)))
1737 (temporary-file-directory
1738 (expand-file-name ".stack-work/intero/"
1739 intero-absolute-project-root)))
1740 temporary-file-directory))
1741
1742(defun intero-temp-file-name (&optional buffer)
1743 "Return the name of a temp file pertaining to BUFFER."
1744 (with-current-buffer (or buffer (current-buffer))
1745 (or intero-temp-file-name
1746 (progn (setq intero-temp-file-name
1747 (intero-canonicalize-path
1748 (intero-make-temp-file
1749 "intero" nil
1750 (concat "-TEMP." (if (buffer-file-name)
1751 (file-name-extension (buffer-file-name))
1752 "hs")))))
1753 (puthash intero-temp-file-name
1754 (current-buffer)
1755 intero-temp-file-buffer-mapping)
1756 intero-temp-file-name))))
1757
1758(defun intero-staging-file-name (&optional buffer)
1759 "Return the name of a temp file containing an up-to-date copy of BUFFER's contents."
1760 (with-current-buffer (or buffer (current-buffer))
1761 (let* ((contents (buffer-string))
1762 (fname (intero-canonicalize-path
1763 (intero-make-temp-file
1764 "intero" nil
1765 (concat "-STAGING." (if (buffer-file-name)
1766 (file-name-extension (buffer-file-name))
1767 "hs"))))))
1768 (with-temp-file fname
1769 (insert contents))
1770 fname)))
1771
1772(defun intero-quote-path-for-ghci (path)
1773 "Quote PATH as necessary so that it can be passed to a GHCi :command."
1774 (concat "\"" (replace-regexp-in-string "\\([\\\"]\\)" "\\\\\\1" path nil nil) "\""))
1775
1776(defun intero-path-for-ghci (path)
1777 "Turn a possibly-remote PATH into one that can be passed to a GHCi :command."
1778 (intero-quote-path-for-ghci (intero-localize-path path)))
1779
1780(defun intero-localize-path (path)
1781 "Turn a possibly-remote PATH to a purely local one.
1782This is used to create paths which a remote intero process can load."
1783 (if (tramp-tramp-file-p path)
1784 (tramp-file-name-localname (tramp-dissect-file-name path))
1785 path))
1786
1787(defun intero-canonicalize-path (path)
1788 "Return a standardized version of PATH.
1789Path names are standardised and drive names are
1790capitalized (relevant on Windows)."
1791 (intero-capitalize-drive-letter (convert-standard-filename path)))
1792
1793(defun intero-capitalize-drive-letter (path)
1794 "Ensures the drive letter is capitalized in PATH.
1795This applies to paths of the form
1796x:\\foo\\bar (i.e., Windows)."
1797 (save-match-data
1798 (let ((drive-path (split-string path ":\\\\")))
1799 (if (or (null (car drive-path)) (null (cdr drive-path)))
1800 path
1801 (concat (upcase (car drive-path)) ":\\" (cadr drive-path))))))
1802
1803;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1804;; Query/commands
1805
1806(defun intero-get-all-types ()
1807 "Get all types in all expressions in all modules."
1808 (intero-blocking-network-call 'backend ":all-types"))
1809
1810(defun intero-get-type-at (beg end)
1811 "Get the type at the given region denoted by BEG and END."
1812 (let ((result (intero-get-type-at-helper beg end)))
1813 (if (string-match (regexp-quote "Couldn't guess that module name. Does it exist?")
1814 result)
1815 (progn (flycheck-buffer)
1816 (message "No type information yet, compiling module ...")
1817 (intero-get-type-at-helper-process beg end))
1818 result)))
1819
1820(defun intero-get-type-at-helper (beg end)
1821 (replace-regexp-in-string
1822 "\n$" ""
1823 (intero-blocking-network-call
1824 'backend
1825 (intero-format-get-type-at beg end))))
1826
1827(defun intero-get-type-at-helper-process (beg end)
1828 (replace-regexp-in-string
1829 "\n$" ""
1830 (intero-blocking-call
1831 'backend
1832 (intero-format-get-type-at beg end))))
1833
1834(defun intero-get-type-at-async (cont beg end)
1835 "Call CONT with type of the region denoted by BEG and END.
1836CONT is called within the current buffer, with BEG, END and the
1837type as arguments."
1838 (intero-async-network-call
1839 'backend
1840 (intero-format-get-type-at beg end)
1841 (list :cont cont
1842 :source-buffer (current-buffer)
1843 :beg beg
1844 :end end)
1845 (lambda (state reply)
1846 (with-current-buffer (plist-get state :source-buffer)
1847 (funcall (plist-get state :cont)
1848 (plist-get state :beg)
1849 (plist-get state :end)
1850 (replace-regexp-in-string "\n$" "" reply))))))
1851
1852(defun intero-format-get-type-at (beg end)
1853 "Compose a request for getting types in region from BEG to END."
1854 (format ":type-at %s %d %d %d %d %S"
1855 (intero-path-for-ghci (intero-temp-file-name))
1856 (save-excursion (goto-char beg)
1857 (line-number-at-pos))
1858 (save-excursion (goto-char beg)
1859 (1+ (current-column)))
1860 (save-excursion (goto-char end)
1861 (line-number-at-pos))
1862 (save-excursion (goto-char end)
1863 (1+ (current-column)))
1864 (buffer-substring-no-properties beg end)))
1865
1866(defun intero-get-info-of (thing)
1867 "Get info for THING."
1868 (let ((optimistic-result
1869 (replace-regexp-in-string
1870 "\n$" ""
1871 (intero-blocking-call
1872 'backend
1873 (format ":info %s" thing)))))
1874 (if (string-match-p "^<interactive>" optimistic-result)
1875 ;; Load the module Interpreted so that we get information,
1876 ;; then restore bytecode.
1877 (progn (intero-async-call
1878 'backend
1879 ":set -fbyte-code")
1880 (set-buffer-modified-p t)
1881 (save-buffer)
1882 (unless (member 'save flycheck-check-syntax-automatically)
1883 (intero-async-call
1884 'backend
1885 (concat ":load " (intero-path-for-ghci (intero-temp-file-name)))))
1886 (intero-async-call
1887 'backend
1888 ":set -fobject-code")
1889 (replace-regexp-in-string
1890 "\n$" ""
1891 (intero-blocking-call
1892 'backend
1893 (format ":info %s" thing))))
1894 optimistic-result)))
1895
1896(defconst intero-unloaded-module-string "Couldn't guess that module name. Does it exist?")
1897
1898(defun intero-get-loc-at (beg end)
1899 "Get the location of the identifier denoted by BEG and END."
1900 (let ((result (intero-get-loc-at-helper beg end)))
1901 (if (string-match (regexp-quote intero-unloaded-module-string)
1902 result)
1903 (progn (flycheck-buffer)
1904 (message "No location information yet, compiling module ...")
1905 (intero-get-loc-at-helper-process beg end))
1906 result)))
1907
1908(defun intero-get-loc-at-helper (beg end)
1909 "Make the blocking call to the process."
1910 (replace-regexp-in-string
1911 "\n$" ""
1912 (intero-blocking-network-call
1913 'backend
1914 (format ":loc-at %s %d %d %d %d %S"
1915 (intero-path-for-ghci (intero-temp-file-name))
1916 (save-excursion (goto-char beg)
1917 (line-number-at-pos))
1918 (save-excursion (goto-char beg)
1919 (1+ (current-column)))
1920 (save-excursion (goto-char end)
1921 (line-number-at-pos))
1922 (save-excursion (goto-char end)
1923 (1+ (current-column)))
1924 (buffer-substring-no-properties beg end)))))
1925
1926(defun intero-get-loc-at-helper-process (beg end)
1927 "Make the blocking call to the process."
1928 (replace-regexp-in-string
1929 "\n$" ""
1930 (intero-blocking-call
1931 'backend
1932 (format ":loc-at %s %d %d %d %d %S"
1933 (intero-path-for-ghci (intero-temp-file-name))
1934 (save-excursion (goto-char beg)
1935 (line-number-at-pos))
1936 (save-excursion (goto-char beg)
1937 (1+ (current-column)))
1938 (save-excursion (goto-char end)
1939 (line-number-at-pos))
1940 (save-excursion (goto-char end)
1941 (1+ (current-column)))
1942 (buffer-substring-no-properties beg end)))))
1943
1944(defun intero-get-uses-at (beg end)
1945 "Return usage list for identifier denoted by BEG and END."
1946 (let ((result (intero-get-uses-at-helper beg end)))
1947 (if (string-match (regexp-quote intero-unloaded-module-string)
1948 result)
1949 (progn (flycheck-buffer)
1950 (message "No use information yet, compiling module ...")
1951 (intero-get-uses-at-helper-process beg end))
1952 result)))
1953
1954(defun intero-get-uses-at-helper (beg end)
1955 "Return usage list for identifier denoted by BEG and END."
1956 (replace-regexp-in-string
1957 "\n$" ""
1958 (intero-blocking-network-call
1959 'backend
1960 (format ":uses %s %d %d %d %d %S"
1961 (intero-path-for-ghci (intero-temp-file-name))
1962 (save-excursion (goto-char beg)
1963 (line-number-at-pos))
1964 (save-excursion (goto-char beg)
1965 (1+ (current-column)))
1966 (save-excursion (goto-char end)
1967 (line-number-at-pos))
1968 (save-excursion (goto-char end)
1969 (1+ (current-column)))
1970 (buffer-substring-no-properties beg end)))))
1971
1972(defun intero-get-uses-at-helper-process (beg end)
1973 "Return usage list for identifier denoted by BEG and END."
1974 (replace-regexp-in-string
1975 "\n$" ""
1976 (intero-blocking-call
1977 'backend
1978 (format ":uses %s %d %d %d %d %S"
1979 (intero-path-for-ghci (intero-temp-file-name))
1980 (save-excursion (goto-char beg)
1981 (line-number-at-pos))
1982 (save-excursion (goto-char beg)
1983 (1+ (current-column)))
1984 (save-excursion (goto-char end)
1985 (line-number-at-pos))
1986 (save-excursion (goto-char end)
1987 (1+ (current-column)))
1988 (buffer-substring-no-properties beg end)))))
1989
1990(defun intero-get-completions (source-buffer beg end cont)
1991 "Get completions and send to SOURCE-BUFFER.
1992Prefix is marked by positions BEG and END. Completions are
1993passed to CONT in SOURCE-BUFFER."
1994 (intero-async-network-call
1995 'backend
1996 (format ":complete-at %s %d %d %d %d %S"
1997 (intero-path-for-ghci (intero-temp-file-name))
1998 (save-excursion (goto-char beg)
1999 (line-number-at-pos))
2000 (save-excursion (goto-char beg)
2001 (1+ (current-column)))
2002 (save-excursion (goto-char end)
2003 (line-number-at-pos))
2004 (save-excursion (goto-char end)
2005 (1+ (current-column)))
2006 (buffer-substring-no-properties beg end))
2007 (list :cont cont :source-buffer source-buffer)
2008 (lambda (state reply)
2009 (with-current-buffer
2010 (plist-get state :source-buffer)
2011 (funcall
2012 (plist-get state :cont)
2013 (intero-completion-response-to-list reply))))))
2014
2015(defun intero-completion-response-to-list (reply)
2016 "Convert the REPLY from a backend completion to a list."
2017 (if (string-match-p "^*** Exception" reply)
2018 (list)
2019 (mapcar
2020 (lambda (x)
2021 (replace-regexp-in-string "\\\"" "" x))
2022 (split-string reply "\n" t))))
2023
2024(defun intero-get-repl-completions (source-buffer prefix cont)
2025 "Get REPL completions and send to SOURCE-BUFFER.
2026Completions for PREFIX are passed to CONT in SOURCE-BUFFER."
2027 (intero-async-call
2028 'backend
2029 (format ":complete repl %S" prefix)
2030 (list :cont cont :source-buffer source-buffer)
2031 (lambda (state reply)
2032 (with-current-buffer
2033 (plist-get state :source-buffer)
2034 (funcall
2035 (plist-get state :cont)
2036 (mapcar
2037 (lambda (x)
2038 (replace-regexp-in-string "\\\"" "" x))
2039 (cdr (split-string reply "\n" t))))))))
2040
2041;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2042;; Process communication
2043
2044(defun intero-call-process (program &optional infile destination display &rest args)
2045 "Synchronously call PROGRAM.
2046INFILE, DESTINATION, DISPLAY and ARGS are as for
2047'call-process'/'process-file'. Provides TRAMP compatibility for
2048'call-process'; when the 'default-directory' is on a remote
2049machine, PROGRAM is launched on that machine."
2050 (let ((process-args (append (list program infile destination display) args)))
2051 (apply 'process-file process-args)))
2052
2053(defun intero-call-stack (&optional infile destination display stack-yaml &rest args)
2054 "Synchronously call stack using the same arguments as `intero-call-process'.
2055INFILE, DESTINATION, DISPLAY and ARGS are as for
2056`call-process'/`process-file'. STACK-YAML specifies which stack
2057yaml config to use, or stack's default when nil."
2058 (let ((stack-yaml-args (when stack-yaml
2059 (list "--stack-yaml" stack-yaml))))
2060 (apply #'intero-call-process intero-stack-executable
2061 infile destination display
2062 (append stack-yaml-args args))))
2063
2064(defun intero-delete-worker (worker)
2065 "Delete the given WORKER."
2066 (when (intero-buffer-p worker)
2067 (with-current-buffer (intero-get-buffer-create worker)
2068 (when (get-buffer-process (current-buffer))
2069 (setq intero-deleting t)
2070 (kill-process (get-buffer-process (current-buffer)))
2071 (delete-process (get-buffer-process (current-buffer))))
2072 (kill-buffer (current-buffer)))))
2073
2074(defun intero-blocking-call (worker cmd)
2075 "Send WORKER the command string CMD and block pending its result."
2076 (let ((result (list nil)))
2077 (intero-async-call
2078 worker
2079 cmd
2080 result
2081 (lambda (result reply)
2082 (setf (car result) reply)))
2083 (let ((buffer (intero-buffer worker)))
2084 (while (not (null (buffer-local-value 'intero-callbacks buffer)))
2085 (sleep-for 0.0001)))
2086 (car result)))
2087
2088(defun intero-blocking-network-call (worker cmd)
2089 "Send WORKER the command string CMD via the network and block pending its result."
2090 (let ((result (list nil)))
2091 (intero-async-network-call
2092 worker
2093 cmd
2094 result
2095 (lambda (result reply)
2096 (setf (car result) reply)))
2097 (while (eq (car result) nil)
2098 (sleep-for 0.0001))
2099 (car result)))
2100
2101(defun intero-async-network-call (worker cmd &optional state callback)
2102 "Send WORKER the command string CMD, via a network connection.
2103The result, along with the given STATE, is passed to CALLBACK
2104as (CALLBACK STATE REPLY)."
2105 (if (file-remote-p default-directory)
2106 (intero-async-call worker cmd state callback)
2107 (let ((buffer (intero-buffer worker)))
2108 (if (and buffer (process-live-p (get-buffer-process buffer)))
2109 (with-current-buffer buffer
2110 (if intero-service-port
2111 (let* ((buffer (generate-new-buffer (format " intero-network:%S" worker)))
2112 (process
2113 (make-network-process
2114 :name (format "%S" worker)
2115 :buffer buffer
2116 :host 'local
2117 :service intero-service-port
2118 :family 'ipv4
2119 :nowait t
2120 :noquery t
2121 :sentinel 'intero-network-call-sentinel)))
2122 (with-current-buffer buffer
2123 (setq intero-async-network-cmd cmd)
2124 (setq intero-async-network-state state)
2125 (setq intero-async-network-worker worker)
2126 (setq intero-async-network-callback callback)))
2127 (progn (when intero-debug (message "No `intero-service-port', falling back ..."))
2128 (intero-async-call worker cmd state callback))))
2129 (error "Intero process is not running: run M-x intero-restart to start it")))))
2130
2131(defun intero-network-call-sentinel (process event)
2132 (pcase event
2133 ;; This event sometimes gets sent when (delete-process) is called, but
2134 ;; inconsistently. We can't rely on it for killing buffers, but we need to
2135 ;; handle the possibility.
2136 ("deleted\n")
2137
2138 ("open\n"
2139 (with-current-buffer (process-buffer process)
2140 (when intero-debug (message "Connected to service, sending %S" intero-async-network-cmd))
2141 (setq intero-async-network-connected t)
2142 (if intero-async-network-cmd
2143 (process-send-string process (concat intero-async-network-cmd "\n"))
2144 (delete-process process)
2145 (kill-buffer (process-buffer process)))))
2146 (_
2147 (with-current-buffer (process-buffer process)
2148 (if intero-async-network-connected
2149 (when intero-async-network-callback
2150 (when intero-debug (message "Calling callback with %S" (buffer-string)))
2151 (funcall intero-async-network-callback
2152 intero-async-network-state
2153 (buffer-string)))
2154 ;; We didn't successfully connect, so let's fallback to the
2155 ;; process pipe.
2156 (when intero-async-network-callback
2157 (when intero-debug (message "Failed to connect, falling back ... "))
2158 (setq intero-async-network-callback nil)
2159 (intero-async-call
2160 intero-async-network-worker
2161 intero-async-network-cmd
2162 intero-async-network-state
2163 intero-async-network-callback))))
2164 (delete-process process)
2165 (kill-buffer (process-buffer process)))))
2166
2167(defun intero-async-call (worker cmd &optional state callback)
2168 "Send WORKER the command string CMD.
2169The result, along with the given STATE, is passed to CALLBACK
2170as (CALLBACK STATE REPLY)."
2171 (let ((buffer (intero-buffer worker)))
2172 (if (and buffer (process-live-p (get-buffer-process buffer)))
2173 (progn (with-current-buffer buffer
2174 (setq intero-callbacks
2175 (append intero-callbacks
2176 (list (list state
2177 (or callback #'ignore)
2178 cmd)))))
2179 (when intero-debug
2180 (message "[Intero] -> %s" cmd))
2181 (comint-simple-send (intero-process worker) cmd))
2182 (error "Intero process is not running: run M-x intero-restart to start it"))))
2183
2184(defun intero-buffer (worker)
2185 "Get the WORKER buffer for the current directory."
2186 (let ((buffer (intero-get-buffer-create worker))
2187 (targets (buffer-local-value 'intero-targets (current-buffer))))
2188 (if (get-buffer-process buffer)
2189 buffer
2190 (intero-get-worker-create worker targets (current-buffer)
2191 (buffer-local-value
2192 'intero-stack-yaml (current-buffer))))))
2193
2194(defun intero-process (worker)
2195 "Get the WORKER process for the current directory."
2196 (get-buffer-process (intero-buffer worker)))
2197
2198(defun intero-get-worker-create (worker &optional targets source-buffer stack-yaml)
2199 "Start the given WORKER.
2200If provided, use the specified TARGETS, SOURCE-BUFFER and STACK-YAML."
2201 (let* ((buffer (intero-get-buffer-create worker)))
2202 (if (get-buffer-process buffer)
2203 buffer
2204 (let ((install-status (intero-installed-p)))
2205 (if (eq install-status 'installed)
2206 (intero-start-process-in-buffer buffer targets source-buffer stack-yaml)
2207 (intero-auto-install buffer install-status targets source-buffer stack-yaml))))))
2208
2209(defun intero-auto-install (buffer install-status &optional targets source-buffer stack-yaml)
2210 "Automatically install Intero appropriately for BUFFER.
2211INSTALL-STATUS indicates the current installation status.
2212If supplied, use the given TARGETS, SOURCE-BUFFER and STACK-YAML."
2213 (if (buffer-local-value 'intero-give-up buffer)
2214 buffer
2215 (let ((source-buffer (or source-buffer (current-buffer))))
2216 (switch-to-buffer buffer)
2217 (erase-buffer)
2218 (insert (cl-case install-status
2219 (not-installed "Intero is not installed in the Stack environment.")
2220 (wrong-version "The wrong version of Intero is installed for this Emacs package.")))
2221 (if (intero-version>= (intero-stack-version) '(1 6 1))
2222 (intero-copy-compiler-tool-auto-install source-buffer targets buffer)
2223 (intero-old-auto-install source-buffer targets buffer stack-yaml)))))
2224
2225(defun intero-copy-compiler-tool-auto-install (source-buffer targets buffer)
2226 "Automatically install Intero appropriately for BUFFER.
2227Use the given TARGETS, SOURCE-BUFFER and STACK-YAML."
2228 (let ((ghc-version (intero-ghc-version-raw)))
2229 (insert
2230 (format "
2231
2232Installing intero-%s for GHC %s ...
2233
2234" intero-package-version ghc-version))
2235 (redisplay)
2236 (cl-case
2237 (let ((default-directory (make-temp-file "intero" t)))
2238 (intero-call-stack
2239 nil (current-buffer) t nil "build"
2240 "--copy-compiler-tool"
2241 (concat "intero-" intero-package-version)
2242 "--flag" "haskeline:-terminfo"
2243 "--resolver" (concat "ghc-" ghc-version)
2244 "ghc-paths-0.1.0.9" "mtl-2.2.2" "network-2.7.0.0" "random-1.1" "syb-0.7"))
2245 (0
2246 (message "Installed successfully! Starting Intero in a moment ...")
2247 (bury-buffer buffer)
2248 (switch-to-buffer source-buffer)
2249 (intero-start-process-in-buffer buffer targets source-buffer))
2250 (1
2251 (with-current-buffer buffer (setq-local intero-give-up t))
2252 (insert (propertize "Could not install Intero!
2253
2254We don't know why it failed. Please read the above output and try
2255installing manually. If that doesn't work, report this as a
2256problem.
2257
2258Guess: You might need the \"tinfo\" package, e.g. libtinfo-dev.
2259
2260WHAT TO DO NEXT
2261
2262If you don't want to Intero to try installing itself again for
2263this project, just keep this buffer around in your Emacs.
2264
2265If you'd like to try again next time you try use an Intero
2266feature, kill this buffer.
2267"
2268 'face 'compilation-error))
2269 nil))))
2270
2271(defun intero-old-auto-install (source-buffer targets buffer stack-yaml)
2272 "Automatically install Intero appropriately for BUFFER.
2273Use the given TARGETS, SOURCE-BUFFER and STACK-YAML."
2274 (insert
2275 "
2276
2277Installing intero-%s automatically ...
2278
2279" intero-package-version)
2280 (redisplay)
2281 (cl-case (intero-call-stack
2282 nil (current-buffer) t stack-yaml
2283 "build"
2284 (with-current-buffer buffer
2285 (let* ((cabal-file (intero-cabal-find-file))
2286 (package-name (intero-package-name cabal-file)))
2287 ;; For local development. Most users'll
2288 ;; never hit this behaviour.
2289 (if (string= package-name "intero")
2290 "intero"
2291 (concat "intero-" intero-package-version))))
2292 "ghc-paths" "syb"
2293 "--flag" "haskeline:-terminfo")
2294 (0
2295 (message "Installed successfully! Starting Intero in a moment ...")
2296 (bury-buffer buffer)
2297 (switch-to-buffer source-buffer)
2298 (intero-start-process-in-buffer buffer targets source-buffer))
2299 (1
2300 (with-current-buffer buffer (setq-local intero-give-up t))
2301 (insert (propertize "Could not install Intero!
2302
2303We don't know why it failed. Please read the above output and try
2304installing manually. If that doesn't work, report this as a
2305problem.
2306
2307WHAT TO DO NEXT
2308
2309If you don't want to Intero to try installing itself again for
2310this project, just keep this buffer around in your Emacs.
2311
2312If you'd like to try again next time you try use an Intero
2313feature, kill this buffer.
2314"
2315 'face 'compilation-error))
2316 nil)))
2317
2318(defun intero-start-process-in-buffer (buffer &optional targets source-buffer stack-yaml)
2319 "Start an Intero worker in BUFFER.
2320Uses the specified TARGETS if supplied.
2321Automatically performs initial actions in SOURCE-BUFFER, if specified.
2322Uses the default stack config file, or STACK-YAML file if given."
2323 (if (buffer-local-value 'intero-give-up buffer)
2324 buffer
2325 (let* ((process-info (intero-start-piped-process buffer targets stack-yaml))
2326 (arguments (plist-get process-info :arguments))
2327 (options (plist-get process-info :options))
2328 (process (plist-get process-info :process)))
2329 (set-process-query-on-exit-flag process nil)
2330 (process-send-string process ":set -fobject-code\n")
2331 (process-send-string process ":set -fdefer-type-errors\n")
2332 (process-send-string process ":set -fdiagnostics-color=never\n")
2333 (process-send-string process ":set prompt \"\\4\"\n")
2334 (with-current-buffer buffer
2335 (erase-buffer)
2336 (when stack-yaml
2337 (setq intero-stack-yaml stack-yaml))
2338 (setq intero-targets targets)
2339 (setq intero-start-time (current-time))
2340 (setq intero-source-buffer source-buffer)
2341 (setq intero-arguments arguments)
2342 (setq intero-starting t)
2343 (setq intero-callbacks
2344 (list (list (cons source-buffer
2345 buffer)
2346 (lambda (buffers msg)
2347 (let ((source-buffer (car buffers))
2348 (process-buffer (cdr buffers)))
2349 (with-current-buffer process-buffer
2350 (when (string-match "^Intero-Service-Port: \\([0-9]+\\)\n" msg)
2351 (setq intero-service-port (string-to-number (match-string 1 msg))))
2352 (setq-local intero-starting nil))
2353 (when source-buffer
2354 (with-current-buffer source-buffer
2355 (when flycheck-mode
2356 (run-with-timer 0 nil
2357 'intero-call-in-buffer
2358 (current-buffer)
2359 'intero-flycheck-buffer)))))
2360 (message "Booted up intero!"))))))
2361 (set-process-filter
2362 process
2363 (lambda (process string)
2364 (when intero-debug
2365 (message "[Intero] <- %s" string))
2366 (when (buffer-live-p (process-buffer process))
2367 (with-current-buffer (process-buffer process)
2368 (goto-char (point-max))
2369 (insert string)
2370 (when (and intero-try-with-build
2371 intero-starting)
2372 (let ((last-line (buffer-substring-no-properties
2373 (line-beginning-position)
2374 (line-end-position))))
2375 (if (string-match-p "^Progress" last-line)
2376 (message "Booting up intero (building dependencies: %s)"
2377 (downcase
2378 (or (car (split-string (replace-regexp-in-string
2379 "\u0008+" "\n"
2380 last-line)
2381 "\n" t))
2382 "...")))
2383 (message "Booting up intero ..."))))
2384 (intero-read-buffer)))))
2385 (set-process-sentinel process 'intero-sentinel)
2386 buffer)))
2387
2388(defun intero-start-piped-process (buffer targets stack-yaml)
2389 "Start a piped process that we control in BUFFER.
2390Uses the specified TARGETS if supplied.
2391Uses the default stack config file, or STACK-YAML file if given."
2392 (let* ((options
2393 (intero-make-options-list
2394 (intero-executable-path stack-yaml)
2395 (or targets
2396 (let ((package-name (buffer-local-value 'intero-package-name buffer)))
2397 (unless (equal "" package-name)
2398 (list package-name))))
2399 (not (buffer-local-value 'intero-try-with-build buffer))
2400 t ;; pass --no-load to stack
2401 t ;; pass -ignore-dot-ghci to intero
2402 stack-yaml ;; let stack choose a default when nil
2403 ))
2404 (arguments (cons "ghci" options))
2405 (process
2406 (with-current-buffer buffer
2407 (when intero-debug
2408 (message "Intero arguments: %s" (combine-and-quote-strings arguments)))
2409 (message "Booting up intero ...")
2410 (apply #'start-file-process intero-stack-executable buffer intero-stack-executable
2411 arguments))))
2412 (list :arguments arguments
2413 :options options
2414 :process process)))
2415
2416(defun intero-flycheck-buffer ()
2417 "Run flycheck in the buffer.
2418Restarts flycheck in case there was a problem and flycheck is stuck."
2419 (flycheck-mode -1)
2420 (flycheck-mode)
2421 (flycheck-buffer))
2422
2423(defun intero-make-options-list (with-ghc targets no-build no-load ignore-dot-ghci stack-yaml)
2424 "Make the stack ghci options list.
2425TARGETS are the build targets. When non-nil, NO-BUILD and
2426NO-LOAD enable the correspondingly-named stack options. When
2427IGNORE-DOT-GHCI is non-nil, it enables the corresponding GHCI
2428option. STACK-YAML is the stack config file to use (or stack's
2429default when nil)."
2430 (append (when stack-yaml
2431 (list "--stack-yaml" stack-yaml))
2432 (list "--with-ghc"
2433 with-ghc
2434 "--docker-run-args=--interactive=true --tty=false"
2435 )
2436 (when no-build
2437 (list "--no-build"))
2438 (when no-load
2439 (list "--no-load"))
2440 (when ignore-dot-ghci
2441 (list "--ghci-options" "-ignore-dot-ghci"))
2442 (cl-mapcan (lambda (x) (list "--ghci-options" x)) intero-extra-ghc-options)
2443 targets))
2444
2445(defun intero-sentinel (process change)
2446 "Handle when PROCESS reports a CHANGE.
2447This is a standard process sentinel function."
2448 (when (buffer-live-p (process-buffer process))
2449 (unless (process-live-p process)
2450 (let ((buffer (process-buffer process)))
2451 (if (with-current-buffer buffer intero-deleting)
2452 (message "Intero process deleted.")
2453 (if (and (intero-unsatisfied-package-p buffer)
2454 (not (buffer-local-value 'intero-try-with-build buffer)))
2455 (progn (with-current-buffer buffer (setq-local intero-try-with-build t))
2456 (intero-start-process-in-buffer
2457 buffer
2458 (buffer-local-value 'intero-targets buffer)
2459 (buffer-local-value 'intero-source-buffer buffer)))
2460 (progn (with-current-buffer buffer (setq-local intero-give-up t))
2461 (intero-show-process-problem process change))))))))
2462
2463(defun intero-unsatisfied-package-p (buffer)
2464 "Return non-nil if BUFFER contain GHCi's unsatisfied package complaint."
2465 (with-current-buffer buffer
2466 (save-excursion
2467 (goto-char (point-min))
2468 (search-forward-regexp "cannot satisfy -package" nil t 1))))
2469
2470(defun intero-executable-path (stack-yaml)
2471 "The path for the intero executable."
2472 (intero-with-temp-buffer
2473 (cl-case (save-excursion
2474 (intero-call-stack
2475 nil (current-buffer) t intero-stack-yaml "path" "--compiler-tools-bin"))
2476 (0 (replace-regexp-in-string "[\r\n]+$" "/intero" (buffer-string)))
2477 (1 "intero"))))
2478
2479(defun intero-installed-p ()
2480 "Return non-nil if intero (of the right version) is installed in the stack environment."
2481 (redisplay)
2482 (intero-with-temp-buffer
2483 (if (= 0 (intero-call-stack
2484 nil t nil intero-stack-yaml
2485 "exec"
2486 "--verbosity" "silent"
2487 "--"
2488 (intero-executable-path intero-stack-yaml)
2489 "--version"))
2490 (progn
2491 (goto-char (point-min))
2492 ;; This skipping comes due to https://github.com/commercialhaskell/intero/pull/216/files
2493 (when (looking-at "Intero ")
2494 (goto-char (match-end 0)))
2495 ;;
2496 (if (string= (buffer-substring (point) (line-end-position))
2497 intero-package-version)
2498 'installed
2499 'wrong-version))
2500 'not-installed)))
2501
2502(defun intero-show-process-problem (process change)
2503 "Report to the user that PROCESS reported CHANGE, causing it to end."
2504 (message "Problem with Intero!")
2505 (switch-to-buffer (process-buffer process))
2506 (goto-char (point-max))
2507 (insert "\n---\n\n")
2508 (insert
2509 (propertize
2510 (concat
2511 "This is the buffer where Emacs talks to intero. It's normally hidden,
2512but a problem occcured.
2513
2514TROUBLESHOOTING
2515
2516It may be obvious if there is some text above this message
2517indicating a problem.
2518
2519If you do not wish to use Intero for some projects, see
2520https://github.com/commercialhaskell/intero#whitelistingblacklisting-projects
2521
2522The process ended. Here is the reason that Emacs gives us:
2523
2524"
2525 " " change
2526 "\n"
2527 "For troubleshooting purposes, here are the arguments used to launch intero:
2528
2529"
2530 (format " %s %s"
2531 intero-stack-executable
2532 (combine-and-quote-strings intero-arguments))
2533
2534 "
2535
2536It's worth checking that the correct stack executable is being
2537found on your path, or has been set via
2538`intero-stack-executable'. The executable being used now is:
2539
2540 "
2541 (executable-find intero-stack-executable)
2542 "
2543
2544WHAT TO DO NEXT
2545
2546If you fixed the problem, just kill this buffer, Intero will make
2547a fresh one and attempt to start the process automatically as
2548soon as you start editing code again.
2549
2550If you are unable to fix the problem, just leave this buffer
2551around in Emacs and Intero will not attempt to start the process
2552anymore.
2553
2554You can always run M-x intero-restart to make it try again.
2555
2556")
2557 'face 'compilation-error)))
2558
2559(defun intero-read-buffer ()
2560 "In the process buffer, we read what's in it."
2561 (let ((repeat t))
2562 (while repeat
2563 (setq repeat nil)
2564 (goto-char (point-min))
2565 (when (search-forward "\4" (point-max) t 1)
2566 (let* ((next-callback (pop intero-callbacks))
2567 (state (nth 0 next-callback))
2568 (func (nth 1 next-callback)))
2569 (let ((string (intero-strip-carriage-returns (buffer-substring (point-min) (1- (point))))))
2570 (if next-callback
2571 (progn (intero-with-temp-buffer
2572 (funcall func state string))
2573 (setq repeat t))
2574 (when intero-debug
2575 (intero--warn "Received output but no callback in `intero-callbacks': %S"
2576 string)))))
2577 (delete-region (point-min) (point))))))
2578
2579(defun intero-strip-carriage-returns (string)
2580 "Strip the \\r from Windows \\r\\n line endings in STRING."
2581 (replace-regexp-in-string "\r" "" string))
2582
2583(defun intero-get-buffer-create (worker)
2584 "Get or create the stack buffer for WORKER.
2585Uses the directory of the current buffer for context."
2586 (let* ((root (intero-extend-path-by-buffer-host (intero-project-root)))
2587 (cabal-file (intero-cabal-find-file))
2588 (package-name (if cabal-file
2589 (intero-package-name cabal-file)
2590 ""))
2591 (initial-buffer (current-buffer))
2592 (buffer-name (intero-buffer-name worker))
2593 (default-directory (if cabal-file
2594 (file-name-directory cabal-file)
2595 root)))
2596 (with-current-buffer
2597 (get-buffer-create buffer-name)
2598 (intero-inherit-local-variables initial-buffer)
2599 (setq intero-package-name package-name)
2600 (cd default-directory)
2601 (current-buffer))))
2602
2603(defun intero-gave-up (worker)
2604 "Return non-nil if starting WORKER or installing intero failed."
2605 (and (intero-buffer-p worker)
2606 (let ((buffer (get-buffer (intero-buffer-name worker))))
2607 (buffer-local-value 'intero-give-up buffer))))
2608
2609(defun intero-buffer-p (worker)
2610 "Return non-nil if a buffer exists for WORKER."
2611 (get-buffer (intero-buffer-name worker)))
2612
2613(defun intero-buffer-name (worker)
2614 "For a given WORKER, create a buffer name."
2615 (let* ((root (intero-project-root))
2616 (package-name (intero-package-name)))
2617 (concat " intero:"
2618 (format "%s" worker)
2619 ":"
2620 package-name
2621 " "
2622 root)))
2623
2624(defun intero-project-root ()
2625 "Get the current stack config directory.
2626This is the directory where the file specified in
2627`intero-stack-yaml' is located, or if nil then the directory
2628where stack.yaml is placed for this project, or the global one if
2629no such project-specific config exists."
2630 (if intero-project-root
2631 intero-project-root
2632 (let ((stack-yaml intero-stack-yaml))
2633 (setq intero-project-root
2634 (intero-with-temp-buffer
2635 (cl-case (save-excursion
2636 (intero-call-stack nil (current-buffer) nil stack-yaml
2637 "path"
2638 "--project-root"
2639 "--verbosity" "silent"))
2640 (0 (buffer-substring (line-beginning-position) (line-end-position)))
2641 (t (intero--warn "Couldn't get the Stack project root.
2642
2643This can be caused by a syntax error in your stack.yaml file. Check that out.
2644
2645If you do not wish to use Intero for some projects, see
2646https://github.com/commercialhaskell/intero#whitelistingblacklisting-projects
2647
2648Otherwise, please report this as a bug!
2649
2650For debugging purposes, try running the following in your terminal:
2651
2652%s path --project-root" intero-stack-executable)
2653 nil)))))))
2654
2655(defun intero-ghc-version ()
2656 "Get the GHC version used by the project, calls only once per backend."
2657 (with-current-buffer (intero-buffer 'backend)
2658 (or intero-ghc-version
2659 (setq intero-ghc-version
2660 (intero-ghc-version-raw)))))
2661
2662(defun intero-ghc-version-raw ()
2663 "Get the GHC version used by the project."
2664 (intero-with-temp-buffer
2665 (cl-case (save-excursion
2666 (intero-call-stack
2667 nil (current-buffer) t intero-stack-yaml
2668 "ghc" "--" "--numeric-version"))
2669 (0
2670 (buffer-substring (line-beginning-position) (line-end-position)))
2671 (1 nil))))
2672
2673(defun intero-version>= (new0 old0)
2674 "Is the version NEW >= OLD?"
2675 (or (and (null new0) (null old0))
2676 (let ((new (or new0 (list 0)))
2677 (old (or old0 (list 0))))
2678 (or (> (car new)
2679 (car old))
2680 (and (= (car new)
2681 (car old))
2682 (intero-version>= (cdr new)
2683 (cdr old)))))))
2684
2685(defun intero-stack-version ()
2686 "Get the version components of stack."
2687 (let* ((str (intero-stack-version-raw))
2688 (parts (mapcar #'string-to-number (split-string str "\\."))))
2689 parts))
2690
2691(defun intero-stack-version-raw ()
2692 "Get the Stack version in PATH."
2693 (intero-with-temp-buffer
2694 (cl-case (save-excursion
2695 (intero-call-stack
2696 nil (current-buffer) t intero-stack-yaml "--numeric-version"))
2697 (0
2698 (buffer-substring (line-beginning-position) (line-end-position)))
2699 (1 nil))))
2700
2701(defun intero-get-targets ()
2702 "Get all available targets."
2703 (with-current-buffer (intero-buffer 'backend)
2704 (intero-with-temp-buffer
2705 (cl-case (intero-call-stack nil (current-buffer) t
2706 intero-stack-yaml
2707 "ide" "targets")
2708 (0
2709 (cl-remove-if-not
2710 (lambda (line)
2711 (string-match-p "^[A-Za-z0-9-:_]+$" line))
2712 (split-string (buffer-string) "[\r\n]" t)))
2713 (1 nil)))))
2714
2715(defun intero-package-name (&optional cabal-file)
2716 "Get the current package name from a nearby .cabal file.
2717If there is none, return an empty string. If specified, use
2718CABAL-FILE rather than trying to locate one."
2719 (or intero-package-name
2720 (setq intero-package-name
2721 (let ((cabal-file (or cabal-file
2722 (intero-cabal-find-file))))
2723 (if cabal-file
2724 (replace-regexp-in-string
2725 ".cabal$" ""
2726 (file-name-nondirectory cabal-file))
2727 "")))))
2728
2729(defun intero-cabal-find-file (&optional dir)
2730 "Search for package description file upwards starting from DIR.
2731If DIR is nil, `default-directory' is used as starting point for
2732directory traversal. Upward traversal is aborted if file owner
2733changes. Uses `intero-cabal-find-pkg-desc' internally."
2734 (let ((use-dir (or dir default-directory)))
2735 (while (and use-dir (not (file-directory-p use-dir)))
2736 (setq use-dir (file-name-directory (directory-file-name use-dir))))
2737 (when use-dir
2738 (catch 'found
2739 (let ((user (nth 2 (file-attributes use-dir)))
2740 ;; Abbreviate, so as to stop when we cross ~/.
2741 (root (abbreviate-file-name use-dir)))
2742 ;; traverse current dir up to root as long as file owner doesn't change
2743 (while (and root (equal user (nth 2 (file-attributes root))))
2744 (let ((cabal-file (intero-cabal-find-pkg-desc root)))
2745 (when cabal-file
2746 (throw 'found cabal-file)))
2747
2748 (let ((proot (file-name-directory (directory-file-name root))))
2749 (if (equal proot root) ;; fix-point reached?
2750 (throw 'found nil)
2751 (setq root proot))))
2752 nil)))))
2753
2754(defun intero-cabal-find-pkg-desc (dir &optional allow-multiple)
2755 "Find a package description file in the directory DIR.
2756Returns nil if none or multiple \".cabal\" files were found. If
2757ALLOW-MULTIPLE is non nil, in case of multiple \".cabal\" files,
2758a list is returned instead of failing with a nil result."
2759 ;; This is basically a port of Cabal's
2760 ;; Distribution.Simple.Utils.findPackageDesc function
2761 ;; http://hackage.haskell.org/packages/archive/Cabal/1.16.0.3/doc/html/Distribution-Simple-Utils.html
2762 ;; but without the exception throwing.
2763 (let* ((cabal-files
2764 (cl-remove-if (lambda (path)
2765 (or (file-directory-p path)
2766 (not (file-exists-p path))))
2767 (directory-files dir t ".\\.cabal\\'" t))))
2768 (cond
2769 ((= (length cabal-files) 1) (car cabal-files)) ;; exactly one candidate found
2770 (allow-multiple cabal-files) ;; pass-thru multiple candidates
2771 (t nil))))
2772
2773;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2774;; Multiselection
2775
2776(defvar intero-multiswitch-keymap
2777 (let ((map (copy-keymap widget-keymap)))
2778 (define-key map (kbd "C-c C-c") 'exit-recursive-edit)
2779 (define-key map (kbd "C-c C-k") 'abort-recursive-edit)
2780 (define-key map (kbd "C-g") 'abort-recursive-edit)
2781 map))
2782
2783(defun intero-multiswitch (title options)
2784 "Displaying TITLE, read multiple flags from a list of OPTIONS.
2785Each option is a plist of (:key :default :title) wherein:
2786
2787 :key should be something comparable with EQUAL
2788 :title should be a string
2789 :default (boolean) specifies the default checkedness"
2790 (let ((available-width (window-total-width)))
2791 (save-window-excursion
2792 (intero-with-temp-buffer
2793 (rename-buffer (generate-new-buffer-name "multiswitch"))
2794 (widget-insert (concat title "\n\n"))
2795 (widget-insert (propertize "Select options with RET, hit " 'face 'font-lock-comment-face))
2796 (widget-create 'push-button :notify
2797 (lambda (&rest ignore)
2798 (exit-recursive-edit))
2799 "C-c C-c")
2800 (widget-insert (propertize " to apply these choices, or hit " 'face 'font-lock-comment-face))
2801 (widget-create 'push-button :notify
2802 (lambda (&rest ignore)
2803 (abort-recursive-edit))
2804 "C-c C-k")
2805 (widget-insert (propertize " to cancel.\n\n" 'face 'font-lock-comment-face))
2806 (let* ((me (current-buffer))
2807 (choices (mapcar (lambda (option)
2808 (append option (list :value (plist-get option :default))))
2809 options)))
2810 (cl-loop for option in choices
2811 do (widget-create
2812 'toggle
2813 :notify (lambda (widget &rest ignore)
2814 (setq choices
2815 (mapcar (lambda (choice)
2816 (if (equal (plist-get choice :key)
2817 (plist-get (cdr widget) :key))
2818 (plist-put choice :value (plist-get (cdr widget) :value))
2819 choice))
2820 choices)))
2821 :on (concat "[x] " (plist-get option :title))
2822 :off (concat "[ ] " (plist-get option :title))
2823 :value (plist-get option :default)
2824 :key (plist-get option :key)))
2825 (let ((lines (line-number-at-pos)))
2826 (select-window (split-window-below))
2827 (switch-to-buffer me)
2828 (goto-char (point-min)))
2829 (use-local-map intero-multiswitch-keymap)
2830 (widget-setup)
2831 (recursive-edit)
2832 (kill-buffer me)
2833 (mapcar (lambda (choice)
2834 (plist-get choice :key))
2835 (cl-remove-if-not (lambda (choice)
2836 (plist-get choice :value))
2837 choices)))))))
2838
2839;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2840;; Hoogle
2841
2842(defun intero-hoogle-blocking-query (query)
2843 "Make a request of QUERY using the local hoogle server.
2844If running, otherwise returns nil.
2845
2846It is the responsibility of the caller to make sure the server is
2847running; the user might not want to start the server
2848automatically."
2849 (let ((buffer (intero-hoogle-get-buffer)))
2850 (when buffer
2851 (let ((url (intero-hoogle-url buffer query)))
2852 (with-current-buffer (url-retrieve-synchronously url t)
2853 (search-forward "\n\n" nil t 1)
2854 (json-read-from-string
2855 (buffer-substring (line-beginning-position)
2856 (line-end-position))))))))
2857
2858(defun intero-hoogle-url (buffer query)
2859 "Via hoogle server BUFFER make the HTTP URL for QUERY."
2860 (format "http://127.0.0.1:%d/?hoogle=%s&mode=json"
2861 (buffer-local-value 'intero-hoogle-port buffer)
2862 (url-encode-url query)))
2863
2864(defun intero-hoogle-get-worker-create ()
2865 "Get or create the hoogle worker."
2866 (let* ((buffer (intero-hoogle-get-buffer-create)))
2867 (if (get-buffer-process buffer)
2868 buffer
2869 (intero-start-hoogle-process-in-buffer buffer))))
2870
2871(defun intero-start-hoogle-process-in-buffer (buffer)
2872 "Start the process in BUFFER, returning BUFFER."
2873 (let* ((port (intero-free-port))
2874 (process (with-current-buffer buffer
2875 (message "Booting up hoogle ...")
2876 (setq intero-hoogle-port port)
2877 (start-process "hoogle"
2878 buffer
2879 intero-stack-executable
2880 "hoogle"
2881 "server"
2882 "--no-setup"
2883 "--"
2884 "--local"
2885 "--port"
2886 (number-to-string port)))))
2887 (set-process-query-on-exit-flag process nil)
2888 (set-process-sentinel process 'intero-hoogle-sentinel)
2889 buffer))
2890
2891(defun intero-free-port ()
2892 "Get the next free port to use."
2893 (let ((proc (make-network-process
2894 :name "port-check"
2895 :family 'ipv4
2896 :host "127.0.0.1"
2897 :service t
2898 :server t)))
2899 (delete-process proc)
2900 (process-contact proc :service)))
2901
2902(defun intero-hoogle-sentinel (process change)
2903 "For the hoogle PROCESS there is a CHANGE to handle."
2904 (message "Hoogle sentinel: %S %S" process change))
2905
2906(defun intero-hoogle-get-buffer-create ()
2907 "Get or create the Hoogle buffer for the current stack project."
2908 (let* ((root (intero-project-root))
2909 (buffer-name (intero-hoogle-buffer-name root))
2910 (buf (get-buffer buffer-name))
2911 (initial-buffer (current-buffer))
2912 (default-directory root))
2913 (if buf
2914 buf
2915 (with-current-buffer (get-buffer-create buffer-name)
2916 (intero-inherit-local-variables initial-buffer)
2917 (cd default-directory)
2918 (current-buffer)))))
2919
2920(defun intero-hoogle-get-buffer ()
2921 "Get the Hoogle buffer for the current stack project."
2922 (let* ((root (intero-project-root))
2923 (buffer-name (intero-hoogle-buffer-name root)))
2924 (get-buffer buffer-name)))
2925
2926(defun intero-hoogle-buffer-name (root)
2927 "For a given worker, create a buffer name using ROOT."
2928 (concat "*Hoogle:" root "*"))
2929
2930(defun intero-hoogle-ready-p ()
2931 "Is hoogle ready to be started?"
2932 (intero-with-temp-buffer
2933 (cl-case (intero-call-stack nil (current-buffer) t intero-stack-yaml
2934 "hoogle" "--no-setup" "--verbosity" "silent")
2935 (0 t))))
2936
2937(defun intero-hoogle-supported-p ()
2938 "Is the stack hoogle command supported?"
2939 (intero-with-temp-buffer
2940 (cl-case (intero-call-stack nil (current-buffer) t
2941 intero-stack-yaml
2942 "hoogle" "--help")
2943 (0 t))))
2944
2945;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2946;; Collecting information from compiler messages
2947
2948(defun intero-collect-compiler-messages (msgs)
2949 "Collect information from compiler MSGS.
2950
2951This may update in-place the MSGS objects to hint that
2952suggestions are available."
2953 (setq intero-suggestions nil)
2954 (let ((extension-regex (concat " " (regexp-opt (intero-extensions) t) "\\>"))
2955 (quoted-symbol-regex "[‘`‛]\\([^ ]+\\)['’]"))
2956 (cl-loop
2957 for msg in msgs
2958 do (let ((text (flycheck-error-message msg))
2959 (note nil))
2960 ;; Messages of this format:
2961 ;;
2962 ;; • Constructor ‘Assert’ does not have the required strict field(s): assertName,
2963 ;; assertDoc, assertExpression,
2964 ;; assertSection
2965 (let ((start 0))
2966 (while (or
2967 (string-match "does not have the required strict field.*?:[\n\t\r ]" text start)
2968 (string-match "Fields of .*? not initialised:[\n\t\r ]" text start))
2969 (let* ((match-end (match-end 0))
2970 (fields
2971 (let ((reached-end nil))
2972 (mapcar
2973 (lambda (field)
2974 (with-temp-buffer
2975 (insert field)
2976 (goto-char (point-min))
2977 (intero-ident-at-point)))
2978 (cl-remove-if
2979 (lambda (field)
2980 (or reached-end
2981 (when (string-match "[\r\n]" field)
2982 (setq reached-end t)
2983 nil)))
2984 (split-string
2985 (substring text match-end)
2986 "[\n\t\r ]*,[\n\t\r ]*" t))))))
2987 (setq note t)
2988 (add-to-list
2989 'intero-suggestions
2990 (list :type 'add-missing-fields
2991 :fields fields
2992 :line (flycheck-error-line msg)
2993 :column (flycheck-error-column msg)))
2994 (setq start (min (length text) (1+ match-end))))))
2995
2996 ;; Messages of this format:
2997 ;;
2998 ;; Can't make a derived instance of ‘Functor X’:
2999 ;; You need DeriveFunctor to derive an instance for this class
3000 ;; Try GeneralizedNewtypeDeriving for GHC's newtype-deriving extension
3001 ;; In the newtype declaration for ‘X’
3002 (let ((start 0))
3003 (while (let ((case-fold-search nil))
3004 (string-match extension-regex text start))
3005 (setq note t)
3006 (add-to-list 'intero-suggestions
3007 (list :type 'add-extension
3008 :extension (match-string 1 text)))
3009 (setq start (min (length text) (1+ (match-end 0))))))
3010 ;; Messages of this format:
3011 ;;
3012 ;; Could not find module ‘Language.Haskell.TH’
3013 ;; It is a member of the hidden package ‘template-haskell’.
3014 ;; Use -v to see a list of the files searched for....
3015 (let ((start 0))
3016 (while (string-match "It is a member of the hidden package [‘`‛]\\([^ ]+\\)['’]" text start)
3017 (setq note t)
3018 (add-to-list 'intero-suggestions
3019 (list :type 'add-package
3020 :package (match-string 1 text)))
3021 (setq start (min (length text) (1+ (match-end 0))))))
3022 ;; Messages of this format:
3023 ;; Expected type: String
3024 ;; Actual type: Data.Text.Internal.Builder.Builder
3025 (let ((start 0))
3026 (while (or (string-match
3027 "Expected type: String" text start)
3028 (string-match
3029 "Actual type: String" text start)
3030 (string-match
3031 "Actual type: \\[Char\\]" text start)
3032 (string-match
3033 "Expected type: \\[Char\\]" text start))
3034 (setq note t)
3035 (add-to-list 'intero-suggestions
3036 (list :type 'add-extension
3037 :extension "OverloadedStrings"))
3038 (setq start (min (length text) (1+ (match-end 0))))))
3039 ;; Messages of this format:
3040 ;;
3041 ;; Defaulting the following constraint(s) to type ‘Integer’
3042 ;; (Num a0) arising from the literal ‘1’
3043 ;; In the expression: 2
3044 ;; In an equation for ‘x'’: x' = 2
3045 (let ((start 0))
3046 (while (string-match
3047 " Defaulting the following constraint" text start)
3048 (setq note t)
3049 (add-to-list 'intero-suggestions
3050 (list :type 'add-ghc-option
3051 :option "-fno-warn-type-defaults"))
3052 (setq start (min (length text) (1+ (match-end 0))))))
3053 ;; Messages of this format:
3054 ;;
3055 ;; This binding for ‘x’ shadows the existing binding
3056 (let ((start 0))
3057 (while (string-match
3058 " This binding for ‘\\(.*\\)’ shadows the existing binding" text start)
3059 (setq note t)
3060 (add-to-list 'intero-suggestions
3061 (list :type 'add-ghc-option
3062 :option "-fno-warn-name-shadowing"))
3063 (setq start (min (length text) (1+ (match-end 0))))))
3064 ;; Messages of this format:
3065 ;; Perhaps you want to add ‘foo’ to the import list
3066 ;; in the import of ‘Blah’
3067 ;; (/path/to/thing:19
3068 (when (string-match "Perhaps you want to add [‘`‛]\\([^ ]+\\)['’][\n ]+to[\n ]+the[\n ]+import[\n ]+list[\n ]+in[\n ]+the[\n ]+import[\n ]+of[\n ]+[‘`‛]\\([^ ]+\\)['’][\n ]+(\\([^ ]+\\):(?\\([0-9]+\\)[:,]"
3069 text)
3070 (let ((ident (match-string 1 text))
3071 (module (match-string 2 text))
3072 (file (match-string 3 text))
3073 (line (string-to-number (match-string 4 text))))
3074 (setq note t)
3075 (add-to-list 'intero-suggestions
3076 (list :type 'add-to-import
3077 :module module
3078 :ident ident
3079 :line line))))
3080 ;; Messages of this format:
3081 ;;
3082 ;; The import of ‘Control.Monad’ is redundant
3083 ;; except perhaps to import instances from ‘Control.Monad’
3084 ;; To import instances alone, use: import Control.Monad()... (intero)
3085 (when (string-match
3086 " The \\(qualified \\)?import of[ ][‘`‛]\\([^ ]+\\)['’] is redundant"
3087 text)
3088 (setq note t)
3089 (add-to-list 'intero-suggestions
3090 (list :type 'remove-import
3091 :module (match-string 2 text)
3092 :line (flycheck-error-line msg))))
3093 ;; Messages of this format:
3094 ;;
3095 ;; Not in scope: ‘putStrn’
3096 ;; Perhaps you meant one of these:
3097 ;; ‘putStr’ (imported from Prelude),
3098 ;; ‘putStrLn’ (imported from Prelude)
3099 ;;
3100 ;; Or this format:
3101 ;;
3102 ;; error:
3103 ;; • Variable not in scope: lopSetup :: [Statement Exp']
3104 ;; • Perhaps you meant ‘loopSetup’ (line 437)
3105 (when (string-match
3106 "[Nn]ot in scope: \\(data constructor \\|type constructor or class \\)?[‘`‛]?\\([^'’ ]+\\).*\n.*Perhaps you meant"
3107 text)
3108 (let ((typo (match-string 2 text))
3109 (start (min (length text) (1+ (match-end 0)))))
3110 (while (string-match quoted-symbol-regex text start)
3111 (setq note t)
3112 (add-to-list 'intero-suggestions
3113 (list :type 'fix-typo
3114 :typo typo
3115 :replacement (match-string 1 text)
3116 :column (flycheck-error-column msg)
3117 :line (flycheck-error-line msg)))
3118 (setq start (min (length text) (1+ (match-end 0)))))))
3119 ;; Messages of this format:
3120 ;;
3121 ;; Top-level binding with no type signature: main :: IO ()
3122 (when (string-match
3123 "Top-level binding with no type signature:"
3124 text)
3125 (let ((start (min (length text) (match-end 0))))
3126 (setq note t)
3127 (add-to-list 'intero-suggestions
3128 (list :type 'add-signature
3129 :signature (mapconcat #'identity (split-string (substring text start)) " ")
3130 :line (flycheck-error-line msg)))))
3131 ;; Messages of this format:
3132 (when (string-match "The import of [‘`‛]\\(.+?\\)[’`'][\n ]+from[\n ]+module[\n ]+[‘`‛]\\(.+?\\)[’`'][\n ]+is[\n ]+redundant" text)
3133 (let ((module (match-string 2 text))
3134 (idents (split-string (match-string 1 text) "," t "[ \n]+")))
3135 (setq note t)
3136 (add-to-list 'intero-suggestions
3137 (list :type 'redundant-import-item
3138 :idents idents
3139 :line (flycheck-error-line msg)
3140 :module module))))
3141 ;; Messages of this format:
3142 ;;
3143 ;; Redundant constraints: (Arith var, Bitwise var)
3144 ;; Or
3145 ;; Redundant constraint: Arith var
3146 ;; Or
3147 ;; Redundant constraints: (Arith var,
3148 ;; Bitwise var,
3149 ;; Functor var,
3150 ;; Applicative var,
3151 ;; Monad var)
3152 (when (string-match "Redundant constraints?: " text)
3153 (let* ((redundant-start (match-end 0))
3154 (parts (intero-with-temp-buffer
3155 (insert (substring text redundant-start))
3156 (goto-char (point-min))
3157 ;; A lone unparenthesized constraint might
3158 ;; be multiple sexps.
3159 (while (not (eq (point) (point-at-eol)))
3160 (forward-sexp))
3161 (let ((redundant-end (point)))
3162 (search-forward-regexp ".*\n.*In the ")
3163 (cons (buffer-substring (point-min) redundant-end)
3164 (buffer-substring (match-end 0) (point-max)))))))
3165 (setq note t)
3166 (add-to-list
3167 'intero-suggestions
3168 (let ((rest (cdr parts))
3169 (redundant (let ((raw (car parts)))
3170 (if (eq (string-to-char raw) ?\()
3171 (substring raw 1 (1- (length raw)))
3172 raw))))
3173 (list :type 'redundant-constraint
3174 :redundancies (mapcar #'string-trim
3175 (intero-parse-comma-list redundant))
3176 :signature (mapconcat #'identity (split-string rest) " ")
3177 :line (flycheck-error-line msg))))))
3178 ;; Add a note if we found a suggestion to make
3179 (when note
3180 (setf (flycheck-error-message msg)
3181 (concat text "\n\n"
3182 (propertize
3183 (substitute-command-keys
3184 "(Hit `\\[intero-apply-suggestions]' in the Haskell buffer to apply suggestions)")
3185 'face 'font-lock-warning-face)))))))
3186 (setq intero-lighter
3187 (if (null intero-suggestions)
3188 " Intero"
3189 (format " Intero:%d" (length intero-suggestions)))))
3190
3191(defun intero-extensions ()
3192 "Get extensions for the current project's GHC."
3193 (with-current-buffer (intero-buffer 'backend)
3194 (or intero-extensions
3195 (setq intero-extensions
3196 (cl-remove-if-not
3197 (lambda (str) (let ((case-fold-search nil))
3198 (string-match "^[A-Z][A-Za-z0-9]+$" str)))
3199 (split-string
3200 (shell-command-to-string
3201 (concat intero-stack-executable
3202 (if intero-stack-yaml
3203 (concat "--stack-yaml " intero-stack-yaml)
3204 "")
3205 " exec --verbosity silent -- ghc --supported-extensions"))))))))
3206
3207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3208;; Auto actions
3209
3210(defun intero-parse-comma-list (text)
3211 "Parse a list of comma-separated expressions in TEXT."
3212 (cl-loop for tok in (split-string text "[[:space:]\n]*,[[:space:]\n]*")
3213 with acc = nil
3214 append (let* ((clist (string-to-list tok))
3215 (num-open (-count (lambda (c) (or (eq c ?\() (eq c ?\[)))
3216 clist))
3217 (num-close (-count (lambda (c) (or (eq c ?\)) (eq c ?\])))
3218 clist)))
3219 (cond
3220 ((> num-open num-close) (progn (add-to-list 'acc tok) nil))
3221 ((> num-close num-open) (let ((tmp (reverse (cons tok acc))))
3222 (setq acc nil)
3223 (list (string-join tmp ", "))))
3224 (t (list tok))))))
3225
3226(defun intero-apply-suggestions ()
3227 "Prompt and apply the suggestions."
3228 (interactive)
3229 (if (null intero-suggestions)
3230 (message "No suggestions to apply")
3231 (let ((to-apply
3232 (intero-multiswitch
3233 (format "There are %d suggestions to apply:" (length intero-suggestions))
3234 (cl-remove-if-not
3235 #'identity
3236 (mapcar
3237 (lambda (suggestion)
3238 (cl-case (plist-get suggestion :type)
3239 (add-to-import
3240 (list :key suggestion
3241 :title (format "Add ‘%s’ to import of ‘%s’"
3242 (plist-get suggestion :ident)
3243 (plist-get suggestion :module))
3244 :default t))
3245 (add-missing-fields
3246 (list :key suggestion
3247 :default t
3248 :title
3249 (format "Add missing fields to record: %s"
3250 (mapconcat (lambda (ident)
3251 (concat "‘" ident "’"))
3252 (plist-get suggestion :fields)
3253 ", "))))
3254 (redundant-import-item
3255 (list :key suggestion
3256 :title
3257 (format "Remove redundant imports %s from import of ‘%s’"
3258 (mapconcat (lambda (ident)
3259 (concat "‘" ident "’"))
3260 (plist-get suggestion :idents) ", ")
3261 (plist-get suggestion :module))
3262 :default t))
3263 (add-extension
3264 (list :key suggestion
3265 :title (concat "Add {-# LANGUAGE "
3266 (plist-get suggestion :extension)
3267 " #-}")
3268 :default (not (string= "OverloadedStrings" (plist-get suggestion :extension)))))
3269 (add-ghc-option
3270 (list :key suggestion
3271 :title (concat "Add {-# OPTIONS_GHC "
3272 (plist-get suggestion :option)
3273 " #-}")
3274 :default (not
3275 (string=
3276 (plist-get suggestion :option)
3277 "-fno-warn-name-shadowing"))))
3278 (add-package
3279 (list :key suggestion
3280 :title (concat "Enable package: " (plist-get suggestion :package))
3281 :default t))
3282 (remove-import
3283 (list :key suggestion
3284 :title (concat "Remove: import "
3285 (plist-get suggestion :module))
3286 :default t))
3287 (fix-typo
3288 (list :key suggestion
3289 :title (concat "Replace ‘"
3290 (plist-get suggestion :typo)
3291 "’ with ‘"
3292 (plist-get suggestion :replacement)
3293 "’")
3294 :default (null (cdr intero-suggestions))))
3295 (add-signature
3296 (list :key suggestion
3297 :title (concat "Add signature: "
3298 (plist-get suggestion :signature))
3299 :default t))
3300 (redundant-constraint
3301 (list :key suggestion
3302 :title (concat
3303 "Remove redundant constraints: "
3304 (string-join (plist-get suggestion :redundancies)
3305 ", ")
3306 "\n from the "
3307 (plist-get suggestion :signature))
3308 :default nil))))
3309 intero-suggestions)))))
3310 (if (null to-apply)
3311 (message "No changes selected to apply.")
3312 (let ((sorted (sort to-apply
3313 (lambda (lt gt)
3314 (let ((lt-line (or (plist-get lt :line) 0))
3315 (lt-column (or (plist-get lt :column) 0))
3316 (gt-line (or (plist-get gt :line) 0))
3317 (gt-column (or (plist-get gt :column) 0)))
3318 (or (> lt-line gt-line)
3319 (and (= lt-line gt-line)
3320 (> lt-column gt-column))))))))
3321 ;; # Changes unrelated to the buffer
3322 (cl-loop
3323 for suggestion in sorted
3324 do (cl-case (plist-get suggestion :type)
3325 (add-package
3326 (intero-add-package (plist-get suggestion :package)))))
3327 ;; # Changes that do not increase/decrease line numbers
3328 ;;
3329 ;; Update in-place suggestions
3330 (cl-loop
3331 for suggestion in sorted
3332 do (cl-case (plist-get suggestion :type)
3333 (add-to-import
3334 (save-excursion
3335 (goto-char (point-min))
3336 (forward-line (1- (plist-get suggestion :line)))
3337 (when (and (search-forward (plist-get suggestion :module) nil t 1)
3338 (search-forward "(" nil t 1))
3339 (insert (if (string-match-p "^[_a-zA-Z]" (plist-get suggestion :ident))
3340 (plist-get suggestion :ident)
3341 (concat "(" (plist-get suggestion :ident) ")")))
3342 (unless (looking-at-p "[:space:]*)")
3343 (insert ", ")))))
3344 (redundant-import-item
3345 (save-excursion
3346 (goto-char (point-min))
3347 (forward-line (1- (plist-get suggestion :line)))
3348 (let* ((case-fold-search nil)
3349 (start (search-forward "(" nil t 1))
3350 (end (or (save-excursion
3351 (when (search-forward-regexp "\n[^ \t]" nil t 1)
3352 (1- (point))))
3353 (line-end-position)))
3354 (regex
3355 (concat
3356 "\\("
3357 (mapconcat
3358 (lambda (ident)
3359 (if (string-match-p "^[_a-zA-Z]" ident)
3360 (concat "\\<" (regexp-quote ident) "\\> ?" "\\("(regexp-quote "(..)") "\\)?")
3361 (concat "(" (regexp-quote ident) ")")))
3362 (plist-get suggestion :idents)
3363 "\\|")
3364 "\\)"))
3365 (string (buffer-substring start end)))
3366 (delete-region start end)
3367 (insert
3368 (replace-regexp-in-string
3369 ",[\n ]*)" ")"
3370 (replace-regexp-in-string
3371 "^[\n ,]*" ""
3372 (replace-regexp-in-string
3373 "[\n ,]*,[\n ,]*" ", "
3374 (replace-regexp-in-string
3375 ",[\n ]*)" ")"
3376 (replace-regexp-in-string
3377 regex ""
3378 string)))))
3379 (make-string (1- (length (split-string string "\n" t))) 10)))))
3380 (fix-typo
3381 (save-excursion
3382 (goto-char (point-min))
3383 (forward-line (1- (plist-get suggestion :line)))
3384 (move-to-column (- (plist-get suggestion :column) 1))
3385 (delete-char (length (plist-get suggestion :typo)))
3386 (insert (plist-get suggestion :replacement))))
3387 (add-missing-fields
3388 (save-excursion
3389 (goto-char (point-min))
3390 (forward-line (1- (plist-get suggestion :line)))
3391 (move-to-column (- (plist-get suggestion :column) 1))
3392 (search-forward "{")
3393 (unless (looking-at "}")
3394 (save-excursion (insert ", ")))
3395 (insert (mapconcat (lambda (field) (concat field " = _"))
3396 (plist-get suggestion :fields)
3397 ", "))))))
3398 ;; # Changes that do increase/decrease line numbers
3399 ;;
3400 ;; Remove redundant constraints
3401 (cl-loop
3402 for suggestion in sorted
3403 do (cl-case (plist-get suggestion :type)
3404 (redundant-constraint
3405 (save-excursion
3406 (goto-char (point-min))
3407 (forward-line (1- (plist-get suggestion :line)))
3408 (search-forward-regexp "[[:alnum:][:space:]\n]*=>")
3409 (backward-sexp 2)
3410 (let ((start (1+ (point))))
3411 (forward-sexp)
3412 (let* ((end (1- (point)))
3413 (constraints (intero-parse-comma-list
3414 (buffer-substring start end)))
3415 (nonredundant
3416 (cl-loop for r in (plist-get suggestion :redundancies)
3417 with nonredundant = constraints
3418 do (setq nonredundant (delete r nonredundant))
3419 finally return nonredundant)))
3420 (goto-char start)
3421 (delete-char (- end start))
3422 (insert (string-join nonredundant ", "))))))))
3423
3424 ;; Add a type signature to a top-level binding.
3425 (cl-loop
3426 for suggestion in sorted
3427 do (cl-case (plist-get suggestion :type)
3428 (add-signature
3429 (save-excursion
3430 (goto-char (point-min))
3431 (forward-line (1- (plist-get suggestion :line)))
3432 (insert (plist-get suggestion :signature))
3433 (insert "\n")))))
3434
3435 ;; Remove import lines from the file. May remove more than one
3436 ;; line per import.
3437 (cl-loop
3438 for suggestion in sorted
3439 do (cl-case (plist-get suggestion :type)
3440 (remove-import
3441 (save-excursion
3442 (goto-char (point-min))
3443 (forward-line (1- (plist-get suggestion :line)))
3444 (delete-region (line-beginning-position)
3445 (or (when (search-forward-regexp "\n[^ \t]" nil t 1)
3446 (1- (point)))
3447 (line-end-position)))))))
3448 ;; Add extensions to the top of the file
3449 (cl-loop
3450 for suggestion in sorted
3451 do (cl-case (plist-get suggestion :type)
3452 (add-extension
3453 (save-excursion
3454 (goto-char (point-min))
3455 (intero-skip-shebangs)
3456 (insert "{-# LANGUAGE "
3457 (plist-get suggestion :extension)
3458 " #-}\n")))
3459 (add-ghc-option
3460 (save-excursion
3461 (goto-char (point-min))
3462 (intero-skip-shebangs)
3463 (insert "{-# OPTIONS_GHC "
3464 (plist-get suggestion :option)
3465 " #-}\n"))))))))))
3466
3467(defun intero-skip-shebangs ()
3468 "Skip #! and -- shebangs used in Haskell scripts."
3469 (when (looking-at-p "#!") (forward-line 1))
3470 (when (looking-at-p "-- stack ") (forward-line 1)))
3471
3472(defun intero--warn (message &rest args)
3473 "Display a warning message made from (format MESSAGE ARGS...).
3474Equivalent to 'warn', but label the warning as coming from intero."
3475 (display-warning 'intero (apply 'format message args) :warning))
3476
3477;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3478;; Intero help buffer
3479
3480(defun intero-help-buffer ()
3481 "Get the help buffer."
3482 (with-current-buffer (get-buffer-create "*Intero-Help*")
3483 (unless (eq major-mode 'intero-help-mode) (intero-help-mode))
3484 (current-buffer)))
3485
3486(defvar-local intero-help-entries nil
3487 "History for help entries.")
3488
3489(defun intero-help-pagination ()
3490 "Insert pagination for the current help buffer."
3491 (let ((buffer-read-only nil))
3492 (when (> (length intero-help-entries) 1)
3493 (insert-text-button
3494 "[back]"
3495 'buffer (current-buffer)
3496 'action (lambda (&rest ignore)
3497 (let ((first (pop intero-help-entries)))
3498 (setcdr (last intero-help-entries) (cons first nil))
3499 (intero-help-refresh)))
3500 'keymap (let ((map (make-sparse-keymap)))
3501 (define-key map [mouse-1] 'push-button)
3502 map))
3503 (insert " ")
3504 (insert-text-button
3505 "[forward]"
3506 'buffer (current-buffer)
3507 'keymap (let ((map (make-sparse-keymap)))
3508 (define-key map [mouse-1] 'push-button)
3509 map)
3510 'action (lambda (&rest ignore)
3511 (setq intero-help-entries
3512 (intero-bring-to-front intero-help-entries))
3513 (intero-help-refresh)))
3514 (insert " ")
3515 (insert-text-button
3516 "[forget]"
3517 'buffer (current-buffer)
3518 'keymap (let ((map (make-sparse-keymap)))
3519 (define-key map [mouse-1] 'push-button)
3520 map)
3521 'action (lambda (&rest ignore)
3522 (pop intero-help-entries)
3523 (intero-help-refresh)))
3524 (insert "\n\n"))))
3525
3526(defun intero-help-refresh ()
3527 "Refresh the help buffer with the current thing in the history."
3528 (interactive)
3529 (let ((buffer-read-only nil))
3530 (erase-buffer)
3531 (if (car intero-help-entries)
3532 (progn
3533 (intero-help-pagination)
3534 (insert (cdr (car intero-help-entries)))
3535 (goto-char (point-min)))
3536 (insert "No help entries."))))
3537
3538(defun intero-bring-to-front (xs)
3539 "Bring the last element of XS to the front."
3540 (cons (car (last xs)) (butlast xs)))
3541
3542(defun intero-help-push-history (buffer item)
3543 "Add (BUFFER . ITEM) to the history of help entries."
3544 (push (cons buffer item) intero-help-entries))
3545
3546(defun intero-help-info (ident)
3547 "Get the info of the thing with IDENT at point."
3548 (interactive (list (intero-ident-at-point)))
3549 (with-current-buffer (car (car intero-help-entries))
3550 (intero-info ident)))
3551
3552(define-derived-mode intero-help-mode help-mode "Intero-Help"
3553 "Help mode for intero."
3554 (setq buffer-read-only t)
3555 (setq intero-help-entries nil))
3556
3557(define-key intero-help-mode-map (kbd "g") 'intero-help-refresh)
3558(define-key intero-help-mode-map (kbd "C-c C-i") 'intero-help-info)
3559
3560;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3561;; Intero highlight uses mode
3562
3563(defvar intero-highlight-uses-mode-map
3564 (let ((map (make-sparse-keymap)))
3565 (define-key map (kbd "n") 'intero-highlight-uses-mode-next)
3566 (define-key map (kbd "TAB") 'intero-highlight-uses-mode-next)
3567 (define-key map (kbd "p") 'intero-highlight-uses-mode-prev)
3568 (define-key map (kbd "S-TAB") 'intero-highlight-uses-mode-prev)
3569 (define-key map (kbd "<backtab>") 'intero-highlight-uses-mode-prev)
3570 (define-key map (kbd "RET") 'intero-highlight-uses-mode-stop-here)
3571 (define-key map (kbd "r") 'intero-highlight-uses-mode-replace)
3572 (define-key map (kbd "q") 'intero-highlight-uses-mode)
3573 map)
3574 "Keymap for using `intero-highlight-uses-mode'.")
3575
3576(defvar-local intero-highlight-uses-mode-point nil)
3577(defvar-local intero-highlight-uses-buffer-old-mode nil)
3578
3579;;;###autoload
3580(define-minor-mode intero-highlight-uses-mode
3581 "Minor mode for highlighting and jumping between uses."
3582 :lighter " Uses"
3583 :keymap intero-highlight-uses-mode-map
3584 (if intero-highlight-uses-mode
3585 (progn (setq intero-highlight-uses-buffer-old-mode buffer-read-only)
3586 (setq buffer-read-only t)
3587 (setq intero-highlight-uses-mode-point (point)))
3588 (progn (setq buffer-read-only intero-highlight-uses-buffer-old-mode)
3589 (when intero-highlight-uses-mode-point
3590 (goto-char intero-highlight-uses-mode-point))))
3591 (remove-overlays (point-min) (point-max) 'intero-highlight-uses-mode-highlight t))
3592
3593(defun intero-highlight-uses-mode-replace ()
3594 "Replace all highlighted instances in the buffer with something else."
3595 (interactive)
3596 (save-excursion
3597 (goto-char (point-min))
3598 (let ((o (intero-highlight-uses-mode-next)))
3599 (when o
3600 (let ((replacement
3601 (read-from-minibuffer
3602 (format "Replace uses %s with: "
3603 (buffer-substring
3604 (overlay-start o)
3605 (overlay-end o))))))
3606 (let ((inhibit-read-only t))
3607 (while o
3608 (goto-char (overlay-start o))
3609 (delete-region (overlay-start o)
3610 (overlay-end o))
3611 (insert replacement)
3612 (setq o (intero-highlight-uses-mode-next))))))))
3613 (intero-highlight-uses-mode -1))
3614
3615(defun intero-highlight-uses-mode-stop-here ()
3616 "Stop at this point."
3617 (interactive)
3618 (setq intero-highlight-uses-mode-point (point))
3619 (intero-highlight-uses-mode -1))
3620
3621(defun intero-highlight-uses-mode-next ()
3622 "Jump to next result."
3623 (interactive)
3624 (let ((os (sort (cl-remove-if (lambda (o)
3625 (or (<= (overlay-start o) (point))
3626 (not (overlay-get o 'intero-highlight-uses-mode-highlight))))
3627 (overlays-in (point) (point-max)))
3628 (lambda (a b)
3629 (< (overlay-start a)
3630 (overlay-start b))))))
3631 (when os
3632 (mapc
3633 (lambda (o)
3634 (when (overlay-get o 'intero-highlight-uses-mode-highlight)
3635 (overlay-put o 'face 'lazy-highlight)))
3636 (overlays-in (line-beginning-position) (line-end-position)))
3637 (goto-char (overlay-start (car os)))
3638 (overlay-put (car os) 'face 'isearch)
3639 (car os))))
3640
3641(defun intero-highlight-uses-mode-prev ()
3642 "Jump to previous result."
3643 (interactive)
3644 (let ((os (sort (cl-remove-if (lambda (o)
3645 (or (>= (overlay-end o) (point))
3646 (not (overlay-get o 'intero-highlight-uses-mode-highlight))))
3647 (overlays-in (point-min) (point)))
3648 (lambda (a b)
3649 (> (overlay-start a)
3650 (overlay-start b))))))
3651 (when os
3652 (mapc
3653 (lambda (o)
3654 (when (overlay-get o 'intero-highlight-uses-mode-highlight)
3655 (overlay-put o 'face 'lazy-highlight)))
3656 (overlays-in (line-beginning-position) (line-end-position)))
3657 (goto-char (overlay-start (car os)))
3658 (overlay-put (car os) 'face 'isearch)
3659 (car os))))
3660
3661(defun intero-highlight-uses-mode-highlight (start end current)
3662 "Make a highlight overlay at the span from START to END.
3663If CURRENT, highlight the span uniquely."
3664 (let ((o (make-overlay start end)))
3665 (overlay-put o 'priority 999)
3666 (overlay-put o 'face
3667 (if current
3668 'isearch
3669 'lazy-highlight))
3670 (overlay-put o 'intero-highlight-uses-mode-highlight t)))
3671
3672;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3673
3674(provide 'intero)
3675
3676;;; intero.el ends here
diff --git a/.stack-work/intero/intero-script15638LtG b/.stack-work/intero/intero-script15638LtG
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script15638LtG
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script18425zvS b/.stack-work/intero/intero-script18425zvS
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script18425zvS
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script21871YJc b/.stack-work/intero/intero-script21871YJc
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script21871YJc
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script250346te b/.stack-work/intero/intero-script250346te
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script250346te
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script25034H4k b/.stack-work/intero/intero-script25034H4k
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script25034H4k
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script25034UCr b/.stack-work/intero/intero-script25034UCr
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script25034UCr
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script25034UQT b/.stack-work/intero/intero-script25034UQT
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script25034UQT
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script25034gZS b/.stack-work/intero/intero-script25034gZS
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script25034gZS
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script25034haZ b/.stack-work/intero/intero-script25034haZ
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script25034haZ
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script25034tjY b/.stack-work/intero/intero-script25034tjY
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script25034tjY
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script265874pa b/.stack-work/intero/intero-script265874pa
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script265874pa
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script26587REU b/.stack-work/intero/intero-script26587REU
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script26587REU
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script26587S-m b/.stack-work/intero/intero-script26587S-m
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script26587S-m
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script26587sZn b/.stack-work/intero/intero-script26587sZn
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script26587sZn
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script31583KtK b/.stack-work/intero/intero-script31583KtK
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script31583KtK
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script31583X3Q b/.stack-work/intero/intero-script31583X3Q
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script31583X3Q
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script38150SJ b/.stack-work/intero/intero-script38150SJ
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script38150SJ
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script3815OuJ b/.stack-work/intero/intero-script3815OuJ
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script3815OuJ
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script3815a3I b/.stack-work/intero/intero-script3815a3I
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script3815a3I
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script3815nBP b/.stack-work/intero/intero-script3815nBP
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script3815nBP
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script4078Wgy b/.stack-work/intero/intero-script4078Wgy
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script4078Wgy
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script75130iQ b/.stack-work/intero/intero-script75130iQ
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script75130iQ
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero-script7513nYK b/.stack-work/intero/intero-script7513nYK
deleted file mode 100644
index 56fbd62..0000000
--- a/.stack-work/intero/intero-script7513nYK
+++ /dev/null
@@ -1,4 +0,0 @@
1:set prompt ""
2:set -fbyte-code
3:set -fdiagnostics-color=never
4:set prompt "\4 "
diff --git a/.stack-work/intero/intero15638-bM-STAGING.hs b/.stack-work/intero/intero15638-bM-STAGING.hs
deleted file mode 100644
index ef7396b..0000000
--- a/.stack-work/intero/intero15638-bM-STAGING.hs
+++ /dev/null
@@ -1,132 +0,0 @@
1module Main where
2
3import Control.Lens
4import Linear.V2
5import Linear.V3
6import Data.Matrix
7--import Numeric.LinearAlgebra
8import System.Random
9import Foreign.Storable
10
11
12data Square = X -- Attacked
13 | Qu -- Queen
14 | O -- Open/available
15 deriving (Show, Eq)
16
17
18--board = V3 <$> [0..8] <*> [0..8] <*> [0]
19--board = [(r,c,X) | r <- [0..8], c <- [0..8] ]
20
21lo8 = [0..8] -- list of 8
22initBoard = matrix 8 8 $ \_ -> O
23
24placeQueen (r,c) b = placeQueen' $ markAttacked b
25 where
26 placeQueen' b = setElem Qu (r,c) b
27 markAttacked b = rowAttacked $ colAttacked $ diagAttacked b
28 fX = (\_ x -> X)
29 rowAttacked b = mapRow fX r b
30 colAttacked b = mapCol fX c b
31 diagAttacked b = let d = diag r c
32 attack ap ab = setElem X ap ab
33 attackall [x] = attack x b
34 attackall (x:xs) = attack x (attackall xs)
35 in attackall d
36-- in last $ map (\p -> setElem X p b) d
37-- in last $ scanr (\p -> setElem X p) b
38
39--solve b = placeQueen (nextAvail b) b
40
41nextAvail b = head [(x,y) | x <- [1..8], y <- [1..8], b ! (x,y) == O]
42
43-- solve b = placeQueen n
44-- where n = nextAvail b
45-- next = placeQueen n
46-- solve' =
47
48solve b =
49 where solve' b = (\n = placeQueen $ nextAvail b)
50
51
52--diag r c = [(x,y) | x <- [1..8], y <- [1..8], (abs x-y) == 1 ]
53diag r c = let rl = [1..r]
54 rr = [r..8]
55 cu = [1..c]
56 cd = [c..8]
57 in zip rl cu ++ zip rr cd ++
58 zip (reverse rl) cd ++ zip (reverse rr) cu
59
60
61
62
63-- diag (r,c) b =
64-- where l = (r-1,c-1)
65-- r = (r+1,c+1)
66-- lowbound = 1
67-- highbound = 8
68
69
70--initBoard = (8><8) $ repeat O
71
72--firstOpen b = take 1 [(r,c)| r <- [1..8], c <- [1..8], b ! (r,c) == O]
73
74-- firstOpen b = let
75-- elem x y = b ! (x, y)
76-- in map
77
78-- nextOpen b =
79
80-- solve = let board = initBoard
81
82--avail r c b =
83
84--rowOccupied r b = any (== Q) $ getRow r b
85
86
87
88-- diags p = let r = r p
89-- l = l p
90-- in p : inRange r
91-- where inRange x = x >= 1 && x <= 8
92-- inRange' (x,y) = inRange (x) && inRange (y)
93-- r x = (fst x + 1, snd x + 1)
94-- l x = (fst x - 1, snd x - 1)
95-- nexts x = diags' x
96-- diags' x = [(fst x - 1, snd x -1), (fst x + 1, snd x + 1)]
97-- -- down x = (fst x - 1, snd x - 1)
98-- -- down (r,c) = let d = (r-1,c-1) in if inRange d then d : down d else
99-- -- up (r,c) = let u = (r+1,c+1) in u : up u
100
101
102--mapDiag r c = undefined
103
104--placeAll = repeat 8 placeQueen
105
106winnable = undefined
107
108nextOpen board = undefined
109
110-- placeQueen r c =
111
112--b = getE
113
114--placeQueen r c b = b ^.
115
116-- rand = do
117-- g <- newStdGen
118-- print $ take 8 $ (randomRs (0, 8) g)
119
120
121-- try r c = let next b = placeQueen r c b
122-- in next initBoard
123
124-- try' p = let next b = p b
125-- in next initBoard
126
127
128--res = [ try x y | x <- lo8, y <- lo8 ]
129
130main :: IO ()
131main = do
132 putStrLn "Hi"
diff --git a/.stack-work/intero/intero15638LmS-TEMP.hs b/.stack-work/intero/intero15638LmS-TEMP.hs
deleted file mode 100644
index e69de29..0000000
--- a/.stack-work/intero/intero15638LmS-TEMP.hs
+++ /dev/null
diff --git a/.stack-work/intero/intero18425meY-STAGING.hs b/.stack-work/intero/intero18425meY-STAGING.hs
deleted file mode 100644
index 820de4e..0000000
--- a/.stack-work/intero/intero18425meY-STAGING.hs
+++ /dev/null
@@ -1,46 +0,0 @@
1module Main where
2
3import Control.Lens
4import Linear.V2
5import Linear.V3
6import Data.Matrix
7import System.Random
8
9data Square = X | Q deriving (Show)
10--board = V3 <$> [0..8] <*> [0..8] <*> [0]
11--board = [(r,c,X) | r <- [0..8], c <- [0..8] ]
12
13lo8 = [0..8] -- list of 8
14initBoard = matrix 8 8 $ \_ -> X
15--avail r c b =
16
17--rowOccupied r b = any (== Q) $ getRow r b
18placeQueen r c b = setElem Q (r,c) b
19
20--placeAll = repeat 8 placeQueen
21
22winnable = undefined
23
24-- placeQueen r c =
25
26--b = getE
27
28--placeQueen r c b = b ^.
29
30-- rand = do
31-- g <- newStdGen
32-- print $ take 8 $ (randomRs (0, 8) g)
33
34
35-- try r c = let next b = placeQueen r c b
36-- in next initBoard
37
38-- try' p = let next b = p b
39-- in next initBoard
40
41
42--res = [ try x y | x <- lo8, y <- lo8 ]
43
44main :: IO ()
45main = do
46 putStrLn "Hi"
diff --git a/.stack-work/intero/intero18425zoe-TEMP.hs b/.stack-work/intero/intero18425zoe-TEMP.hs
deleted file mode 100644
index e69de29..0000000
--- a/.stack-work/intero/intero18425zoe-TEMP.hs
+++ /dev/null
diff --git a/.stack-work/intero/intero21871-0P-TEMP.hs b/.stack-work/intero/intero21871-0P-TEMP.hs
deleted file mode 100644
index e69de29..0000000
--- a/.stack-work/intero/intero21871-0P-TEMP.hs
+++ /dev/null
diff --git a/.stack-work/intero/intero21871xqJ-STAGING.hs b/.stack-work/intero/intero21871xqJ-STAGING.hs
deleted file mode 100644
index 820de4e..0000000
--- a/.stack-work/intero/intero21871xqJ-STAGING.hs
+++ /dev/null
@@ -1,46 +0,0 @@
1module Main where
2
3import Control.Lens
4import Linear.V2
5import Linear.V3
6import Data.Matrix
7import System.Random
8
9data Square = X | Q deriving (Show)
10--board = V3 <$> [0..8] <*> [0..8] <*> [0]
11--board = [(r,c,X) | r <- [0..8], c <- [0..8] ]
12
13lo8 = [0..8] -- list of 8
14initBoard = matrix 8 8 $ \_ -> X
15--avail r c b =
16
17--rowOccupied r b = any (== Q) $ getRow r b
18placeQueen r c b = setElem Q (r,c) b
19
20--placeAll = repeat 8 placeQueen
21
22winnable = undefined
23
24-- placeQueen r c =
25
26--b = getE
27
28--placeQueen r c b = b ^.
29
30-- rand = do
31-- g <- newStdGen
32-- print $ take 8 $ (randomRs (0, 8) g)
33
34
35-- try r c = let next b = placeQueen r c b
36-- in next initBoard
37
38-- try' p = let next b = p b
39-- in next initBoard
40
41
42--res = [ try x y | x <- lo8, y <- lo8 ]
43
44main :: IO ()
45main = do
46 putStrLn "Hi"
diff --git a/.stack-work/intero/intero232079je-TEMP.hs b/.stack-work/intero/intero232079je-TEMP.hs
deleted file mode 100644
index e69de29..0000000
--- a/.stack-work/intero/intero232079je-TEMP.hs
+++ /dev/null
diff --git a/.stack-work/intero/intero23207wZY-STAGING.hs b/.stack-work/intero/intero23207wZY-STAGING.hs
deleted file mode 100644
index 820de4e..0000000
--- a/.stack-work/intero/intero23207wZY-STAGING.hs
+++ /dev/null
@@ -1,46 +0,0 @@
1module Main where
2
3import Control.Lens
4import Linear.V2
5import Linear.V3
6import Data.Matrix
7import System.Random
8
9data Square = X | Q deriving (Show)
10--board = V3 <$> [0..8] <*> [0..8] <*> [0]
11--board = [(r,c,X) | r <- [0..8], c <- [0..8] ]
12
13lo8 = [0..8] -- list of 8
14initBoard = matrix 8 8 $ \_ -> X
15--avail r c b =
16
17--rowOccupied r b = any (== Q) $ getRow r b
18placeQueen r c b = setElem Q (r,c) b
19
20--placeAll = repeat 8 placeQueen
21
22winnable = undefined
23
24-- placeQueen r c =
25
26--b = getE
27
28--placeQueen r c b = b ^.
29
30-- rand = do
31-- g <- newStdGen
32-- print $ take 8 $ (randomRs (0, 8) g)
33
34
35-- try r c = let next b = placeQueen r c b
36-- in next initBoard
37
38-- try' p = let next b = p b
39-- in next initBoard
40
41
42--res = [ try x y | x <- lo8, y <- lo8 ]
43
44main :: IO ()
45main = do
46 putStrLn "Hi"
diff --git a/.stack-work/intero/intero25034GFG-TEMP.hs b/.stack-work/intero/intero25034GFG-TEMP.hs
deleted file mode 100644
index e69de29..0000000
--- a/.stack-work/intero/intero25034GFG-TEMP.hs
+++ /dev/null
diff --git a/.stack-work/intero/intero25034U72-STAGING.hs b/.stack-work/intero/intero25034U72-STAGING.hs
deleted file mode 100644
index 9cd992d..0000000
--- a/.stack-work/intero/intero25034U72-STAGING.hs
+++ /dev/null
@@ -1,5 +0,0 @@
1module Main where
2
3main :: IO ()
4main = do
5 putStrLn "hello world"
diff --git a/.stack-work/intero/intero265874by-STAGING.hs b/.stack-work/intero/intero265874by-STAGING.hs
deleted file mode 100644
index a82dbd0..0000000
--- a/.stack-work/intero/intero265874by-STAGING.hs
+++ /dev/null
@@ -1,201 +0,0 @@
1{-# LANGUAGE FlexibleContexts #-}
2
3module Main where
4
5import Control.Lens
6import Linear.V2
7import Linear.V3
8import Data.Matrix
9--import Numeric.LinearAlgebra
10import System.Random
11import Foreign.Storable
12
13
14data Square = X -- Attacked
15 | Qu -- Queen
16 | O -- Open/available
17 deriving (Show, Eq)
18
19
20--board = V3 <$> [0..8] <*> [0..8] <*> [0]
21--board = [(r,c,X) | r <- [0..8], c <- [0..8] ]
22
23lo8 = [0..8] -- list of 8
24initBoard = matrix 8 8 $ \_ -> O
25
26placeQueen (r,c) b = placeQueen' $ markAttacked b
27 where
28 placeQueen' b = setElem Qu (r,c) b
29 markAttacked b = rowAttacked $ colAttacked $ diagAttacked b
30 fX = (\_ x -> X)
31 rowAttacked b = mapRow fX r b
32 colAttacked b = mapCol fX c b
33 diagAttacked b = let d = diag r c
34 attack ap ab = setElem X ap ab
35 attackall [x] = attack x b
36 attackall (x:xs) = attack x (attackall xs)
37 in attackall d
38-- in last $ map (\p -> setElem X p b) d
39-- in last $ scanr (\p -> setElem X p) b
40
41--solve b = placeQueen (nextAvail b) b
42
43nextAvail b = head [(x,y) | x <- [1..8], y <- [1..8], b ! (x,y) == O]
44
45-- solve b = placeQueen n
46-- where n = nextAvail b
47-- next = placeQueen n
48-- solve' =
49
50-- solve b =
51-- where solve' b = (\n = placeQueen $ nextAvail b)
52
53solve b = second
54 where first = placeQueen (nextAvail b) b
55 second = placeQueen (nextAvail first) first
56
57solve' b = s (nA b) b
58 where s n b = placeQueen n b
59 nA b = nextAvail b
60
61
62--diag r c = [(x,y) | x <- [1..8], y <- [1..8], (abs x-y) == 1 ]
63diag r c = let rl = [1..r]
64 rr = [r..8]
65 cu = [1..c]
66 cd = [c..8]
67 in zip rl cu ++ zip rr cd ++
68 zip (reverse rl) cd ++ zip (reverse rr) cu
69
70allops a b = [(a, a), (a, b), (b, a), (b, b)]
71ops = allops (+1) (subtract 1)
72applyop (x,y) (a,b) = (a x,b y)
73applyops p = map (applyop p) ops
74
75mapDiag f c b = map (\(x,y) -> setElem f (x,y) b) ds
76 where ds = diag'' c
77
78mapDiag' f c b = map (on b f) ds
79 where ds = diag'' c
80 on b x p = let next bo = set x p bo
81 in map (next) b
82 set x p b = setElem x p b
83
84--mapDiag'' f c b = take 10 $ iterate (map (set f) ds) b
85-- mapDiag'' f c b = take 10 $ iterate (
86-- where ds = diag'' c
87-- eachD' p = setElem f p
88-- eachD [p] = eachD' p
89-- eachD (p:ps) = eachD' p : eachD ps
90
91markX p b = setElem X p b
92
93mapDiag''' f p b = applyfs fs b
94 where ds = diag'' p
95 fs = map (\x y -> markX x y) ds
96 applyfs [x] b = x b
97 applyfs (x:xs) b = applyfs x (applyfs xs)
98
99
100onBoard b f = let next n = f n
101 in next b
102
103--eB = mapDiag''' (\_ -> 1) (5,5) $ matrix 8 8 (\_ -> 0)
104
105diag'' c = apply c
106 where
107 min = 1
108 max = 8
109 ops a b = [(a, a), (a, b), (b, a), (b, b)]
110 allops = ops (+1) (subtract 1)
111 applyop (x,y) (a,b) = (a x,b y)
112 applyopr (a,b) (x,y) = traverse' (\(d,f) -> (a d, b f)) (x,y)
113 traverse' f x = takeWhile (within) $ iterate f x
114 within (x,y) = let within' z = z >= min && z <= max
115 in within' x && within' y
116 applyops ops p = map (\x -> applyopr x p) ops
117 apply x = concat $ applyops allops x
118
119-- opfs ops = map (\(o1,o2) -> (\(x,y) -> (o1 x, o2 y))) ops
120-- applyops x = map x opfs
121-- ops = map (
122 --applyops (x,y) = map (($ x), ($ y)) $ allops (+1) (-1)
123-- fx a b = map \((oa,ob) -> ((cx,cy) -> (oa cx, ob cy))) $ allops (+1) (-1)
124 --applyops x = [(((fst f) (fst x)), ((snd f) (snd x))) | f <- allops (+1) (-1)]
125-- applyops x = (fst x, snd x)
126-- applyops x = map \((p,m) -> (p (fst x), m (snd x))) $ allops (+1) (-1)
127-- apply c = map (\(p,m) -> (p (fst c), m (snd c))) $ allops (+1) (-1)
128-- apply ops c = [( (fst o) (fst c), (snd o) (snd c) | o <- ops
129
130
131
132-- diag (r,c) b =
133-- where l = (r-1,c-1)
134-- r = (r+1,c+1)
135-- lowbound = 1
136-- highbound = 8
137
138
139--initBoard = (8><8) $ repeat O
140
141--firstOpen b = take 1 [(r,c)| r <- [1..8], c <- [1..8], b ! (r,c) == O]
142
143-- firstOpen b = let
144-- elem x y = b ! (x, y)
145-- in map
146
147-- nextOpen b =
148
149-- solve = let board = initBoard
150
151--avail r c b =
152
153--rowOccupied r b = any (== Q) $ getRow r b
154
155
156
157-- diags p = let r = r p
158-- l = l p
159-- in p : inRange r
160-- where inRange x = x >= 1 && x <= 8
161-- inRange' (x,y) = inRange (x) && inRange (y)
162-- r x = (fst x + 1, snd x + 1)
163-- l x = (fst x - 1, snd x - 1)
164-- nexts x = diags' x
165-- diags' x = [(fst x - 1, snd x -1), (fst x + 1, snd x + 1)]
166-- -- down x = (fst x - 1, snd x - 1)
167-- -- down (r,c) = let d = (r-1,c-1) in if inRange d then d : down d else
168-- -- up (r,c) = let u = (r+1,c+1) in u : up u
169
170
171--mapDiag r c = undefined
172
173--placeAll = repeat 8 placeQueen
174
175winnable = undefined
176
177nextOpen board = undefined
178
179-- placeQueen r c =
180
181--b = getE
182
183--placeQueen r c b = b ^.
184
185-- rand = do
186-- g <- newStdGen
187-- print $ take 8 $ (randomRs (0, 8) g)
188
189
190-- try r c = let next b = placeQueen r c b
191-- in next initBoard
192
193-- try' p = let next b = p b
194-- in next initBoard
195
196
197--res = [ try x y | x <- lo8, y <- lo8 ]
198
199main :: IO ()
200main = do
201 putStrLn "Hi"
diff --git a/.stack-work/intero/intero26587qlB-TEMP.hs b/.stack-work/intero/intero26587qlB-TEMP.hs
deleted file mode 100644
index e69de29..0000000
--- a/.stack-work/intero/intero26587qlB-TEMP.hs
+++ /dev/null
diff --git a/.stack-work/intero/intero30739dbu-STAGING.hs b/.stack-work/intero/intero30739dbu-STAGING.hs
deleted file mode 100644
index c0b9790..0000000
--- a/.stack-work/intero/intero30739dbu-STAGING.hs
+++ /dev/null
@@ -1,127 +0,0 @@
1module Main where
2
3import Control.Lens
4import Linear.V2
5import Linear.V3
6import Data.Matrix
7--import Numeric.LinearAlgebra
8import System.Random
9import Foreign.Storable
10
11
12data Square = X -- Attacked
13 | Qu -- Queen
14 | O -- Open/available
15 deriving (Show, Eq)
16
17
18--board = V3 <$> [0..8] <*> [0..8] <*> [0]
19--board = [(r,c,X) | r <- [0..8], c <- [0..8] ]
20
21lo8 = [0..8] -- list of 8
22initBoard = matrix 8 8 $ \_ -> O
23
24placeQueen (r,c) b = placeQueen' $ markAttacked b
25 where
26 placeQueen' b = setElem Qu (r,c) b
27 markAttacked b = rowAttacked $ colAttacked $ diagAttacked b
28 fX = (\_ x -> X)
29 rowAttacked b = mapRow fX r b
30 colAttacked b = mapCol fX c b
31 diagAttacked b = let d = diag r c
32 attack ap ab = setElem X ap ab
33 attackall [x] = attack x b
34 attackall (x:xs) = attack x (attackall xs)
35 in attackall d
36-- in last $ map (\p -> setElem X p b) d
37-- in last $ scanr (\p -> setElem X p) b
38
39--solve b = placeQueen (nextAvail b) b
40
41nextAvail b = head [(x,y) | x <- [1..8], y <- [1..8], b ! (x,y) == O]
42
43solve b = solve $ placeQueen n b
44 where n = nextAvail b
45
46
47--diag r c = [(x,y) | x <- [1..8], y <- [1..8], (abs x-y) == 1 ]
48diag r c = let rl = [1..r]
49 rr = [r..8]
50 cu = [1..c]
51 cd = [c..8]
52 in zip rl cu ++ zip rr cd ++
53 zip (reverse rl) cd ++ zip (reverse rr) cu
54
55
56
57
58-- diag (r,c) b =
59-- where l = (r-1,c-1)
60-- r = (r+1,c+1)
61-- lowbound = 1
62-- highbound = 8
63
64
65--initBoard = (8><8) $ repeat O
66
67--firstOpen b = take 1 [(r,c)| r <- [1..8], c <- [1..8], b ! (r,c) == O]
68
69-- firstOpen b = let
70-- elem x y = b ! (x, y)
71-- in map
72
73-- nextOpen b =
74
75-- solve = let board = initBoard
76
77--avail r c b =
78
79--rowOccupied r b = any (== Q) $ getRow r b
80
81
82
83-- diags p = let r = r p
84-- l = l p
85-- in p : inRange r
86-- where inRange x = x >= 1 && x <= 8
87-- inRange' (x,y) = inRange (x) && inRange (y)
88-- r x = (fst x + 1, snd x + 1)
89-- l x = (fst x - 1, snd x - 1)
90-- nexts x = diags' x
91-- diags' x = [(fst x - 1, snd x -1), (fst x + 1, snd x + 1)]
92-- -- down x = (fst x - 1, snd x - 1)
93-- -- down (r,c) = let d = (r-1,c-1) in if inRange d then d : down d else
94-- -- up (r,c) = let u = (r+1,c+1) in u : up u
95
96
97--mapDiag r c = undefined
98
99--placeAll = repeat 8 placeQueen
100
101winnable = undefined
102
103nextOpen board = undefined
104
105-- placeQueen r c =
106
107--b = getE
108
109--placeQueen r c b = b ^.
110
111-- rand = do
112-- g <- newStdGen
113-- print $ take 8 $ (randomRs (0, 8) g)
114
115
116-- try r c = let next b = placeQueen r c b
117-- in next initBoard
118
119-- try' p = let next b = p b
120-- in next initBoard
121
122
123--res = [ try x y | x <- lo8, y <- lo8 ]
124
125main :: IO ()
126main = do
127 putStrLn "Hi"
diff --git a/.stack-work/intero/intero30739ql0-TEMP.hs b/.stack-work/intero/intero30739ql0-TEMP.hs
deleted file mode 100644
index e69de29..0000000
--- a/.stack-work/intero/intero30739ql0-TEMP.hs
+++ /dev/null
diff --git a/.stack-work/intero/intero31583k6i-STAGING.hs b/.stack-work/intero/intero31583k6i-STAGING.hs
deleted file mode 100644
index c020aed..0000000
--- a/.stack-work/intero/intero31583k6i-STAGING.hs
+++ /dev/null
@@ -1,127 +0,0 @@
1module Main where
2
3import Control.Lens
4import Linear.V2
5import Linear.V3
6import Data.Matrix
7--import Numeric.LinearAlgebra
8import System.Random
9import Foreign.Storable
10
11
12data Square = X -- Attacked
13 | Qu -- Queen
14 | O -- Open/available
15 deriving (Show, Eq)
16
17
18--board = V3 <$> [0..8] <*> [0..8] <*> [0]
19--board = [(r,c,X) | r <- [0..8], c <- [0..8] ]
20
21lo8 = [0..8] -- list of 8
22initBoard = matrix 8 8 $ \_ -> O
23
24placeQueen (r,c) b = placeQueen' $ markAttacked b
25 where
26 placeQueen' b = setElem Qu (r,c) b
27 markAttacked b = rowAttacked $ colAttacked $ diagAttacked b
28 fX = (\_ x -> X)
29 rowAttacked b = mapRow fX r b
30 colAttacked b = mapCol fX c b
31 diagAttacked b = let d = diag r c
32 attack ap ab = setElem X ap ab
33 attackall [x] = attack x b
34 attackall (x:xs) = attack x (attackall xs)
35 in attackall d
36-- in last $ map (\p -> setElem X p b) d
37-- in last $ scanr (\p -> setElem X p) b
38
39--solve b = placeQueen (nextAvail b) b
40
41nextAvail b = head [(x,y) | x <- [1..8], y <- [1..8], b ! (x,y) == O]
42
43solve b = solve $ solve $ solve $ placeQueen n b
44 where n = nextAvail b
45
46
47--diag r c = [(x,y) | x <- [1..8], y <- [1..8], (abs x-y) == 1 ]
48diag r c = let rl = [1..r]
49 rr = [r..8]
50 cu = [1..c]
51 cd = [c..8]
52 in zip rl cu ++ zip rr cd ++
53 zip (reverse rl) cd ++ zip (reverse rr) cu
54
55
56
57
58-- diag (r,c) b =
59-- where l = (r-1,c-1)
60-- r = (r+1,c+1)
61-- lowbound = 1
62-- highbound = 8
63
64
65--initBoard = (8><8) $ repeat O
66
67--firstOpen b = take 1 [(r,c)| r <- [1..8], c <- [1..8], b ! (r,c) == O]
68
69-- firstOpen b = let
70-- elem x y = b ! (x, y)
71-- in map
72
73-- nextOpen b =
74
75-- solve = let board = initBoard
76
77--avail r c b =
78
79--rowOccupied r b = any (== Q) $ getRow r b
80
81
82
83-- diags p = let r = r p
84-- l = l p
85-- in p : inRange r
86-- where inRange x = x >= 1 && x <= 8
87-- inRange' (x,y) = inRange (x) && inRange (y)
88-- r x = (fst x + 1, snd x + 1)
89-- l x = (fst x - 1, snd x - 1)
90-- nexts x = diags' x
91-- diags' x = [(fst x - 1, snd x -1), (fst x + 1, snd x + 1)]
92-- -- down x = (fst x - 1, snd x - 1)
93-- -- down (r,c) = let d = (r-1,c-1) in if inRange d then d : down d else
94-- -- up (r,c) = let u = (r+1,c+1) in u : up u
95
96
97--mapDiag r c = undefined
98
99--placeAll = repeat 8 placeQueen
100
101winnable = undefined
102
103nextOpen board = undefined
104
105-- placeQueen r c =
106
107--b = getE
108
109--placeQueen r c b = b ^.
110
111-- rand = do
112-- g <- newStdGen
113-- print $ take 8 $ (randomRs (0, 8) g)
114
115
116-- try r c = let next b = placeQueen r c b
117-- in next initBoard
118
119-- try' p = let next b = p b
120-- in next initBoard
121
122
123--res = [ try x y | x <- lo8, y <- lo8 ]
124
125main :: IO ()
126main = do
127 putStrLn "Hi"
diff --git a/.stack-work/intero/intero31583xEp-TEMP.hs b/.stack-work/intero/intero31583xEp-TEMP.hs
deleted file mode 100644
index e69de29..0000000
--- a/.stack-work/intero/intero31583xEp-TEMP.hs
+++ /dev/null
diff --git a/.stack-work/intero/intero38150Eh-TEMP.hs b/.stack-work/intero/intero38150Eh-TEMP.hs
deleted file mode 100644
index e69de29..0000000
--- a/.stack-work/intero/intero38150Eh-TEMP.hs
+++ /dev/null
diff --git a/.stack-work/intero/intero3815n6a-STAGING.hs b/.stack-work/intero/intero3815n6a-STAGING.hs
deleted file mode 100644
index 5f6fce5..0000000
--- a/.stack-work/intero/intero3815n6a-STAGING.hs
+++ /dev/null
@@ -1,69 +0,0 @@
1module Main where
2
3import Control.Lens
4import Linear.V2
5import Linear.V3
6import Data.Matrix
7import System.Random
8
9data Square = X -- Attacked
10 | Qu -- Queen
11 | O -- Open/available
12 deriving (Show)
13
14
15--board = V3 <$> [0..8] <*> [0..8] <*> [0]
16--board = [(r,c,X) | r <- [0..8], c <- [0..8] ]
17
18lo8 = [0..8] -- list of 8
19initBoard = matrix 8 8 $ \_ -> O
20
21firstOpen b = let
22 elem x y = b ! (x, y)
23 in map
24
25nextOpen b =
26
27solve = let board = initBoard
28
29--avail r c b =
30
31--rowOccupied r b = any (== Q) $ getRow r b
32-- placeQueen r c b = board
33-- where
34-- fX = (\ _ -> X)
35-- rowAttacked = mapRow fX r
36-- colAttacked = mapCol fx c
37-- queen = setElem Qu (r,c) b
38
39--placeAll = repeat 8 placeQueen
40
41winnable = undefined
42
43nextOpen board = undefined
44
45solve = undefined
46
47-- placeQueen r c =
48
49--b = getE
50
51--placeQueen r c b = b ^.
52
53-- rand = do
54-- g <- newStdGen
55-- print $ take 8 $ (randomRs (0, 8) g)
56
57
58-- try r c = let next b = placeQueen r c b
59-- in next initBoard
60
61-- try' p = let next b = p b
62-- in next initBoard
63
64
65--res = [ try x y | x <- lo8, y <- lo8 ]
66
67main :: IO ()
68main = do
69 putStrLn "Hi"
diff --git a/.stack-work/intero/intero4078i3Z-STAGING.hs b/.stack-work/intero/intero4078i3Z-STAGING.hs
deleted file mode 100644
index 15be3ec..0000000
--- a/.stack-work/intero/intero4078i3Z-STAGING.hs
+++ /dev/null
@@ -1,55 +0,0 @@
1module Main where
2
3import Control.Lens
4import Linear.V2
5import Linear.V3
6import Data.Matrix
7import System.Random
8
9data Square = X | Qu | O deriving (Show)
10--board = V3 <$> [0..8] <*> [0..8] <*> [0]
11--board = [(r,c,X) | r <- [0..8], c <- [0..8] ]
12
13lo8 = [0..8] -- list of 8
14initBoard = matrix 8 8 $ \_ -> O
15--avail r c b =
16
17--rowOccupied r b = any (== Q) $ getRow r b
18placeQueen r c b = board
19 where
20 fX = (\ _ -> X)
21 rowAttacked = mapRow fX r
22 colAttacked = mapCol fx c
23 queen = setElem Qu (r,c) b
24
25--placeAll = repeat 8 placeQueen
26
27winnable = undefined
28
29nextOpen board =
30
31solve =
32
33-- placeQueen r c =
34
35--b = getE
36
37--placeQueen r c b = b ^.
38
39-- rand = do
40-- g <- newStdGen
41-- print $ take 8 $ (randomRs (0, 8) g)
42
43
44-- try r c = let next b = placeQueen r c b
45-- in next initBoard
46
47-- try' p = let next b = p b
48-- in next initBoard
49
50
51--res = [ try x y | x <- lo8, y <- lo8 ]
52
53main :: IO ()
54main = do
55 putStrLn "Hi"
diff --git a/.stack-work/intero/intero4078vBg-TEMP.hs b/.stack-work/intero/intero4078vBg-TEMP.hs
deleted file mode 100644
index e69de29..0000000
--- a/.stack-work/intero/intero4078vBg-TEMP.hs
+++ /dev/null
diff --git a/.stack-work/intero/intero5164dbY-STAGING.hs b/.stack-work/intero/intero5164dbY-STAGING.hs
deleted file mode 100644
index 820de4e..0000000
--- a/.stack-work/intero/intero5164dbY-STAGING.hs
+++ /dev/null
@@ -1,46 +0,0 @@
1module Main where
2
3import Control.Lens
4import Linear.V2
5import Linear.V3
6import Data.Matrix
7import System.Random
8
9data Square = X | Q deriving (Show)
10--board = V3 <$> [0..8] <*> [0..8] <*> [0]
11--board = [(r,c,X) | r <- [0..8], c <- [0..8] ]
12
13lo8 = [0..8] -- list of 8
14initBoard = matrix 8 8 $ \_ -> X
15--avail r c b =
16
17--rowOccupied r b = any (== Q) $ getRow r b
18placeQueen r c b = setElem Q (r,c) b
19
20--placeAll = repeat 8 placeQueen
21
22winnable = undefined
23
24-- placeQueen r c =
25
26--b = getE
27
28--placeQueen r c b = b ^.
29
30-- rand = do
31-- g <- newStdGen
32-- print $ take 8 $ (randomRs (0, 8) g)
33
34
35-- try r c = let next b = placeQueen r c b
36-- in next initBoard
37
38-- try' p = let next b = p b
39-- in next initBoard
40
41
42--res = [ try x y | x <- lo8, y <- lo8 ]
43
44main :: IO ()
45main = do
46 putStrLn "Hi"
diff --git a/.stack-work/intero/intero5164qle-TEMP.hs b/.stack-work/intero/intero5164qle-TEMP.hs
deleted file mode 100644
index e69de29..0000000
--- a/.stack-work/intero/intero5164qle-TEMP.hs
+++ /dev/null
diff --git a/.stack-work/intero/intero7513Owo-STAGING.hs b/.stack-work/intero/intero7513Owo-STAGING.hs
deleted file mode 100644
index f3b0098..0000000
--- a/.stack-work/intero/intero7513Owo-STAGING.hs
+++ /dev/null
@@ -1,152 +0,0 @@
1module Main where
2
3import Control.Lens
4import Linear.V2
5import Linear.V3
6import Data.Matrix
7--import Numeric.LinearAlgebra
8import System.Random
9import Foreign.Storable
10
11
12data Square = X -- Attacked
13 | Qu -- Queen
14 | O -- Open/available
15 deriving (Show, Eq)
16
17
18--board = V3 <$> [0..8] <*> [0..8] <*> [0]
19--board = [(r,c,X) | r <- [0..8], c <- [0..8] ]
20
21lo8 = [0..8] -- list of 8
22initBoard = matrix 8 8 $ \_ -> O
23
24placeQueen (r,c) b = placeQueen' $ markAttacked b
25 where
26 placeQueen' b = setElem Qu (r,c) b
27 markAttacked b = rowAttacked $ colAttacked $ diagAttacked b
28 fX = (\_ x -> X)
29 rowAttacked b = mapRow fX r b
30 colAttacked b = mapCol fX c b
31 diagAttacked b = let d = diag r c
32 attack ap ab = setElem X ap ab
33 attackall [x] = attack x b
34 attackall (x:xs) = attack x (attackall xs)
35 in attackall d
36-- in last $ map (\p -> setElem X p b) d
37-- in last $ scanr (\p -> setElem X p) b
38
39--solve b = placeQueen (nextAvail b) b
40
41nextAvail b = head [(x,y) | x <- [1..8], y <- [1..8], b ! (x,y) == O]
42
43-- solve b = placeQueen n
44-- where n = nextAvail b
45-- next = placeQueen n
46-- solve' =
47
48-- solve b =
49-- where solve' b = (\n = placeQueen $ nextAvail b)
50
51solve b = second
52 where first = placeQueen (nextAvail b) b
53 second = placeQueen (nextAvail first) first
54
55solve' b = s (nA b) b
56 where s n b = placeQueen n b
57 nA b = nextAvail b
58
59
60--diag r c = [(x,y) | x <- [1..8], y <- [1..8], (abs x-y) == 1 ]
61diag r c = let rl = [1..r]
62 rr = [r..8]
63 cu = [1..c]
64 cd = [c..8]
65 in zip rl cu ++ zip rr cd ++
66 zip (reverse rl) cd ++ zip (reverse rr) cu
67
68diag' p = where
69 maxB = 8
70 minB = 1
71 u = (+1)
72 d = (-1)
73 r = u
74 l = d
75 ur = (u fst, r snd)
76 ul = (u fst, l snd)
77 dr = (d fst, r snd)
78 dl = (d fst, l snd)
79
80
81
82
83-- diag (r,c) b =
84-- where l = (r-1,c-1)
85-- r = (r+1,c+1)
86-- lowbound = 1
87-- highbound = 8
88
89
90--initBoard = (8><8) $ repeat O
91
92--firstOpen b = take 1 [(r,c)| r <- [1..8], c <- [1..8], b ! (r,c) == O]
93
94-- firstOpen b = let
95-- elem x y = b ! (x, y)
96-- in map
97
98-- nextOpen b =
99
100-- solve = let board = initBoard
101
102--avail r c b =
103
104--rowOccupied r b = any (== Q) $ getRow r b
105
106
107
108-- diags p = let r = r p
109-- l = l p
110-- in p : inRange r
111-- where inRange x = x >= 1 && x <= 8
112-- inRange' (x,y) = inRange (x) && inRange (y)
113-- r x = (fst x + 1, snd x + 1)
114-- l x = (fst x - 1, snd x - 1)
115-- nexts x = diags' x
116-- diags' x = [(fst x - 1, snd x -1), (fst x + 1, snd x + 1)]
117-- -- down x = (fst x - 1, snd x - 1)
118-- -- down (r,c) = let d = (r-1,c-1) in if inRange d then d : down d else
119-- -- up (r,c) = let u = (r+1,c+1) in u : up u
120
121
122--mapDiag r c = undefined
123
124--placeAll = repeat 8 placeQueen
125
126winnable = undefined
127
128nextOpen board = undefined
129
130-- placeQueen r c =
131
132--b = getE
133
134--placeQueen r c b = b ^.
135
136-- rand = do
137-- g <- newStdGen
138-- print $ take 8 $ (randomRs (0, 8) g)
139
140
141-- try r c = let next b = placeQueen r c b
142-- in next initBoard
143
144-- try' p = let next b = p b
145-- in next initBoard
146
147
148--res = [ try x y | x <- lo8, y <- lo8 ]
149
150main :: IO ()
151main = do
152 putStrLn "Hi"
diff --git a/.stack-work/intero/intero7513b6u-TEMP.hs b/.stack-work/intero/intero7513b6u-TEMP.hs
deleted file mode 100644
index e69de29..0000000
--- a/.stack-work/intero/intero7513b6u-TEMP.hs
+++ /dev/null
diff --git a/.stack-work/logs/Cabal-2.4.1.0.log b/.stack-work/logs/Cabal-2.4.1.0.log
deleted file mode 100644
index 1cf42e5..0000000
--- a/.stack-work/logs/Cabal-2.4.1.0.log
+++ /dev/null
@@ -1,225 +0,0 @@
1Configuring Cabal-2.4.1.0...
2Preprocessing library for Cabal-2.4.1.0..
3Building library for Cabal-2.4.1.0..
4[ 1 of 220] Compiling Distribution.Compat.Binary ( Distribution/Compat/Binary.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Binary.o )
5[ 2 of 220] Compiling Distribution.Compat.Directory ( Distribution/Compat/Directory.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Directory.o )
6[ 3 of 220] Compiling Distribution.Compat.Exception ( Distribution/Compat/Exception.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Exception.o )
7[ 4 of 220] Compiling Distribution.Compat.Internal.TempFile ( Distribution/Compat/Internal/TempFile.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Internal/TempFile.o )
8[ 5 of 220] Compiling Distribution.Compat.MonadFail ( Distribution/Compat/MonadFail.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/MonadFail.o )
9[ 6 of 220] Compiling Distribution.Compat.Newtype ( Distribution/Compat/Newtype.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Newtype.o )
10[ 7 of 220] Compiling Distribution.Compat.Semigroup ( Distribution/Compat/Semigroup.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Semigroup.o )
11[ 8 of 220] Compiling Distribution.Compat.Stack ( Distribution/Compat/Stack.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Stack.o )
12[ 9 of 220] Compiling Distribution.Compat.Prelude ( Distribution/Compat/Prelude.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Prelude.o )
13[ 10 of 220] Compiling Distribution.Compat.SnocList ( Distribution/Compat/SnocList.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/SnocList.o )
14[ 11 of 220] Compiling Distribution.Compat.ReadP ( Distribution/Compat/ReadP.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/ReadP.o )
15[ 12 of 220] Compiling Distribution.Compat.Prelude.Internal ( Distribution/Compat/Prelude/Internal.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Prelude/Internal.o )
16[ 13 of 220] Compiling Distribution.Compat.Parsing ( Distribution/Compat/Parsing.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Parsing.o )
17[ 14 of 220] Compiling Distribution.Compat.Graph ( Distribution/Compat/Graph.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Graph.o )
18[ 15 of 220] Compiling Distribution.Compat.GetShortPathName ( Distribution/Compat/GetShortPathName.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/GetShortPathName.o )
19[ 16 of 220] Compiling Distribution.Compat.DList ( Distribution/Compat/DList.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/DList.o )
20[ 17 of 220] Compiling Distribution.Compat.Lens ( Distribution/Compat/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Lens.o )
21[ 18 of 220] Compiling Distribution.Compat.CopyFile ( Distribution/Compat/CopyFile.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/CopyFile.o )
22[ 19 of 220] Compiling Distribution.Compat.CharParsing ( Distribution/Compat/CharParsing.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/CharParsing.o )
23[ 20 of 220] Compiling Distribution.CabalSpecVersion ( Distribution/CabalSpecVersion.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/CabalSpecVersion.o )
24[ 21 of 220] Compiling Distribution.Compat.Environment ( Distribution/Compat/Environment.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Environment.o )
25[ 22 of 220] Compiling Distribution.Compat.CreatePipe ( Distribution/Compat/CreatePipe.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/CreatePipe.o )
26[ 23 of 220] Compiling Distribution.GetOpt ( Distribution/GetOpt.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/GetOpt.o )
27[ 24 of 220] Compiling Distribution.Lex ( Distribution/Lex.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Lex.o )
28[ 25 of 220] Compiling Distribution.PackageDescription.Quirks ( Distribution/PackageDescription/Quirks.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Quirks.o )
29[ 26 of 220] Compiling Distribution.PackageDescription.Utils ( Distribution/PackageDescription/Utils.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Utils.o )
30[ 27 of 220] Compiling Distribution.Parsec.Common ( Distribution/Parsec/Common.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Common.o )
31[ 28 of 220] Compiling Distribution.Parsec.Field ( Distribution/Parsec/Field.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Field.o )
32[ 29 of 220] Compiling Distribution.Parsec.LexerMonad ( Distribution/Parsec/LexerMonad.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/LexerMonad.o )
33[ 30 of 220] Compiling Distribution.Parsec.Lexer ( Distribution/Parsec/Lexer.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Lexer.o )
34[ 31 of 220] Compiling Distribution.Parsec.Parser ( Distribution/Parsec/Parser.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Parser.o )
35[ 32 of 220] Compiling Distribution.Pretty ( Distribution/Pretty.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Pretty.o )
36[ 33 of 220] Compiling Distribution.SPDX.LicenseListVersion ( Distribution/SPDX/LicenseListVersion.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseListVersion.o )
37[ 34 of 220] Compiling Distribution.Simple.CCompiler ( Distribution/Simple/CCompiler.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/CCompiler.o )
38[ 35 of 220] Compiling Distribution.Simple.Flag ( Distribution/Simple/Flag.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Flag.o )
39[ 36 of 220] Compiling Distribution.Simple.PreProcess.Unlit ( Distribution/Simple/PreProcess/Unlit.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/PreProcess/Unlit.o )
40[ 37 of 220] Compiling Distribution.Simple.Program.Internal ( Distribution/Simple/Program/Internal.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Internal.o )
41[ 38 of 220] Compiling Distribution.TestSuite ( Distribution/TestSuite.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/TestSuite.o )
42[ 39 of 220] Compiling Distribution.Types.Condition ( Distribution/Types/Condition.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Condition.o )
43[ 40 of 220] Compiling Distribution.Types.CondTree ( Distribution/Types/CondTree.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/CondTree.o )
44[ 41 of 220] Compiling Distribution.Utils.Base62 ( Distribution/Utils/Base62.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/Base62.o )
45[ 42 of 220] Compiling Distribution.Utils.IOData ( Distribution/Utils/IOData.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/IOData.o )
46[ 43 of 220] Compiling Distribution.Utils.MapAccum ( Distribution/Utils/MapAccum.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/MapAccum.o )
47[ 44 of 220] Compiling Distribution.Utils.Progress ( Distribution/Utils/Progress.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/Progress.o )
48[ 45 of 220] Compiling Distribution.Utils.String ( Distribution/Utils/String.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/String.o )
49[ 46 of 220] Compiling Distribution.Utils.ShortText ( Distribution/Utils/ShortText.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/ShortText.o )
50[ 47 of 220] Compiling Distribution.Utils.Generic ( Distribution/Utils/Generic.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/Generic.o )
51[ 48 of 220] Compiling Distribution.Parsec.FieldLineStream ( Distribution/Parsec/FieldLineStream.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/FieldLineStream.o )
52[ 49 of 220] Compiling Distribution.Parsec.Class ( Distribution/Parsec/Class.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Class.o )
53[ 50 of 220] Compiling Distribution.Text ( Distribution/Text.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Text.o )
54[ 51 of 220] Compiling Distribution.Types.Version ( Distribution/Types/Version.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Version.o )
55[ 52 of 220] Compiling Distribution.Types.VersionRange ( Distribution/Types/VersionRange.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/VersionRange.o )
56[ 53 of 220] Compiling Distribution.Types.VersionInterval ( Distribution/Types/VersionInterval.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/VersionInterval.o )
57[ 54 of 220] Compiling Distribution.Types.SourceRepo ( Distribution/Types/SourceRepo.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SourceRepo.o )
58[ 55 of 220] Compiling Distribution.Types.SourceRepo.Lens ( Distribution/Types/SourceRepo/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SourceRepo/Lens.o )
59[ 56 of 220] Compiling Distribution.Types.PkgconfigName ( Distribution/Types/PkgconfigName.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigName.o )
60[ 57 of 220] Compiling Distribution.Types.ForeignLibType ( Distribution/Types/ForeignLibType.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLibType.o )
61[ 58 of 220] Compiling Distribution.Types.ForeignLibOption ( Distribution/Types/ForeignLibOption.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLibOption.o )
62[ 59 of 220] Compiling Distribution.Types.ExecutableScope ( Distribution/Types/ExecutableScope.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ExecutableScope.o )
63[ 60 of 220] Compiling Distribution.Types.ComponentId ( Distribution/Types/ComponentId.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentId.o )
64[ 61 of 220] Compiling Distribution.Types.BuildType ( Distribution/Types/BuildType.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BuildType.o )
65[ 62 of 220] Compiling Distribution.Types.AbiHash ( Distribution/Types/AbiHash.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/AbiHash.o )
66[ 63 of 220] Compiling Distribution.System ( Distribution/System.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/System.o )
67[ 64 of 220] Compiling Distribution.SPDX.LicenseReference ( Distribution/SPDX/LicenseReference.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseReference.o )
68[ 65 of 220] Compiling Distribution.SPDX.LicenseId ( Distribution/SPDX/LicenseId.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseId.o )
69[ 66 of 220] Compiling Distribution.SPDX.LicenseExceptionId ( Distribution/SPDX/LicenseExceptionId.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseExceptionId.o )
70[ 67 of 220] Compiling Distribution.SPDX.LicenseExpression ( Distribution/SPDX/LicenseExpression.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/LicenseExpression.o )
71[ 68 of 220] Compiling Distribution.SPDX.License ( Distribution/SPDX/License.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX/License.o )
72[ 69 of 220] Compiling Distribution.SPDX ( Distribution/SPDX.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/SPDX.o )
73[ 70 of 220] Compiling Distribution.ReadE ( Distribution/ReadE.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/ReadE.o )
74[ 71 of 220] Compiling Distribution.ModuleName ( Distribution/ModuleName.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/ModuleName.o )
75[ 72 of 220] Compiling Distribution.Types.ModuleRenaming ( Distribution/Types/ModuleRenaming.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ModuleRenaming.o )
76[ 73 of 220] Compiling Distribution.Types.IncludeRenaming ( Distribution/Types/IncludeRenaming.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/IncludeRenaming.o )
77[ 74 of 220] Compiling Distribution.FieldGrammar.Class ( Distribution/FieldGrammar/Class.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/Class.o )
78[ 75 of 220] Compiling Distribution.Utils.UnionFind ( Distribution/Utils/UnionFind.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/UnionFind.o )
79[ 76 of 220] Compiling Distribution.Verbosity ( Distribution/Verbosity.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Verbosity.o )
80[ 77 of 220] Compiling Distribution.Version ( Distribution/Version.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Version.o )
81[ 78 of 220] Compiling Distribution.Types.TestType ( Distribution/Types/TestType.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestType.o )
82[ 79 of 220] Compiling Distribution.Types.TestSuiteInterface ( Distribution/Types/TestSuiteInterface.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestSuiteInterface.o )
83[ 80 of 220] Compiling Distribution.Types.PkgconfigDependency ( Distribution/Types/PkgconfigDependency.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PkgconfigDependency.o )
84[ 81 of 220] Compiling Distribution.Types.BenchmarkType ( Distribution/Types/BenchmarkType.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BenchmarkType.o )
85[ 82 of 220] Compiling Distribution.Types.BenchmarkInterface ( Distribution/Types/BenchmarkInterface.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BenchmarkInterface.o )
86[ 83 of 220] Compiling Distribution.License ( Distribution/License.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/License.o )
87[ 84 of 220] Compiling Language.Haskell.Extension ( Language/Haskell/Extension.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Language/Haskell/Extension.o )
88[ 85 of 220] Compiling Distribution.Compiler ( Distribution/Compiler.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compiler.o )
89[ 86 of 220] Compiling Distribution.Parsec.Newtypes ( Distribution/Parsec/Newtypes.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/Newtypes.o )
90[ 87 of 220] Compiling Distribution.ParseUtils ( Distribution/ParseUtils.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/ParseUtils.o )
91[ 88 of 220] Compiling Distribution.Types.PackageName ( Distribution/Types/PackageName.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageName.o )
92[ 89 of 220] Compiling Distribution.Types.UnqualComponentName ( Distribution/Types/UnqualComponentName.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/UnqualComponentName.o )
93[ 90 of 220] Compiling Distribution.Types.ComponentName ( Distribution/Types/ComponentName.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentName.o )
94[ 91 of 220] Compiling Distribution.Types.PackageId ( Distribution/Types/PackageId.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageId.o )
95[ 92 of 220] Compiling Distribution.Types.UnitId ( Distribution/Types/UnitId.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/UnitId.o )
96[ 93 of 220] Compiling Distribution.Types.Module ( Distribution/Types/Module.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Module.o )
97[ 94 of 220] Compiling Distribution.Backpack ( Distribution/Backpack.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack.o )
98[ 95 of 220] Compiling Distribution.Backpack.ModSubst ( Distribution/Backpack/ModSubst.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ModSubst.o )
99[ 96 of 220] Compiling Distribution.Backpack.FullUnitId ( Distribution/Backpack/FullUnitId.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/FullUnitId.o )
100[ 97 of 220] Compiling Distribution.Types.PackageId.Lens ( Distribution/Types/PackageId/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageId/Lens.o )
101[ 98 of 220] Compiling Distribution.Types.ModuleReexport ( Distribution/Types/ModuleReexport.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ModuleReexport.o )
102[ 99 of 220] Compiling Distribution.Types.Mixin ( Distribution/Types/Mixin.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Mixin.o )
103[100 of 220] Compiling Distribution.Types.ExeDependency ( Distribution/Types/ExeDependency.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ExeDependency.o )
104[101 of 220] Compiling Distribution.Types.Dependency ( Distribution/Types/Dependency.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Dependency.o )
105[102 of 220] Compiling Distribution.Types.SetupBuildInfo ( Distribution/Types/SetupBuildInfo.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SetupBuildInfo.o )
106[103 of 220] Compiling Distribution.Types.SetupBuildInfo.Lens ( Distribution/Types/SetupBuildInfo/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/SetupBuildInfo/Lens.o )
107[104 of 220] Compiling Distribution.Types.DependencyMap ( Distribution/Types/DependencyMap.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/DependencyMap.o )
108[105 of 220] Compiling Distribution.Backpack.ModuleScope ( Distribution/Backpack/ModuleScope.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ModuleScope.o )
109[106 of 220] Compiling Distribution.Types.MungedPackageName ( Distribution/Types/MungedPackageName.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/MungedPackageName.o )
110[107 of 220] Compiling Distribution.Types.MungedPackageId ( Distribution/Types/MungedPackageId.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/MungedPackageId.o )
111[108 of 220] Compiling Distribution.Package ( Distribution/Package.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Package.o )
112[109 of 220] Compiling Distribution.Types.AnnotatedId ( Distribution/Types/AnnotatedId.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/AnnotatedId.o )
113[110 of 220] Compiling Distribution.Types.ComponentInclude ( Distribution/Types/ComponentInclude.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentInclude.o )
114[111 of 220] Compiling Distribution.Types.AbiDependency ( Distribution/Types/AbiDependency.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/AbiDependency.o )
115[112 of 220] Compiling Distribution.Simple.InstallDirs ( Distribution/Simple/InstallDirs.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/InstallDirs.o )
116[113 of 220] Compiling Distribution.Types.LegacyExeDependency ( Distribution/Types/LegacyExeDependency.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LegacyExeDependency.o )
117[114 of 220] Compiling Distribution.Types.BuildInfo ( Distribution/Types/BuildInfo.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BuildInfo.o )
118[115 of 220] Compiling Distribution.Types.HookedBuildInfo ( Distribution/Types/HookedBuildInfo.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/HookedBuildInfo.o )
119[116 of 220] Compiling Distribution.Types.BuildInfo.Lens ( Distribution/Types/BuildInfo/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/BuildInfo/Lens.o )
120[117 of 220] Compiling Distribution.Types.TestSuite ( Distribution/Types/TestSuite.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestSuite.o )
121[118 of 220] Compiling Distribution.Types.TestSuite.Lens ( Distribution/Types/TestSuite/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TestSuite/Lens.o )
122[119 of 220] Compiling Distribution.Types.Library ( Distribution/Types/Library.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Library.o )
123[120 of 220] Compiling Distribution.Types.Library.Lens ( Distribution/Types/Library/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Library/Lens.o )
124[121 of 220] Compiling Distribution.Types.ForeignLib ( Distribution/Types/ForeignLib.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLib.o )
125[122 of 220] Compiling Distribution.Types.ForeignLib.Lens ( Distribution/Types/ForeignLib/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ForeignLib/Lens.o )
126[123 of 220] Compiling Distribution.Types.Executable ( Distribution/Types/Executable.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Executable.o )
127[124 of 220] Compiling Distribution.Types.Executable.Lens ( Distribution/Types/Executable/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Executable/Lens.o )
128[125 of 220] Compiling Distribution.Types.Benchmark ( Distribution/Types/Benchmark.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Benchmark.o )
129[126 of 220] Compiling Distribution.Types.Component ( Distribution/Types/Component.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Component.o )
130[127 of 220] Compiling Distribution.Types.ComponentRequestedSpec ( Distribution/Types/ComponentRequestedSpec.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentRequestedSpec.o )
131[128 of 220] Compiling Distribution.Types.PackageDescription ( Distribution/Types/PackageDescription.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageDescription.o )
132[129 of 220] Compiling Distribution.Types.GenericPackageDescription ( Distribution/Types/GenericPackageDescription.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/GenericPackageDescription.o )
133[130 of 220] Compiling Distribution.Types.GenericPackageDescription.Lens ( Distribution/Types/GenericPackageDescription/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/GenericPackageDescription/Lens.o )
134[131 of 220] Compiling Distribution.Types.Benchmark.Lens ( Distribution/Types/Benchmark/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Benchmark/Lens.o )
135[132 of 220] Compiling Distribution.Types.PackageDescription.Lens ( Distribution/Types/PackageDescription/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/PackageDescription/Lens.o )
136[133 of 220] Compiling Distribution.Types.Lens ( Distribution/Types/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/Lens.o )
137[134 of 220] Compiling Distribution.PackageDescription ( Distribution/PackageDescription.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription.o )
138[135 of 220] Compiling Distribution.Simple.BuildToolDepends ( Distribution/Simple/BuildToolDepends.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/BuildToolDepends.o )
139[136 of 220] Compiling Distribution.Types.ExposedModule ( Distribution/Types/ExposedModule.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ExposedModule.o )
140[137 of 220] Compiling Distribution.Types.InstalledPackageInfo ( Distribution/Types/InstalledPackageInfo.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/InstalledPackageInfo.o )
141[138 of 220] Compiling Distribution.Types.InstalledPackageInfo.Lens ( Distribution/Types/InstalledPackageInfo/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/InstalledPackageInfo/Lens.o )
142[139 of 220] Compiling Distribution.PrettyUtils ( Distribution/PrettyUtils.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PrettyUtils.o )
143[140 of 220] Compiling Paths_Cabal ( .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/autogen/Paths_Cabal.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Paths_Cabal.o )
144[141 of 220] Compiling Distribution.Simple.Utils ( Distribution/Simple/Utils.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Utils.o )
145[142 of 220] Compiling Distribution.Utils.NubList ( Distribution/Utils/NubList.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/NubList.o )
146[143 of 220] Compiling Distribution.Utils.LogProgress ( Distribution/Utils/LogProgress.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Utils/LogProgress.o )
147[144 of 220] Compiling Distribution.Simple.Program.ResponseFile ( Distribution/Simple/Program/ResponseFile.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/ResponseFile.o )
148[145 of 220] Compiling Distribution.Simple.Program.Find ( Distribution/Simple/Program/Find.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Find.o )
149[146 of 220] Compiling Distribution.Simple.Program.Types ( Distribution/Simple/Program/Types.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Types.o )
150[147 of 220] Compiling Distribution.Simple.Program.Run ( Distribution/Simple/Program/Run.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Run.o )
151[148 of 220] Compiling Distribution.Simple.Program.Script ( Distribution/Simple/Program/Script.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Script.o )
152[149 of 220] Compiling Distribution.Simple.Program.Hpc ( Distribution/Simple/Program/Hpc.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Hpc.o )
153[150 of 220] Compiling Distribution.Simple.Glob ( Distribution/Simple/Glob.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Glob.o )
154[151 of 220] Compiling Distribution.Simple.Compiler ( Distribution/Simple/Compiler.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Compiler.o )
155[152 of 220] Compiling Distribution.Simple.GHC.ImplInfo ( Distribution/Simple/GHC/ImplInfo.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC/ImplInfo.o )
156[153 of 220] Compiling Distribution.Simple.Program.GHC ( Distribution/Simple/Program/GHC.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/GHC.o )
157[154 of 220] Compiling Distribution.Simple.Program.Builtin ( Distribution/Simple/Program/Builtin.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Builtin.o )
158[155 of 220] Compiling Distribution.Simple.Program.Db ( Distribution/Simple/Program/Db.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Db.o )
159[156 of 220] Compiling Distribution.Simple.Program ( Distribution/Simple/Program.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program.o )
160[157 of 220] Compiling Distribution.Simple.Program.Strip ( Distribution/Simple/Program/Strip.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Strip.o )
161[158 of 220] Compiling Distribution.Simple.Command ( Distribution/Simple/Command.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Command.o )
162[159 of 220] Compiling Distribution.Simple.Setup ( Distribution/Simple/Setup.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Setup.o )
163[160 of 220] Compiling Distribution.Parsec.ParseResult ( Distribution/Parsec/ParseResult.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/ParseResult.o )
164[161 of 220] Compiling Distribution.Parsec.ConfVar ( Distribution/Parsec/ConfVar.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Parsec/ConfVar.o )
165[162 of 220] Compiling Distribution.PackageDescription.Configuration ( Distribution/PackageDescription/Configuration.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Configuration.o )
166[163 of 220] Compiling Distribution.Make ( Distribution/Make.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Make.o )
167[164 of 220] Compiling Distribution.FieldGrammar.Pretty ( Distribution/FieldGrammar/Pretty.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/Pretty.o )
168[165 of 220] Compiling Distribution.FieldGrammar.Parsec ( Distribution/FieldGrammar/Parsec.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/Parsec.o )
169[166 of 220] Compiling Distribution.FieldGrammar ( Distribution/FieldGrammar.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar.o )
170[167 of 220] Compiling Distribution.PackageDescription.FieldGrammar ( Distribution/PackageDescription/FieldGrammar.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/FieldGrammar.o )
171[168 of 220] Compiling Distribution.PackageDescription.PrettyPrint ( Distribution/PackageDescription/PrettyPrint.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/PrettyPrint.o )
172[169 of 220] Compiling Distribution.PackageDescription.Parsec ( Distribution/PackageDescription/Parsec.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Parsec.o )
173[170 of 220] Compiling Distribution.FieldGrammar.FieldDescrs ( Distribution/FieldGrammar/FieldDescrs.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/FieldGrammar/FieldDescrs.o )
174[171 of 220] Compiling Distribution.Types.InstalledPackageInfo.FieldGrammar ( Distribution/Types/InstalledPackageInfo/FieldGrammar.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/InstalledPackageInfo/FieldGrammar.o )
175[172 of 220] Compiling Distribution.InstalledPackageInfo ( Distribution/InstalledPackageInfo.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/InstalledPackageInfo.o )
176[173 of 220] Compiling Distribution.Types.ComponentLocalBuildInfo ( Distribution/Types/ComponentLocalBuildInfo.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/ComponentLocalBuildInfo.o )
177[174 of 220] Compiling Distribution.Types.TargetInfo ( Distribution/Types/TargetInfo.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/TargetInfo.o )
178[175 of 220] Compiling Distribution.Simple.Program.HcPkg ( Distribution/Simple/Program/HcPkg.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/HcPkg.o )
179[176 of 220] Compiling Distribution.Simple.PackageIndex ( Distribution/Simple/PackageIndex.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/PackageIndex.o )
180[177 of 220] Compiling Distribution.Types.LocalBuildInfo ( Distribution/Types/LocalBuildInfo.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Types/LocalBuildInfo.o )
181[178 of 220] Compiling Distribution.Simple.LocalBuildInfo ( Distribution/Simple/LocalBuildInfo.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/LocalBuildInfo.o )
182[179 of 220] Compiling Distribution.Simple.Test.Log ( Distribution/Simple/Test/Log.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test/Log.o )
183[180 of 220] Compiling Distribution.Simple.Program.Ld ( Distribution/Simple/Program/Ld.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Ld.o )
184[181 of 220] Compiling Distribution.Simple.Program.Ar ( Distribution/Simple/Program/Ar.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Program/Ar.o )
185[182 of 220] Compiling Distribution.Simple.Hpc ( Distribution/Simple/Hpc.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Hpc.o )
186[183 of 220] Compiling Distribution.Simple.BuildTarget ( Distribution/Simple/BuildTarget.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/BuildTarget.o )
187[184 of 220] Compiling Distribution.Simple.BuildPaths ( Distribution/Simple/BuildPaths.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/BuildPaths.o )
188[185 of 220] Compiling Distribution.Simple.UHC ( Distribution/Simple/UHC.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/UHC.o )
189[186 of 220] Compiling Distribution.PackageDescription.Check ( Distribution/PackageDescription/Check.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/PackageDescription/Check.o )
190[187 of 220] Compiling Distribution.Simple.Build.PathsModule ( Distribution/Simple/Build/PathsModule.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Build/PathsModule.o )
191[188 of 220] Compiling Distribution.Simple.Test.LibV09 ( Distribution/Simple/Test/LibV09.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test/LibV09.o )
192[189 of 220] Compiling Distribution.Simple.Test.ExeV10 ( Distribution/Simple/Test/ExeV10.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test/ExeV10.o )
193[190 of 220] Compiling Distribution.Simple.Build.Macros ( Distribution/Simple/Build/Macros.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Build/Macros.o )
194[191 of 220] Compiling Distribution.Backpack.Id ( Distribution/Backpack/Id.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/Id.o )
195[192 of 220] Compiling Distribution.Backpack.ConfiguredComponent ( Distribution/Backpack/ConfiguredComponent.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ConfiguredComponent.o )
196[193 of 220] Compiling Distribution.Backpack.ComponentsGraph ( Distribution/Backpack/ComponentsGraph.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ComponentsGraph.o )
197[194 of 220] Compiling Distribution.Simple.HaskellSuite ( Distribution/Simple/HaskellSuite.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/HaskellSuite.o )
198[195 of 220] Compiling Distribution.Simple.GHC.Internal ( Distribution/Simple/GHC/Internal.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC/Internal.o )
199[196 of 220] Compiling Distribution.Simple.GHCJS ( Distribution/Simple/GHCJS.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHCJS.o )
200[197 of 220] Compiling Distribution.Simple.GHC.EnvironmentParser ( Distribution/Simple/GHC/EnvironmentParser.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC/EnvironmentParser.o )
201[198 of 220] Compiling Distribution.Simple.GHC ( Distribution/Simple/GHC.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/GHC.o )
202[199 of 220] Compiling Distribution.Simple.Install ( Distribution/Simple/Install.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Install.o )
203[200 of 220] Compiling Distribution.Backpack.ModuleShape ( Distribution/Backpack/ModuleShape.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ModuleShape.o )
204[201 of 220] Compiling Distribution.Backpack.UnifyM ( Distribution/Backpack/UnifyM.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/UnifyM.o )
205[202 of 220] Compiling Distribution.Backpack.MixLink ( Distribution/Backpack/MixLink.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/MixLink.o )
206[203 of 220] Compiling Distribution.Backpack.PreModuleShape ( Distribution/Backpack/PreModuleShape.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/PreModuleShape.o )
207[204 of 220] Compiling Distribution.Backpack.PreExistingComponent ( Distribution/Backpack/PreExistingComponent.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/PreExistingComponent.o )
208[205 of 220] Compiling Distribution.Backpack.LinkedComponent ( Distribution/Backpack/LinkedComponent.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/LinkedComponent.o )
209[206 of 220] Compiling Distribution.Compat.Time ( Distribution/Compat/Time.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Compat/Time.o )
210[207 of 220] Compiling Distribution.Backpack.ReadyComponent ( Distribution/Backpack/ReadyComponent.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/ReadyComponent.o )
211[208 of 220] Compiling Distribution.Backpack.Configure ( Distribution/Backpack/Configure.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/Configure.o )
212[209 of 220] Compiling Distribution.Backpack.DescribeUnitId ( Distribution/Backpack/DescribeUnitId.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Backpack/DescribeUnitId.o )
213[210 of 220] Compiling Distribution.Simple.Register ( Distribution/Simple/Register.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Register.o )
214[211 of 220] Compiling Distribution.Simple.PreProcess ( Distribution/Simple/PreProcess.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/PreProcess.o )
215[212 of 220] Compiling Distribution.Simple.UserHooks ( Distribution/Simple/UserHooks.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/UserHooks.o )
216[213 of 220] Compiling Distribution.Simple.Test ( Distribution/Simple/Test.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Test.o )
217[214 of 220] Compiling Distribution.Simple.Bench ( Distribution/Simple/Bench.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Bench.o )
218[215 of 220] Compiling Distribution.Simple.SrcDist ( Distribution/Simple/SrcDist.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/SrcDist.o )
219[216 of 220] Compiling Distribution.Simple.Configure ( Distribution/Simple/Configure.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Configure.o )
220[217 of 220] Compiling Distribution.Simple.Build ( Distribution/Simple/Build.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Build.o )
221[218 of 220] Compiling Distribution.Simple.Haddock ( Distribution/Simple/Haddock.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Haddock.o )
222[219 of 220] Compiling Distribution.Simple.Doctest ( Distribution/Simple/Doctest.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple/Doctest.o )
223[220 of 220] Compiling Distribution.Simple ( Distribution/Simple.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Simple.o )
224Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/Cabal-2.4.1.0-9MZFDeNrcJI10bcroa6pq8
225Registering library for Cabal-2.4.1.0..
diff --git a/.stack-work/logs/StateVar-1.1.1.1.log b/.stack-work/logs/StateVar-1.1.1.1.log
deleted file mode 100644
index 37a96e1..0000000
--- a/.stack-work/logs/StateVar-1.1.1.1.log
+++ /dev/null
@@ -1,6 +0,0 @@
1Configuring StateVar-1.1.1.1...
2Preprocessing library for StateVar-1.1.1.1..
3Building library for StateVar-1.1.1.1..
4[1 of 1] Compiling Data.StateVar ( src/Data/StateVar.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/StateVar.o )
5Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/StateVar-1.1.1.1-2ewTKofpCGhC2np5dyFIaR
6Registering library for StateVar-1.1.1.1..
diff --git a/.stack-work/logs/adjunctions-4.4.log b/.stack-work/logs/adjunctions-4.4.log
deleted file mode 100644
index d64a840..0000000
--- a/.stack-work/logs/adjunctions-4.4.log
+++ /dev/null
@@ -1,46 +0,0 @@
1Configuring adjunctions-4.4...
2Preprocessing library for adjunctions-4.4..
3Building library for adjunctions-4.4..
4[ 1 of 11] Compiling Control.Monad.Trans.Conts ( src/Control/Monad/Trans/Conts.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Trans/Conts.o )
5[ 2 of 11] Compiling Data.Functor.Contravariant.Rep ( src/Data/Functor/Contravariant/Rep.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Contravariant/Rep.o )
6
7src/Data/Functor/Contravariant/Rep.hs:59:1: warning: [-Winline-rule-shadowing]
8 Rule "tabulate/index" may never fire
9 because rule "Class op index" for ‘index’ might fire first
10 Probable fix: add phase [n] or [~n] to the competing rule
11 |
1259 | "tabulate/index" forall t. tabulate (index t) = t #-}
13 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
14[ 3 of 11] Compiling Data.Functor.Contravariant.Adjunction ( src/Data/Functor/Contravariant/Adjunction.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Contravariant/Adjunction.o )
15[ 4 of 11] Compiling Control.Monad.Trans.Contravariant.Adjoint ( src/Control/Monad/Trans/Contravariant/Adjoint.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Trans/Contravariant/Adjoint.o )
16[ 5 of 11] Compiling Data.Functor.Rep ( src/Data/Functor/Rep.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Rep.o )
17
18src/Data/Functor/Rep.hs:250:1: warning: [-Winline-rule-shadowing]
19 Rule "tabulate/index" may never fire
20 because rule "Class op index" for ‘index’ might fire first
21 Probable fix: add phase [n] or [~n] to the competing rule
22 |
23250 | "tabulate/index" forall t. tabulate (index t) = t #-}
24 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
25[ 6 of 11] Compiling Data.Functor.Adjunction ( src/Data/Functor/Adjunction.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Adjunction.o )
26
27src/Data/Functor/Adjunction.hs:9:14: warning: [-Wtrustworthy-safe]
28 ‘Data.Functor.Adjunction’ is marked as Trustworthy but has been inferred as safe!
29 |
309 | {-# LANGUAGE Trustworthy #-}
31 | ^^^^^^^^^^^
32[ 7 of 11] Compiling Control.Monad.Trans.Adjoint ( src/Control/Monad/Trans/Adjoint.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Trans/Adjoint.o )
33[ 8 of 11] Compiling Control.Comonad.Trans.Adjoint ( src/Control/Comonad/Trans/Adjoint.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Trans/Adjoint.o )
34[ 9 of 11] Compiling Control.Monad.Representable.State ( src/Control/Monad/Representable/State.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Representable/State.o )
35[10 of 11] Compiling Control.Monad.Representable.Reader ( src/Control/Monad/Representable/Reader.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Representable/Reader.o )
36[11 of 11] Compiling Control.Comonad.Representable.Store ( src/Control/Comonad/Representable/Store.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Representable/Store.o )
37
38src/Control/Comonad/Representable/Store.hs:46:1: warning: [-Wunused-imports]
39 The import of ‘Data.Semigroup’ is redundant
40 except perhaps to import instances from ‘Data.Semigroup’
41 To import instances alone, use: import Data.Semigroup()
42 |
4346 | import Data.Semigroup
44 | ^^^^^^^^^^^^^^^^^^^^^
45Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/adjunctions-4.4-5XvmwZ9ik8T4JDgak5RolE
46Registering library for adjunctions-4.4..
diff --git a/.stack-work/logs/base-orphans-0.8.1.log b/.stack-work/logs/base-orphans-0.8.1.log
deleted file mode 100644
index cbbd334..0000000
--- a/.stack-work/logs/base-orphans-0.8.1.log
+++ /dev/null
@@ -1,7 +0,0 @@
1Configuring base-orphans-0.8.1...
2Preprocessing library for base-orphans-0.8.1..
3Building library for base-orphans-0.8.1..
4[1 of 2] Compiling Data.Orphans ( src/Data/Orphans.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Orphans.o )
5[2 of 2] Compiling Data.Orphans.Prelude ( src/Data/Orphans/Prelude.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Orphans/Prelude.o )
6Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/base-orphans-0.8.1-HeyTAcy4PKhDcGhjvJwDzq
7Registering library for base-orphans-0.8.1..
diff --git a/.stack-work/logs/bifunctors-5.5.4.log b/.stack-work/logs/bifunctors-5.5.4.log
deleted file mode 100644
index 1a51bd3..0000000
--- a/.stack-work/logs/bifunctors-5.5.4.log
+++ /dev/null
@@ -1,20 +0,0 @@
1Configuring bifunctors-5.5.4...
2Preprocessing library for bifunctors-5.5.4..
3Building library for bifunctors-5.5.4..
4[ 1 of 15] Compiling Data.Biapplicative ( src/Data/Biapplicative.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Biapplicative.o )
5[ 2 of 15] Compiling Data.Bifunctor.Biff ( src/Data/Bifunctor/Biff.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bifunctor/Biff.o )
6[ 3 of 15] Compiling Data.Bifunctor.Clown ( src/Data/Bifunctor/Clown.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bifunctor/Clown.o )
7[ 4 of 15] Compiling Data.Bifunctor.Fix ( src/Data/Bifunctor/Fix.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bifunctor/Fix.o )
8[ 5 of 15] Compiling Data.Bifunctor.Functor ( src/Data/Bifunctor/Functor.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bifunctor/Functor.o )
9[ 6 of 15] Compiling Data.Bifunctor.Flip ( src/Data/Bifunctor/Flip.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bifunctor/Flip.o )
10[ 7 of 15] Compiling Data.Bifunctor.Join ( src/Data/Bifunctor/Join.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bifunctor/Join.o )
11[ 8 of 15] Compiling Data.Bifunctor.Joker ( src/Data/Bifunctor/Joker.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bifunctor/Joker.o )
12[ 9 of 15] Compiling Data.Bifunctor.Product ( src/Data/Bifunctor/Product.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bifunctor/Product.o )
13[10 of 15] Compiling Data.Bifunctor.Sum ( src/Data/Bifunctor/Sum.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bifunctor/Sum.o )
14[11 of 15] Compiling Data.Bifunctor.TH.Internal ( src/Data/Bifunctor/TH/Internal.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bifunctor/TH/Internal.o )
15[12 of 15] Compiling Data.Bifunctor.TH ( src/Data/Bifunctor/TH.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bifunctor/TH.o )
16[13 of 15] Compiling Data.Bifunctor.Tannen ( src/Data/Bifunctor/Tannen.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bifunctor/Tannen.o )
17[14 of 15] Compiling Data.Bifunctor.Wrapped ( src/Data/Bifunctor/Wrapped.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bifunctor/Wrapped.o )
18[15 of 15] Compiling Paths_bifunctors ( .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/autogen/Paths_bifunctors.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Paths_bifunctors.o )
19Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/bifunctors-5.5.4-JI14q9FdaTRLWn4YdH8JmV
20Registering library for bifunctors-5.5.4..
diff --git a/.stack-work/logs/bytes-0.15.5.log b/.stack-work/logs/bytes-0.15.5.log
deleted file mode 100644
index 97632e6..0000000
--- a/.stack-work/logs/bytes-0.15.5.log
+++ /dev/null
@@ -1,13 +0,0 @@
1[1 of 2] Compiling Main ( /tmp/stack14391/bytes-0.15.5/Setup.lhs, /tmp/stack14391/bytes-0.15.5/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/Main.o )
2[2 of 2] Compiling StackSetupShim ( /home/sv/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs, /tmp/stack14391/bytes-0.15.5/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/StackSetupShim.o )
3Linking /tmp/stack14391/bytes-0.15.5/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/setup ...
4Configuring bytes-0.15.5...
5Preprocessing library for bytes-0.15.5..
6Building library for bytes-0.15.5..
7[1 of 5] Compiling Data.Bytes.Get ( src/Data/Bytes/Get.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bytes/Get.o )
8[2 of 5] Compiling Data.Bytes.Put ( src/Data/Bytes/Put.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bytes/Put.o )
9[3 of 5] Compiling Data.Bytes.Signed ( src/Data/Bytes/Signed.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bytes/Signed.o )
10[4 of 5] Compiling Data.Bytes.VarInt ( src/Data/Bytes/VarInt.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bytes/VarInt.o )
11[5 of 5] Compiling Data.Bytes.Serial ( src/Data/Bytes/Serial.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bytes/Serial.o )
12Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/bytes-0.15.5-3xefL3v3Ncd2XFpMRBDGRq
13Registering library for bytes-0.15.5..
diff --git a/.stack-work/logs/cabal-doctest-1.0.6.log b/.stack-work/logs/cabal-doctest-1.0.6.log
deleted file mode 100644
index 0b3bd21..0000000
--- a/.stack-work/logs/cabal-doctest-1.0.6.log
+++ /dev/null
@@ -1,6 +0,0 @@
1Configuring cabal-doctest-1.0.6...
2Preprocessing library for cabal-doctest-1.0.6..
3Building library for cabal-doctest-1.0.6..
4[1 of 1] Compiling Distribution.Extra.Doctest ( src/Distribution/Extra/Doctest.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Distribution/Extra/Doctest.o )
5Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/cabal-doctest-1.0.6-GxlnXP6RWcB1QAJigGyNcv
6Registering library for cabal-doctest-1.0.6..
diff --git a/.stack-work/logs/call-stack-0.1.0.log b/.stack-work/logs/call-stack-0.1.0.log
deleted file mode 100644
index 9d0fbe4..0000000
--- a/.stack-work/logs/call-stack-0.1.0.log
+++ /dev/null
@@ -1,8 +0,0 @@
1Configuring call-stack-0.1.0...
2Preprocessing library for call-stack-0.1.0..
3Building library for call-stack-0.1.0..
4[1 of 3] Compiling Data.SrcLoc ( src/Data/SrcLoc.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/SrcLoc.o )
5[2 of 3] Compiling Data.CallStack ( src/Data/CallStack.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/CallStack.o )
6[3 of 3] Compiling Paths_call_stack ( .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/autogen/Paths_call_stack.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Paths_call_stack.o )
7Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/call-stack-0.1.0-J1eWgTNOnM4IGVyeW0v2YZ
8Registering library for call-stack-0.1.0..
diff --git a/.stack-work/logs/cereal-0.5.8.0.log b/.stack-work/logs/cereal-0.5.8.0.log
deleted file mode 100644
index 5f1bedf..0000000
--- a/.stack-work/logs/cereal-0.5.8.0.log
+++ /dev/null
@@ -1,16 +0,0 @@
1Configuring cereal-0.5.8.0...
2Preprocessing library for cereal-0.5.8.0..
3Building library for cereal-0.5.8.0..
4[1 of 4] Compiling Data.Serialize.Get ( src/Data/Serialize/Get.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Serialize/Get.o )
5[2 of 4] Compiling Data.Serialize.Put ( src/Data/Serialize/Put.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Serialize/Put.o )
6[3 of 4] Compiling Data.Serialize.IEEE754 ( src/Data/Serialize/IEEE754.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Serialize/IEEE754.o )
7[4 of 4] Compiling Data.Serialize ( src/Data/Serialize.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Serialize.o )
8
9src/Data/Serialize.hs:291:9: warning: [-Wincomplete-patterns]
10 Pattern match(es) are non-exhaustive
11 In an equation for ‘findNr’: Patterns not matched: _ _
12 |
13291 | findNr lo hi
14 | ^^^^^^^^^^^^...
15Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/cereal-0.5.8.0-6rtfJLvNbgP66iuaPkuxJC
16Registering library for cereal-0.5.8.0..
diff --git a/.stack-work/logs/comonad-5.0.5.log b/.stack-work/logs/comonad-5.0.5.log
deleted file mode 100644
index c261777..0000000
--- a/.stack-work/logs/comonad-5.0.5.log
+++ /dev/null
@@ -1,23 +0,0 @@
1[1 of 2] Compiling Main ( /tmp/stack14391/comonad-5.0.5/Setup.lhs, /tmp/stack14391/comonad-5.0.5/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/Main.o )
2[2 of 2] Compiling StackSetupShim ( /home/sv/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs, /tmp/stack14391/comonad-5.0.5/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/StackSetupShim.o )
3Linking /tmp/stack14391/comonad-5.0.5/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/setup ...
4Configuring comonad-5.0.5...
5Preprocessing library for comonad-5.0.5..
6Building library for comonad-5.0.5..
7[ 1 of 15] Compiling Control.Comonad ( src/Control/Comonad.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad.o )
8[ 2 of 15] Compiling Control.Comonad.Hoist.Class ( src/Control/Comonad/Hoist/Class.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Hoist/Class.o )
9[ 3 of 15] Compiling Control.Comonad.Trans.Class ( src/Control/Comonad/Trans/Class.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Trans/Class.o )
10[ 4 of 15] Compiling Control.Comonad.Trans.Env ( src/Control/Comonad/Trans/Env.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Trans/Env.o )
11[ 5 of 15] Compiling Control.Comonad.Trans.Identity ( src/Control/Comonad/Trans/Identity.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Trans/Identity.o )
12[ 6 of 15] Compiling Control.Comonad.Identity ( src/Control/Comonad/Identity.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Identity.o )
13[ 7 of 15] Compiling Control.Comonad.Trans.Store ( src/Control/Comonad/Trans/Store.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Trans/Store.o )
14[ 8 of 15] Compiling Control.Comonad.Trans.Traced ( src/Control/Comonad/Trans/Traced.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Trans/Traced.o )
15[ 9 of 15] Compiling Control.Comonad.Traced.Class ( src/Control/Comonad/Traced/Class.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Traced/Class.o )
16[10 of 15] Compiling Control.Comonad.Traced ( src/Control/Comonad/Traced.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Traced.o )
17[11 of 15] Compiling Control.Comonad.Store.Class ( src/Control/Comonad/Store/Class.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Store/Class.o )
18[12 of 15] Compiling Control.Comonad.Store ( src/Control/Comonad/Store.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Store.o )
19[13 of 15] Compiling Control.Comonad.Env.Class ( src/Control/Comonad/Env/Class.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Env/Class.o )
20[14 of 15] Compiling Control.Comonad.Env ( src/Control/Comonad/Env.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Env.o )
21[15 of 15] Compiling Data.Functor.Composition ( src/Data/Functor/Composition.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Composition.o )
22Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/comonad-5.0.5-FO6wPvVdvoe5bevdeq1PfM
23Registering library for comonad-5.0.5..
diff --git a/.stack-work/logs/contravariant-1.5.1.log b/.stack-work/logs/contravariant-1.5.1.log
deleted file mode 100644
index c568ac4..0000000
--- a/.stack-work/logs/contravariant-1.5.1.log
+++ /dev/null
@@ -1,8 +0,0 @@
1Configuring contravariant-1.5.1...
2Preprocessing library for contravariant-1.5.1..
3Building library for contravariant-1.5.1..
4[1 of 3] Compiling Data.Functor.Contravariant.Divisible ( src/Data/Functor/Contravariant/Divisible.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Contravariant/Divisible.o )
5[2 of 3] Compiling Data.Functor.Contravariant.Compose ( src/Data/Functor/Contravariant/Compose.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Contravariant/Compose.o )
6[3 of 3] Compiling Data.Functor.Contravariant.Generic ( src/Data/Functor/Contravariant/Generic.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Contravariant/Generic.o )
7Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/contravariant-1.5.1-5DqKSjbrRzZU8YLmfpGsF
8Registering library for contravariant-1.5.1..
diff --git a/.stack-work/logs/distributive-0.6.log b/.stack-work/logs/distributive-0.6.log
deleted file mode 100644
index 0ea1b6e..0000000
--- a/.stack-work/logs/distributive-0.6.log
+++ /dev/null
@@ -1,10 +0,0 @@
1[1 of 2] Compiling Main ( /tmp/stack14391/distributive-0.6/Setup.lhs, /tmp/stack14391/distributive-0.6/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/Main.o )
2[2 of 2] Compiling StackSetupShim ( /home/sv/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs, /tmp/stack14391/distributive-0.6/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/StackSetupShim.o )
3Linking /tmp/stack14391/distributive-0.6/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/setup ...
4Configuring distributive-0.6...
5Preprocessing library for distributive-0.6..
6Building library for distributive-0.6..
7[1 of 2] Compiling Data.Distributive ( src/Data/Distributive.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Distributive.o )
8[2 of 2] Compiling Data.Distributive.Generic ( src/Data/Distributive/Generic.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Distributive/Generic.o )
9Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/distributive-0.6-9dQuxsXiNSOFiN4BOgtPCR
10Registering library for distributive-0.6..
diff --git a/.stack-work/logs/exceptions-0.10.2.log b/.stack-work/logs/exceptions-0.10.2.log
deleted file mode 100644
index d7e7224..0000000
--- a/.stack-work/logs/exceptions-0.10.2.log
+++ /dev/null
@@ -1,7 +0,0 @@
1Configuring exceptions-0.10.2...
2Preprocessing library for exceptions-0.10.2..
3Building library for exceptions-0.10.2..
4[1 of 2] Compiling Control.Monad.Catch ( src/Control/Monad/Catch.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Catch.o )
5[2 of 2] Compiling Control.Monad.Catch.Pure ( src/Control/Monad/Catch/Pure.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Catch/Pure.o )
6Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/exceptions-0.10.2-965Nx9KftkgCsZ4B7Zhuyu
7Registering library for exceptions-0.10.2..
diff --git a/.stack-work/logs/free-5.1.1.log b/.stack-work/logs/free-5.1.1.log
deleted file mode 100644
index 8a8070f..0000000
--- a/.stack-work/logs/free-5.1.1.log
+++ /dev/null
@@ -1,41 +0,0 @@
1Configuring free-5.1.1...
2Preprocessing library for free-5.1.1..
3Building library for free-5.1.1..
4[ 1 of 20] Compiling Control.Alternative.Free ( src/Control/Alternative/Free.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Alternative/Free.o )
5[ 2 of 20] Compiling Control.Alternative.Free.Final ( src/Control/Alternative/Free/Final.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Alternative/Free/Final.o )
6[ 3 of 20] Compiling Control.Applicative.Free ( src/Control/Applicative/Free.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Applicative/Free.o )
7[ 4 of 20] Compiling Control.Applicative.Free.Fast ( src/Control/Applicative/Free/Fast.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Applicative/Free/Fast.o )
8[ 5 of 20] Compiling Control.Applicative.Free.Final ( src/Control/Applicative/Free/Final.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Applicative/Free/Final.o )
9[ 6 of 20] Compiling Control.Applicative.Trans.Free ( src/Control/Applicative/Trans/Free.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Applicative/Trans/Free.o )
10[ 7 of 20] Compiling Control.Comonad.Cofree.Class ( src/Control/Comonad/Cofree/Class.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Cofree/Class.o )
11[ 8 of 20] Compiling Control.Comonad.Trans.Cofree ( src/Control/Comonad/Trans/Cofree.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Trans/Cofree.o )
12[ 9 of 20] Compiling Control.Monad.Free.Class ( src/Control/Monad/Free/Class.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Free/Class.o )
13[10 of 20] Compiling Control.Monad.Free.TH ( src/Control/Monad/Free/TH.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Free/TH.o )
14[11 of 20] Compiling Data.Functor.Classes.Compat ( src/Data/Functor/Classes/Compat.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Classes/Compat.o )
15[12 of 20] Compiling Control.Monad.Trans.Iter ( src/Control/Monad/Trans/Iter.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Trans/Iter.o )
16[13 of 20] Compiling Control.Monad.Trans.Free.Ap ( src/Control/Monad/Trans/Free/Ap.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Trans/Free/Ap.o )
17
18src/Control/Monad/Trans/Free/Ap.hs:311:3: warning: [-Wnoncanonical-monadfail-instances]
19 Noncanonical ‘fail’ definition detected
20 in the instance declaration for ‘Monad (FreeT f m)’.
21 Either remove definition for ‘fail’ or define as ‘fail = Control.Monad.Fail.fail’
22 |
23311 | fail e = FreeT (fail e)
24 | ^^^^^^^^^^^^^^^^^^^^^^^
25[14 of 20] Compiling Control.Monad.Trans.Free ( src/Control/Monad/Trans/Free.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Trans/Free.o )
26
27src/Control/Monad/Trans/Free.hs:312:3: warning: [-Wnoncanonical-monadfail-instances]
28 Noncanonical ‘fail’ definition detected
29 in the instance declaration for ‘Monad (FreeT f m)’.
30 Either remove definition for ‘fail’ or define as ‘fail = Control.Monad.Fail.fail’
31 |
32312 | fail e = FreeT (fail e)
33 | ^^^^^^^^^^^^^^^^^^^^^^^
34[15 of 20] Compiling Control.Monad.Trans.Free.Church ( src/Control/Monad/Trans/Free/Church.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Trans/Free/Church.o )
35[16 of 20] Compiling Control.Monad.Free.Ap ( src/Control/Monad/Free/Ap.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Free/Ap.o )
36[17 of 20] Compiling Control.Monad.Free ( src/Control/Monad/Free.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Free.o )
37[18 of 20] Compiling Control.Monad.Free.Church ( src/Control/Monad/Free/Church.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Free/Church.o )
38[19 of 20] Compiling Control.Comonad.Trans.Coiter ( src/Control/Comonad/Trans/Coiter.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Trans/Coiter.o )
39[20 of 20] Compiling Control.Comonad.Cofree ( src/Control/Comonad/Cofree.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Cofree.o )
40Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/free-5.1.1-4bsEiYxPhIEFqPXXuEKbd4
41Registering library for free-5.1.1..
diff --git a/.stack-work/logs/ghc-paths-0.1.0.9.log b/.stack-work/logs/ghc-paths-0.1.0.9.log
deleted file mode 100644
index 8c8d776..0000000
--- a/.stack-work/logs/ghc-paths-0.1.0.9.log
+++ /dev/null
@@ -1,17 +0,0 @@
1[1 of 2] Compiling Main ( /tmp/stack10672/ghc-paths-0.1.0.9/Setup.hs, /tmp/stack10672/ghc-paths-0.1.0.9/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/Main.o )
2
3/tmp/stack10672/ghc-paths-0.1.0.9/Setup.hs:29:18: warning: [-Wdeprecations]
4 In the use of ‘rawSystemProgramStdoutConf’
5 (imported from Distribution.Simple.Program):
6 Deprecated: "use getDbProgramOutput instead. This symbol will be removed in Cabal-3.0 (est. Mar 2019)."
7 |
829 | libdir_ <- rawSystemProgramStdoutConf (fromFlag (configVerbosity flags))
9 | ^^^^^^^^^^^^^^^^^^^^^^^^^^
10[2 of 2] Compiling StackSetupShim ( /home/sv/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs, /tmp/stack10672/ghc-paths-0.1.0.9/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/StackSetupShim.o )
11Linking /tmp/stack10672/ghc-paths-0.1.0.9/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/setup ...
12Configuring ghc-paths-0.1.0.9...
13Preprocessing library for ghc-paths-0.1.0.9..
14Building library for ghc-paths-0.1.0.9..
15[1 of 1] Compiling GHC.Paths ( GHC/Paths.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/GHC/Paths.o )
16Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/ghc-paths-0.1.0.9-KaBYbRV3ryA10w04FwbrO2
17Registering library for ghc-paths-0.1.0.9..
diff --git a/.stack-work/logs/hashable-1.2.7.0.log b/.stack-work/logs/hashable-1.2.7.0.log
deleted file mode 100644
index f73d845..0000000
--- a/.stack-work/logs/hashable-1.2.7.0.log
+++ /dev/null
@@ -1,9 +0,0 @@
1Configuring hashable-1.2.7.0...
2Preprocessing library for hashable-1.2.7.0..
3Building library for hashable-1.2.7.0..
4[1 of 4] Compiling Data.Hashable.Class ( Data/Hashable/Class.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Hashable/Class.o )
5[2 of 4] Compiling Data.Hashable.Generic ( Data/Hashable/Generic.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Hashable/Generic.o )
6[3 of 4] Compiling Data.Hashable ( Data/Hashable.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Hashable.o )
7[4 of 4] Compiling Data.Hashable.Lifted ( Data/Hashable/Lifted.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Hashable/Lifted.o )
8Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/hashable-1.2.7.0-CWI8VZuQTAYWIQTQQtqCV
9Registering library for hashable-1.2.7.0..
diff --git a/.stack-work/logs/haskeline-0.7.5.0.log b/.stack-work/logs/haskeline-0.7.5.0.log
deleted file mode 100644
index 3b2647a..0000000
--- a/.stack-work/logs/haskeline-0.7.5.0.log
+++ /dev/null
@@ -1,32 +0,0 @@
1Configuring haskeline-0.7.5.0...
2Preprocessing library for haskeline-0.7.5.0..
3Building library for haskeline-0.7.5.0..
4[ 1 of 27] Compiling System.Console.Haskeline.Directory ( .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Directory.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Directory.o )
5[ 2 of 27] Compiling System.Console.Haskeline.Key ( System/Console/Haskeline/Key.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Key.o )
6[ 3 of 27] Compiling System.Console.Haskeline.LineState ( System/Console/Haskeline/LineState.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/LineState.o )
7[ 4 of 27] Compiling System.Console.Haskeline.Command ( System/Console/Haskeline/Command.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Command.o )
8[ 5 of 27] Compiling System.Console.Haskeline.Backend.WCWidth ( System/Console/Haskeline/Backend/WCWidth.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Backend/WCWidth.o )
9[ 6 of 27] Compiling System.Console.Haskeline.MonadException ( System/Console/Haskeline/MonadException.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/MonadException.o )
10[ 7 of 27] Compiling System.Console.Haskeline.Monads ( System/Console/Haskeline/Monads.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Monads.o )
11[ 8 of 27] Compiling System.Console.Haskeline.Completion ( System/Console/Haskeline/Completion.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Completion.o )
12[ 9 of 27] Compiling System.Console.Haskeline.Command.Undo ( System/Console/Haskeline/Command/Undo.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Command/Undo.o )
13[10 of 27] Compiling System.Console.Haskeline.Command.KillRing ( System/Console/Haskeline/Command/KillRing.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Command/KillRing.o )
14[11 of 27] Compiling System.Console.Haskeline.Prefs ( System/Console/Haskeline/Prefs.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Prefs.o )
15[12 of 27] Compiling System.Console.Haskeline.Recover ( System/Console/Haskeline/Recover.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Recover.o )
16[13 of 27] Compiling System.Console.Haskeline.History ( System/Console/Haskeline/History.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/History.o )
17[14 of 27] Compiling System.Console.Haskeline.Command.History ( System/Console/Haskeline/Command/History.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Command/History.o )
18[15 of 27] Compiling System.Console.Haskeline.Backend.Posix.Encoder ( System/Console/Haskeline/Backend/Posix/Encoder.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Backend/Posix/Encoder.o )
19[16 of 27] Compiling System.Console.Haskeline.Term ( System/Console/Haskeline/Term.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Term.o )
20[17 of 27] Compiling System.Console.Haskeline.RunCommand ( System/Console/Haskeline/RunCommand.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/RunCommand.o )
21[18 of 27] Compiling System.Console.Haskeline.Command.Completion ( System/Console/Haskeline/Command/Completion.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Command/Completion.o )
22[19 of 27] Compiling System.Console.Haskeline.Backend.Posix ( .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Backend/Posix.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Backend/Posix.o )
23[20 of 27] Compiling System.Console.Haskeline.Backend.Terminfo ( System/Console/Haskeline/Backend/Terminfo.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Backend/Terminfo.o )
24[21 of 27] Compiling System.Console.Haskeline.Backend.DumbTerm ( System/Console/Haskeline/Backend/DumbTerm.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Backend/DumbTerm.o )
25[22 of 27] Compiling System.Console.Haskeline.Backend ( System/Console/Haskeline/Backend.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Backend.o )
26[23 of 27] Compiling System.Console.Haskeline.InputT ( System/Console/Haskeline/InputT.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/InputT.o )
27[24 of 27] Compiling System.Console.Haskeline.Emacs ( System/Console/Haskeline/Emacs.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Emacs.o )
28[25 of 27] Compiling System.Console.Haskeline.Vi ( System/Console/Haskeline/Vi.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/Vi.o )
29[26 of 27] Compiling System.Console.Haskeline ( System/Console/Haskeline.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline.o )
30[27 of 27] Compiling System.Console.Haskeline.IO ( System/Console/Haskeline/IO.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Console/Haskeline/IO.o )
31Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/haskeline-0.7.5.0-ADzuRaH0DKHIRvvi965fg2
32Registering library for haskeline-0.7.5.0..
diff --git a/.stack-work/logs/hmatrix-0.19.0.0.log b/.stack-work/logs/hmatrix-0.19.0.0.log
deleted file mode 100644
index 7d0df8e..0000000
--- a/.stack-work/logs/hmatrix-0.19.0.0.log
+++ /dev/null
@@ -1,48 +0,0 @@
1Configuring hmatrix-0.19.0.0...
2Preprocessing library for hmatrix-0.19.0.0..
3Building library for hmatrix-0.19.0.0..
4[ 1 of 27] Compiling Internal.Vector ( src/Internal/Vector.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/Vector.o )
5[ 2 of 27] Compiling Internal.Devel ( src/Internal/Devel.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/Devel.o )
6[ 3 of 27] Compiling Internal.Vectorized ( src/Internal/Vectorized.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/Vectorized.o )
7[ 4 of 27] Compiling Internal.Matrix ( src/Internal/Matrix.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/Matrix.o )
8[ 5 of 27] Compiling Internal.ST ( src/Internal/ST.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/ST.o )
9[ 6 of 27] Compiling Internal.IO ( src/Internal/IO.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/IO.o )
10[ 7 of 27] Compiling Internal.Element ( src/Internal/Element.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/Element.o )
11[ 8 of 27] Compiling Internal.Conversion ( src/Internal/Conversion.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/Conversion.o )
12[ 9 of 27] Compiling Internal.LAPACK ( src/Internal/LAPACK.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/LAPACK.o )
13[10 of 27] Compiling Internal.Numeric ( src/Internal/Numeric.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/Numeric.o )
14[11 of 27] Compiling Internal.Sparse ( src/Internal/Sparse.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/Sparse.o )
15[12 of 27] Compiling Internal.Chain ( src/Internal/Chain.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/Chain.o )
16[13 of 27] Compiling Internal.Algorithms ( src/Internal/Algorithms.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/Algorithms.o )
17
18src/Internal/Algorithms.hs:922:11: warning: [-Wname-shadowing]
19 This binding for ‘<>’ shadows the existing binding
20 imported from ‘Prelude’ at src/Internal/Algorithms.hs:25:8-26
21 (and originally defined in ‘GHC.Base’)
22 |
23922 | (<>) = multiply
24 | ^^^^
25
26src/Internal/Algorithms.hs:1103:5: warning: [-Wname-shadowing]
27 This binding for ‘<>’ shadows the existing binding
28 imported from ‘Prelude’ at src/Internal/Algorithms.hs:25:8-26
29 (and originally defined in ‘GHC.Base’)
30 |
311103 | (<>) = mXm
32 | ^^^^
33[14 of 27] Compiling Internal.Random ( src/Internal/Random.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/Random.o )
34[15 of 27] Compiling Internal.Container ( src/Internal/Container.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/Container.o )
35[16 of 27] Compiling Internal.Convolution ( src/Internal/Convolution.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/Convolution.o )
36[17 of 27] Compiling Numeric.LinearAlgebra.Devel ( src/Numeric/LinearAlgebra/Devel.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Numeric/LinearAlgebra/Devel.o )
37[18 of 27] Compiling Numeric.Matrix ( src/Numeric/Matrix.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Numeric/Matrix.o )
38[19 of 27] Compiling Numeric.Vector ( src/Numeric/Vector.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Numeric/Vector.o )
39[20 of 27] Compiling Internal.Util ( src/Internal/Util.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/Util.o )
40[21 of 27] Compiling Internal.Modular ( src/Internal/Modular.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/Modular.o )
41[22 of 27] Compiling Numeric.LinearAlgebra.Data ( src/Numeric/LinearAlgebra/Data.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Numeric/LinearAlgebra/Data.o )
42[23 of 27] Compiling Internal.CG ( src/Internal/CG.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/CG.o )
43[24 of 27] Compiling Numeric.LinearAlgebra ( src/Numeric/LinearAlgebra.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Numeric/LinearAlgebra.o )
44[25 of 27] Compiling Numeric.LinearAlgebra.HMatrix ( src/Numeric/LinearAlgebra/HMatrix.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Numeric/LinearAlgebra/HMatrix.o )
45[26 of 27] Compiling Internal.Static ( src/Internal/Static.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Internal/Static.o )
46[27 of 27] Compiling Numeric.LinearAlgebra.Static ( src/Numeric/LinearAlgebra/Static.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Numeric/LinearAlgebra/Static.o )
47Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/hmatrix-0.19.0.0-2s9G4ERdQNGmPHLhVSJnl
48Registering library for hmatrix-0.19.0.0..
diff --git a/.stack-work/logs/integer-logarithms-1.0.3.log b/.stack-work/logs/integer-logarithms-1.0.3.log
deleted file mode 100644
index af31eec..0000000
--- a/.stack-work/logs/integer-logarithms-1.0.3.log
+++ /dev/null
@@ -1,9 +0,0 @@
1Configuring integer-logarithms-1.0.3...
2Preprocessing library for integer-logarithms-1.0.3..
3Building library for integer-logarithms-1.0.3..
4[1 of 4] Compiling GHC.Integer.Logarithms.Compat ( src/GHC/Integer/Logarithms/Compat.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/GHC/Integer/Logarithms/Compat.o )
5[2 of 4] Compiling Math.NumberTheory.Logarithms ( src/Math/NumberTheory/Logarithms.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Math/NumberTheory/Logarithms.o )
6[3 of 4] Compiling Math.NumberTheory.Powers.Integer ( src/Math/NumberTheory/Powers/Integer.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Math/NumberTheory/Powers/Integer.o )
7[4 of 4] Compiling Math.NumberTheory.Powers.Natural ( src/Math/NumberTheory/Powers/Natural.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Math/NumberTheory/Powers/Natural.o )
8Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/integer-logarithms-1.0.3-L1fXvdNnENnEcLpMml0rI7
9Registering library for integer-logarithms-1.0.3..
diff --git a/.stack-work/logs/intero-0.1.40.log b/.stack-work/logs/intero-0.1.40.log
deleted file mode 100644
index 9b36e46..0000000
--- a/.stack-work/logs/intero-0.1.40.log
+++ /dev/null
@@ -1,64 +0,0 @@
1Configuring intero-0.1.40...
2Preprocessing executable 'intero' for intero-0.1.40..
3Building executable 'intero' for intero-0.1.40..
4[ 1 of 10] Compiling Intero.Compat ( src/Intero/Compat.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/intero/intero-tmp/Intero/Compat.o )
5[ 2 of 10] Compiling GhciTypes ( src/GhciTypes.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/intero/intero-tmp/GhciTypes.o )
6[ 3 of 10] Compiling GhciMonad ( src/GhciMonad.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/intero/intero-tmp/GhciMonad.o )
7[ 4 of 10] Compiling GhciTags ( src/GhciTags.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/intero/intero-tmp/GhciTags.o )
8[ 5 of 10] Compiling GhciInfo ( src/GhciInfo.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/intero/intero-tmp/GhciInfo.o )
9[ 6 of 10] Compiling GhciFind ( src/GhciFind.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/intero/intero-tmp/GhciFind.o )
10[ 7 of 10] Compiling Completion ( src/Completion.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/intero/intero-tmp/Completion.o )
11[ 8 of 10] Compiling Paths_intero ( .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/intero/autogen/Paths_intero.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/intero/intero-tmp/Paths_intero.o )
12[ 9 of 10] Compiling InteractiveUI ( src/InteractiveUI.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/intero/intero-tmp/InteractiveUI.o )
13
14src/InteractiveUI.hs:116:1: warning: [-Wdeprecations]
15 Module ‘Network’ is deprecated:
16 The high level Network interface is no longer supported. Please use Network.Socket.
17 |
18116 | import qualified Network
19 | ^^^^^^^^^^^^^^^^^^^^^^^^
20
21src/InteractiveUI.hs:117:1: warning: [-Wdeprecations]
22 Module ‘Network.BSD’ is deprecated:
23 This platform dependent module is no longer supported.
24 |
25117 | import Network.BSD
26 | ^^^^^^^^^^^^^^^^^^
27
28src/InteractiveUI.hs:695:32: warning: [-Wdeprecations]
29 In the use of ‘accept’ (imported from Network):
30 Deprecated: "The high level Network interface is no longer supported. Please use Network.Socket."
31 |
32695 | (h, _, _) <- Network.accept sock
33 | ^^^^^^^^^^^^^^
34
35src/InteractiveUI.hs:731:12: warning: [-Wdeprecations]
36 In the use of ‘getProtocolNumber’ (imported from Network.BSD):
37 Deprecated: "This platform dependent module is no longer supported."
38 |
39731 | proto <- getProtocolNumber "tcp"
40 | ^^^^^^^^^^^^^^^^^
41
42src/InteractiveUI.hs:737:19: warning: [-Wdeprecations]
43 In the use of ‘getHostByName’ (imported from Network.BSD):
44 Deprecated: "This platform dependent module is no longer supported."
45 |
46737 | address <- getHostByName "127.0.0.1"
47 | ^^^^^^^^^^^^^
48
49src/InteractiveUI.hs:738:32: warning: [-Wdeprecations]
50 In the use of ‘aNY_PORT’ (imported from Network.Socket):
51 Deprecated: "Use defaultPort instead"
52 |
53738 | bind sock (SockAddrInet aNY_PORT (hostAddress address))
54 | ^^^^^^^^
55
56src/InteractiveUI.hs:738:42: warning: [-Wdeprecations]
57 In the use of ‘hostAddress’ (imported from Network.BSD):
58 Deprecated: "This platform dependent module is no longer supported."
59 |
60738 | bind sock (SockAddrInet aNY_PORT (hostAddress address))
61 | ^^^^^^^^^^^
62[10 of 10] Compiling Main ( src/Main.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/intero/intero-tmp/Main.o )
63Linking .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/intero/intero ...
64Installing executable intero in /home/sv/src/8queens/.stack-work/install/x86_64-linux/lts-13.22/8.6.5/bin
diff --git a/.stack-work/logs/invariant-0.5.3.log b/.stack-work/logs/invariant-0.5.3.log
deleted file mode 100644
index 6943a4d..0000000
--- a/.stack-work/logs/invariant-0.5.3.log
+++ /dev/null
@@ -1,9 +0,0 @@
1Configuring invariant-0.5.3...
2Preprocessing library for invariant-0.5.3..
3Building library for invariant-0.5.3..
4[1 of 4] Compiling Data.Functor.Invariant ( src/Data/Functor/Invariant.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Invariant.o )
5[2 of 4] Compiling Data.Functor.Invariant.TH.Internal ( src/Data/Functor/Invariant/TH/Internal.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Invariant/TH/Internal.o )
6[3 of 4] Compiling Data.Functor.Invariant.TH ( src/Data/Functor/Invariant/TH.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Invariant/TH.o )
7[4 of 4] Compiling Paths_invariant ( .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/autogen/Paths_invariant.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Paths_invariant.o )
8Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/invariant-0.5.3-COCiLnaO8ceLaFLP8ApMB8
9Registering library for invariant-0.5.3..
diff --git a/.stack-work/logs/kan-extensions-5.2.log b/.stack-work/logs/kan-extensions-5.2.log
deleted file mode 100644
index e95dd1f..0000000
--- a/.stack-work/logs/kan-extensions-5.2.log
+++ /dev/null
@@ -1,18 +0,0 @@
1Configuring kan-extensions-5.2...
2Preprocessing library for kan-extensions-5.2..
3Building library for kan-extensions-5.2..
4[ 1 of 13] Compiling Data.Functor.Contravariant.Coyoneda ( src/Data/Functor/Contravariant/Coyoneda.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Contravariant/Coyoneda.o )
5[ 2 of 13] Compiling Data.Functor.Contravariant.Day ( src/Data/Functor/Contravariant/Day.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Contravariant/Day.o )
6[ 3 of 13] Compiling Data.Functor.Contravariant.Yoneda ( src/Data/Functor/Contravariant/Yoneda.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Contravariant/Yoneda.o )
7[ 4 of 13] Compiling Data.Functor.Day ( src/Data/Functor/Day.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Day.o )
8[ 5 of 13] Compiling Data.Functor.Day.Curried ( src/Data/Functor/Day/Curried.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Day/Curried.o )
9[ 6 of 13] Compiling Data.Functor.Invariant.Day ( src/Data/Functor/Invariant/Day.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Invariant/Day.o )
10[ 7 of 13] Compiling Data.Functor.Kan.Lan ( src/Data/Functor/Kan/Lan.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Kan/Lan.o )
11[ 8 of 13] Compiling Data.Functor.Coyoneda ( src/Data/Functor/Coyoneda.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Coyoneda.o )
12[ 9 of 13] Compiling Control.Comonad.Density ( src/Control/Comonad/Density.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Comonad/Density.o )
13[10 of 13] Compiling Control.Monad.Co ( src/Control/Monad/Co.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Co.o )
14[11 of 13] Compiling Data.Functor.Kan.Ran ( src/Data/Functor/Kan/Ran.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Kan/Ran.o )
15[12 of 13] Compiling Control.Monad.Codensity ( src/Control/Monad/Codensity.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Codensity.o )
16[13 of 13] Compiling Data.Functor.Yoneda ( src/Data/Functor/Yoneda.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Yoneda.o )
17Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/kan-extensions-5.2-GOoLNNVeT9xL7L35wynQJC
18Registering library for kan-extensions-5.2..
diff --git a/.stack-work/logs/lens-4.17.1.log b/.stack-work/logs/lens-4.17.1.log
deleted file mode 100644
index ce76cdd..0000000
--- a/.stack-work/logs/lens-4.17.1.log
+++ /dev/null
@@ -1,91 +0,0 @@
1[1 of 2] Compiling Main ( /tmp/stack14391/lens-4.17.1/Setup.lhs, /tmp/stack14391/lens-4.17.1/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/Main.o )
2[2 of 2] Compiling StackSetupShim ( /home/sv/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs, /tmp/stack14391/lens-4.17.1/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/StackSetupShim.o )
3Linking /tmp/stack14391/lens-4.17.1/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/setup ...
4Configuring lens-4.17.1...
5Preprocessing library for lens-4.17.1..
6Building library for lens-4.17.1..
7[ 1 of 83] Compiling Control.Lens.Internal.CTypes ( src/Control/Lens/Internal/CTypes.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/CTypes.o )
8[ 2 of 83] Compiling Control.Lens.Internal.Coerce ( src/Control/Lens/Internal/Coerce.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/Coerce.o )
9[ 3 of 83] Compiling Control.Lens.Internal.Getter ( src/Control/Lens/Internal/Getter.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/Getter.o )
10[ 4 of 83] Compiling Control.Lens.Internal.Fold ( src/Control/Lens/Internal/Fold.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/Fold.o )
11[ 5 of 83] Compiling Control.Lens.Internal.Instances ( src/Control/Lens/Internal/Instances.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/Instances.o )
12[ 6 of 83] Compiling Control.Lens.Internal.Indexed ( src/Control/Lens/Internal/Indexed.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/Indexed.o )
13[ 7 of 83] Compiling Control.Lens.Internal.Context ( src/Control/Lens/Internal/Context.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/Context.o )
14[ 8 of 83] Compiling Control.Lens.Internal.Bazaar ( src/Control/Lens/Internal/Bazaar.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/Bazaar.o )
15[ 9 of 83] Compiling Control.Lens.Internal.Iso ( src/Control/Lens/Internal/Iso.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/Iso.o )
16[10 of 83] Compiling Control.Lens.Internal.Level ( src/Control/Lens/Internal/Level.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/Level.o )
17[11 of 83] Compiling Control.Lens.Internal.List ( src/Control/Lens/Internal/List.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/List.o )
18[12 of 83] Compiling Control.Lens.Internal.Magma ( src/Control/Lens/Internal/Magma.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/Magma.o )
19[13 of 83] Compiling Control.Lens.Internal.Prism ( src/Control/Lens/Internal/Prism.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/Prism.o )
20[14 of 83] Compiling Control.Lens.Internal.Review ( src/Control/Lens/Internal/Review.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/Review.o )
21[15 of 83] Compiling Control.Lens.Internal.Setter ( src/Control/Lens/Internal/Setter.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/Setter.o )
22[16 of 83] Compiling Control.Lens.Internal.TH ( src/Control/Lens/Internal/TH.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/TH.o )
23[17 of 83] Compiling Control.Lens.Internal.Zoom ( src/Control/Lens/Internal/Zoom.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/Zoom.o )
24[18 of 83] Compiling Control.Lens.Internal ( src/Control/Lens/Internal.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal.o )
25[19 of 83] Compiling Control.Lens.Type ( src/Control/Lens/Type.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Type.o )
26[20 of 83] Compiling Control.Lens.Setter ( src/Control/Lens/Setter.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Setter.o )
27[21 of 83] Compiling Control.Lens.Lens ( src/Control/Lens/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Lens.o )
28[22 of 83] Compiling Control.Lens.Tuple ( src/Control/Lens/Tuple.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Tuple.o )
29[23 of 83] Compiling Control.Lens.Getter ( src/Control/Lens/Getter.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Getter.o )
30[24 of 83] Compiling Control.Lens.Review ( src/Control/Lens/Review.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Review.o )
31[25 of 83] Compiling Control.Lens.Prism ( src/Control/Lens/Prism.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Prism.o )
32[26 of 83] Compiling Control.Lens.Fold ( src/Control/Lens/Fold.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Fold.o )
33[27 of 83] Compiling Control.Lens.Traversal ( src/Control/Lens/Traversal.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Traversal.o )
34[28 of 83] Compiling Control.Lens.Level ( src/Control/Lens/Level.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Level.o )
35[29 of 83] Compiling Control.Lens.Reified ( src/Control/Lens/Reified.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Reified.o )
36[30 of 83] Compiling Control.Lens.Internal.Exception ( src/Control/Lens/Internal/Exception.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/Exception.o )
37[31 of 83] Compiling Control.Lens.Indexed ( src/Control/Lens/Indexed.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Indexed.o )
38[32 of 83] Compiling Control.Lens.Internal.ByteString ( src/Control/Lens/Internal/ByteString.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/ByteString.o )
39[33 of 83] Compiling Control.Lens.Equality ( src/Control/Lens/Equality.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Equality.o )
40[34 of 83] Compiling Control.Lens.Iso ( src/Control/Lens/Iso.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Iso.o )
41[35 of 83] Compiling Control.Lens.Empty ( src/Control/Lens/Empty.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Empty.o )
42[36 of 83] Compiling Control.Lens.Cons ( src/Control/Lens/Cons.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Cons.o )
43[37 of 83] Compiling Control.Lens.Internal.Deque ( src/Control/Lens/Internal/Deque.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/Deque.o )
44[38 of 83] Compiling Control.Lens.Wrapped ( src/Control/Lens/Wrapped.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Wrapped.o )
45[39 of 83] Compiling Control.Lens.Zoom ( src/Control/Lens/Zoom.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Zoom.o )
46[40 of 83] Compiling Data.Data.Lens ( src/Data/Data/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Data/Lens.o )
47[41 of 83] Compiling Control.Lens.Plated ( src/Control/Lens/Plated.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Plated.o )
48[42 of 83] Compiling Data.HashSet.Lens ( src/Data/HashSet/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/HashSet/Lens.o )
49[43 of 83] Compiling Data.Map.Lens ( src/Data/Map/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Map/Lens.o )
50[44 of 83] Compiling Data.Set.Lens ( src/Data/Set/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Set/Lens.o )
51[45 of 83] Compiling Data.Text.Lazy.Lens ( src/Data/Text/Lazy/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Text/Lazy/Lens.o )
52[46 of 83] Compiling Data.Text.Strict.Lens ( src/Data/Text/Strict/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Text/Strict/Lens.o )
53[47 of 83] Compiling Data.Text.Lens ( src/Data/Text/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Text/Lens.o )
54[48 of 83] Compiling Data.Vector.Generic.Lens ( src/Data/Vector/Generic/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Generic/Lens.o )
55[49 of 83] Compiling Control.Lens.Each ( src/Control/Lens/Each.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Each.o )
56[50 of 83] Compiling Control.Lens.At ( src/Control/Lens/At.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/At.o )
57[51 of 83] Compiling Language.Haskell.TH.Lens ( src/Language/Haskell/TH/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Language/Haskell/TH/Lens.o )
58[52 of 83] Compiling Control.Lens.Internal.PrismTH ( src/Control/Lens/Internal/PrismTH.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/PrismTH.o )
59[53 of 83] Compiling Control.Lens.Internal.FieldTH ( src/Control/Lens/Internal/FieldTH.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Internal/FieldTH.o )
60[54 of 83] Compiling Control.Lens.TH ( src/Control/Lens/TH.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/TH.o )
61[55 of 83] Compiling Control.Lens ( src/Control/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens.o )
62[56 of 83] Compiling GHC.Generics.Lens ( src/GHC/Generics/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/GHC/Generics/Lens.o )
63[57 of 83] Compiling Data.Vector.Lens ( src/Data/Vector/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Lens.o )
64[58 of 83] Compiling Data.Typeable.Lens ( src/Data/Typeable/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Typeable/Lens.o )
65[59 of 83] Compiling Data.Tree.Lens ( src/Data/Tree/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Tree/Lens.o )
66[60 of 83] Compiling Data.Sequence.Lens ( src/Data/Sequence/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Sequence/Lens.o )
67[61 of 83] Compiling Data.List.Lens ( src/Data/List/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/List/Lens.o )
68[62 of 83] Compiling Data.IntSet.Lens ( src/Data/IntSet/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/IntSet/Lens.o )
69[63 of 83] Compiling Data.Complex.Lens ( src/Data/Complex/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Complex/Lens.o )
70[64 of 83] Compiling Data.ByteString.Strict.Lens ( src/Data/ByteString/Strict/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/ByteString/Strict/Lens.o )
71[65 of 83] Compiling Data.ByteString.Lazy.Lens ( src/Data/ByteString/Lazy/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/ByteString/Lazy/Lens.o )
72[66 of 83] Compiling Data.ByteString.Lens ( src/Data/ByteString/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/ByteString/Lens.o )
73[67 of 83] Compiling Data.Bits.Lens ( src/Data/Bits/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bits/Lens.o )
74[68 of 83] Compiling Data.Array.Lens ( src/Data/Array/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Array/Lens.o )
75[69 of 83] Compiling Control.Seq.Lens ( src/Control/Seq/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Seq/Lens.o )
76[70 of 83] Compiling Control.Parallel.Strategies.Lens ( src/Control/Parallel/Strategies/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Parallel/Strategies/Lens.o )
77[71 of 83] Compiling Control.Monad.Error.Lens ( src/Control/Monad/Error/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Error/Lens.o )
78[72 of 83] Compiling Control.Lens.Unsound ( src/Control/Lens/Unsound.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Unsound.o )
79[73 of 83] Compiling Control.Lens.Operators ( src/Control/Lens/Operators.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Operators.o )
80[74 of 83] Compiling Control.Lens.Extras ( src/Control/Lens/Extras.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Extras.o )
81[75 of 83] Compiling Control.Lens.Combinators ( src/Control/Lens/Combinators.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Lens/Combinators.o )
82[76 of 83] Compiling Control.Exception.Lens ( src/Control/Exception/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Exception/Lens.o )
83[77 of 83] Compiling Data.Dynamic.Lens ( src/Data/Dynamic/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Dynamic/Lens.o )
84[78 of 83] Compiling Numeric.Lens ( src/Numeric/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Numeric/Lens.o )
85[79 of 83] Compiling Numeric.Natural.Lens ( src/Numeric/Natural/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Numeric/Natural/Lens.o )
86[80 of 83] Compiling Paths_lens ( .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/autogen/Paths_lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Paths_lens.o )
87[81 of 83] Compiling System.Exit.Lens ( src/System/Exit/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Exit/Lens.o )
88[82 of 83] Compiling System.FilePath.Lens ( src/System/FilePath/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/FilePath/Lens.o )
89[83 of 83] Compiling System.IO.Error.Lens ( src/System/IO/Error/Lens.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/IO/Error/Lens.o )
90Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/lens-4.17.1-HvuC79b14LY7GYVb6qSW7j
91Registering library for lens-4.17.1..
diff --git a/.stack-work/logs/linear-1.20.9.log b/.stack-work/logs/linear-1.20.9.log
deleted file mode 100644
index cae8355..0000000
--- a/.stack-work/logs/linear-1.20.9.log
+++ /dev/null
@@ -1,30 +0,0 @@
1[1 of 2] Compiling Main ( /tmp/stack14391/linear-1.20.9/Setup.lhs, /tmp/stack14391/linear-1.20.9/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/Main.o )
2[2 of 2] Compiling StackSetupShim ( /home/sv/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs, /tmp/stack14391/linear-1.20.9/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/StackSetupShim.o )
3Linking /tmp/stack14391/linear-1.20.9/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/setup ...
4Configuring linear-1.20.9...
5Preprocessing library for linear-1.20.9..
6Building library for linear-1.20.9..
7[ 1 of 22] Compiling Linear.Binary ( src/Linear/Binary.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/Binary.o )
8[ 2 of 22] Compiling Linear.Conjugate ( src/Linear/Conjugate.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/Conjugate.o )
9[ 3 of 22] Compiling Linear.Epsilon ( src/Linear/Epsilon.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/Epsilon.o )
10[ 4 of 22] Compiling Linear.Instances ( src/Linear/Instances.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/Instances.o )
11[ 5 of 22] Compiling Linear.Vector ( src/Linear/Vector.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/Vector.o )
12[ 6 of 22] Compiling Linear.Metric ( src/Linear/Metric.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/Metric.o )
13[ 7 of 22] Compiling Linear.V ( src/Linear/V.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/V.o )
14[ 8 of 22] Compiling Linear.V1 ( src/Linear/V1.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/V1.o )
15[ 9 of 22] Compiling Linear.V2 ( src/Linear/V2.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/V2.o )
16[10 of 22] Compiling Linear.V3 ( src/Linear/V3.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/V3.o )
17[11 of 22] Compiling Linear.V4 ( src/Linear/V4.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/V4.o )
18[12 of 22] Compiling Linear.V0 ( src/Linear/V0.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/V0.o )
19[13 of 22] Compiling Linear.Quaternion ( src/Linear/Quaternion.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/Quaternion.o )
20[14 of 22] Compiling Linear.Plucker ( src/Linear/Plucker.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/Plucker.o )
21[15 of 22] Compiling Linear.Trace ( src/Linear/Trace.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/Trace.o )
22[16 of 22] Compiling Linear.Plucker.Coincides ( src/Linear/Plucker/Coincides.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/Plucker/Coincides.o )
23[17 of 22] Compiling Linear.Matrix ( src/Linear/Matrix.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/Matrix.o )
24[18 of 22] Compiling Linear.Projection ( src/Linear/Projection.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/Projection.o )
25[19 of 22] Compiling Linear.Algebra ( src/Linear/Algebra.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/Algebra.o )
26[20 of 22] Compiling Linear.Covector ( src/Linear/Covector.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/Covector.o )
27[21 of 22] Compiling Linear.Affine ( src/Linear/Affine.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear/Affine.o )
28[22 of 22] Compiling Linear ( src/Linear.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Linear.o )
29Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/linear-1.20.9-8i87OQRLMk19j5jCRXHfj4
30Registering library for linear-1.20.9..
diff --git a/.stack-work/logs/loop-0.3.0.log b/.stack-work/logs/loop-0.3.0.log
deleted file mode 100644
index 077c09f..0000000
--- a/.stack-work/logs/loop-0.3.0.log
+++ /dev/null
@@ -1,7 +0,0 @@
1Configuring loop-0.3.0...
2Preprocessing library for loop-0.3.0..
3Building library for loop-0.3.0..
4[1 of 2] Compiling Control.Loop ( src/Control/Loop.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Loop.o )
5[2 of 2] Compiling Control.Loop.Internal ( src/Control/Loop/Internal.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Loop/Internal.o )
6Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/loop-0.3.0-KBOFzTkURfGITuXz2VUslN
7Registering library for loop-0.3.0..
diff --git a/.stack-work/logs/matrix-0.3.6.1.log b/.stack-work/logs/matrix-0.3.6.1.log
deleted file mode 100644
index 039799c..0000000
--- a/.stack-work/logs/matrix-0.3.6.1.log
+++ /dev/null
@@ -1,86 +0,0 @@
1Configuring matrix-0.3.6.1...
2Preprocessing library for matrix-0.3.6.1..
3Building library for matrix-0.3.6.1..
4[1 of 1] Compiling Data.Matrix ( Data/Matrix.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Matrix.o )
5
6Data/Matrix.hs:79:1: warning: [-Wunused-imports]
7 The import of ‘Data.Monoid’ is redundant
8 except perhaps to import instances from ‘Data.Monoid’
9 To import instances alone, use: import Data.Monoid()
10 |
1179 | import Data.Monoid
12 | ^^^^^^^^^^^^^^^^^^
13
14Data/Matrix.hs:81:1: warning: [-Wunused-imports]
15 The import of ‘Data.Traversable’ is redundant
16 except perhaps to import instances from ‘Data.Traversable’
17 To import instances alone, use: import Data.Traversable()
18 |
1981 | import Data.Traversable
20 | ^^^^^^^^^^^^^^^^^^^^^^^
21
22Data/Matrix.hs:1364:1: warning: [-Winline-rule-shadowing]
23 Rule "matrix/traceOfSum" may never fire
24 because ‘trace’ might inline first
25 Probable fix: add an INLINE[n] or NOINLINE[n] pragma for ‘trace’
26 |
271364 | "matrix/traceOfSum"
28 | ^^^^^^^^^^^^^^^^^^^...
29
30Data/Matrix.hs:1364:1: warning: [-Winline-rule-shadowing]
31 Rule "matrix/traceOfSum" may never fire
32 because rule "Class op +" for ‘+’ might fire first
33 Probable fix: add phase [n] or [~n] to the competing rule
34 |
351364 | "matrix/traceOfSum"
36 | ^^^^^^^^^^^^^^^^^^^...
37
38Data/Matrix.hs:1367:1: warning: [-Winline-rule-shadowing]
39 Rule "matrix/traceOfScale" may never fire
40 because ‘trace’ might inline first
41 Probable fix: add an INLINE[n] or NOINLINE[n] pragma for ‘trace’
42 |
431367 | "matrix/traceOfScale"
44 | ^^^^^^^^^^^^^^^^^^^^^...
45
46Data/Matrix.hs:1367:1: warning: [-Winline-rule-shadowing]
47 Rule "matrix/traceOfScale" may never fire
48 because ‘scaleMatrix’ might inline first
49 Probable fix: add an INLINE[n] or NOINLINE[n] pragma for ‘scaleMatrix’
50 |
511367 | "matrix/traceOfScale"
52 | ^^^^^^^^^^^^^^^^^^^^^...
53
54Data/Matrix.hs:1392:1: warning: [-Winline-rule-shadowing]
55 Rule "matrix/detLaplaceProduct" may never fire
56 because ‘detLaplace’ might inline first
57 Probable fix: add an INLINE[n] or NOINLINE[n] pragma for ‘detLaplace’
58 |
591392 | "matrix/detLaplaceProduct"
60 | ^^^^^^^^^^^^^^^^^^^^^^^^^^...
61
62Data/Matrix.hs:1392:1: warning: [-Winline-rule-shadowing]
63 Rule "matrix/detLaplaceProduct" may never fire
64 because rule "Class op *" for ‘*’ might fire first
65 Probable fix: add phase [n] or [~n] to the competing rule
66 |
671392 | "matrix/detLaplaceProduct"
68 | ^^^^^^^^^^^^^^^^^^^^^^^^^^...
69
70Data/Matrix.hs:1395:1: warning: [-Winline-rule-shadowing]
71 Rule "matrix/detLUProduct" may never fire
72 because ‘detLU’ might inline first
73 Probable fix: add an INLINE[n] or NOINLINE[n] pragma for ‘detLU’
74 |
751395 | "matrix/detLUProduct"
76 | ^^^^^^^^^^^^^^^^^^^^^...
77
78Data/Matrix.hs:1395:1: warning: [-Winline-rule-shadowing]
79 Rule "matrix/detLUProduct" may never fire
80 because rule "Class op *" for ‘*’ might fire first
81 Probable fix: add phase [n] or [~n] to the competing rule
82 |
831395 | "matrix/detLUProduct"
84 | ^^^^^^^^^^^^^^^^^^^^^...
85Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/matrix-0.3.6.1-CUcUqfmsmAA7saz436AQSk
86Registering library for matrix-0.3.6.1..
diff --git a/.stack-work/logs/network-2.8.0.1.log b/.stack-work/logs/network-2.8.0.1.log
deleted file mode 100644
index 779f24a..0000000
--- a/.stack-work/logs/network-2.8.0.1.log
+++ /dev/null
@@ -1,132 +0,0 @@
1[1 of 2] Compiling Main ( /tmp/stack10672/network-2.8.0.1/Setup.hs, /tmp/stack10672/network-2.8.0.1/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/Main.o )
2[2 of 2] Compiling StackSetupShim ( /home/sv/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs, /tmp/stack10672/network-2.8.0.1/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/StackSetupShim.o )
3Linking /tmp/stack10672/network-2.8.0.1/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/setup ...
4Configuring network-2.8.0.1...
5configure: WARNING: unrecognized options: --with-compiler
6checking build system type... x86_64-pc-linux-gnu
7checking host system type... x86_64-pc-linux-gnu
8checking for gcc... /usr/bin/gcc
9checking whether the C compiler works... yes
10checking for C compiler default output file name... a.out
11checking for suffix of executables...
12checking whether we are cross compiling... no
13checking for suffix of object files... o
14checking whether we are using the GNU C compiler... yes
15checking whether /usr/bin/gcc accepts -g... yes
16checking for /usr/bin/gcc option to accept ISO C89... none needed
17checking for an ANSI C-conforming const... yes
18checking how to run the C preprocessor... /usr/bin/gcc -E
19checking for grep that handles long lines and -e... /bin/grep
20checking for egrep... /bin/grep -E
21checking for ANSI C header files... yes
22checking for sys/types.h... yes
23checking for sys/stat.h... yes
24checking for stdlib.h... yes
25checking for string.h... yes
26checking for memory.h... yes
27checking for strings.h... yes
28checking for inttypes.h... yes
29checking for stdint.h... yes
30checking for unistd.h... yes
31checking fcntl.h usability... yes
32checking fcntl.h presence... yes
33checking for fcntl.h... yes
34checking limits.h usability... yes
35checking limits.h presence... yes
36checking for limits.h... yes
37checking for stdlib.h... (cached) yes
38checking for sys/types.h... (cached) yes
39checking for unistd.h... (cached) yes
40checking winsock2.h usability... no
41checking winsock2.h presence... no
42checking for winsock2.h... no
43checking ws2tcpip.h usability... no
44checking ws2tcpip.h presence... no
45checking for ws2tcpip.h... no
46checking arpa/inet.h usability... yes
47checking arpa/inet.h presence... yes
48checking for arpa/inet.h... yes
49checking netdb.h usability... yes
50checking netdb.h presence... yes
51checking for netdb.h... yes
52checking netinet/in.h usability... yes
53checking netinet/in.h presence... yes
54checking for netinet/in.h... yes
55checking netinet/tcp.h usability... yes
56checking netinet/tcp.h presence... yes
57checking for netinet/tcp.h... yes
58checking sys/socket.h usability... yes
59checking sys/socket.h presence... yes
60checking for sys/socket.h... yes
61checking sys/uio.h usability... yes
62checking sys/uio.h presence... yes
63checking for sys/uio.h... yes
64checking sys/un.h usability... yes
65checking sys/un.h presence... yes
66checking for sys/un.h... yes
67checking linux/can.h usability... yes
68checking linux/can.h presence... yes
69checking for linux/can.h... yes
70checking linux/tcp.h usability... yes
71checking linux/tcp.h presence... yes
72checking for linux/tcp.h... yes
73checking net/if.h usability... yes
74checking net/if.h presence... yes
75checking for net/if.h... yes
76checking for readlink... yes
77checking for symlink... yes
78checking for if_nametoindex... yes
79checking for struct msghdr.msg_control... yes
80checking for struct msghdr.msg_accrights... no
81checking for struct sockaddr.sa_len... no
82checking for in_addr_t in netinet/in.h... yes
83checking for SO_PEERCRED and struct ucred in sys/socket.h... yes
84checking for getpeereid in unistd.h... checking for getpeereid... no
85checking for _head_libws2_32_a in -lws2_32... no
86checking for getaddrinfo... yes
87checking for gai_strerror... yes
88checking whether AI_ADDRCONFIG is declared... yes
89checking whether AI_ALL is declared... yes
90checking whether AI_NUMERICSERV is declared... yes
91checking whether AI_V4MAPPED is declared... yes
92checking whether IPV6_V6ONLY is declared... yes
93checking whether IPPROTO_IP is declared... yes
94checking whether IPPROTO_TCP is declared... yes
95checking whether IPPROTO_IPV6 is declared... yes
96checking for sendfile in sys/sendfile.h... yes
97checking for sendfile in sys/socket.h... no
98checking for gethostent... yes
99checking for accept4... yes
100configure: creating ./config.status
101config.status: creating network.buildinfo
102config.status: creating include/HsNetworkConfig.h
103configure: WARNING: unrecognized options: --with-compiler
104Preprocessing library for network-2.8.0.1..
105Building library for network-2.8.0.1..
106[ 1 of 11] Compiling Network.Socket.ByteString.IOVec ( .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network/Socket/ByteString/IOVec.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network/Socket/ByteString/IOVec.o )
107[ 2 of 11] Compiling Network.Socket.Types ( .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network/Socket/Types.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network/Socket/Types.o )
108[ 3 of 11] Compiling Network.Socket.Internal ( .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network/Socket/Internal.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network/Socket/Internal.o )
109[ 4 of 11] Compiling Network.Socket ( .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network/Socket.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network/Socket.o )
110
111Network/Socket.hsc:267:1: warning: [-Wunused-imports]
112 The qualified import of ‘Control.Exception’ is redundant
113 except perhaps to import instances from ‘Control.Exception’
114 To import instances alone, use: import Control.Exception()
115 |
116267 | import qualified Control.Exception as E
117 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
118
119Network/Socket.hsc:633:8: warning: [-Wunused-matches]
120 Defined but not used: ‘sock’
121 |
122633 | accept sock@(MkSocket s family stype protocol status) = do
123 | ^^^^
124[ 5 of 11] Compiling Network.Socket.ByteString.MsgHdr ( .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network/Socket/ByteString/MsgHdr.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network/Socket/ByteString/MsgHdr.o )
125[ 6 of 11] Compiling Network.Socket.ByteString.Internal ( Network/Socket/ByteString/Internal.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network/Socket/ByteString/Internal.o )
126[ 7 of 11] Compiling Network.Socket.ByteString.Lazy.Posix ( Network/Socket/ByteString/Lazy/Posix.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network/Socket/ByteString/Lazy/Posix.o )
127[ 8 of 11] Compiling Network.Socket.ByteString ( .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network/Socket/ByteString.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network/Socket/ByteString.o )
128[ 9 of 11] Compiling Network.Socket.ByteString.Lazy ( Network/Socket/ByteString/Lazy.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network/Socket/ByteString/Lazy.o )
129[10 of 11] Compiling Network.BSD ( .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network/BSD.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network/BSD.o )
130[11 of 11] Compiling Network ( Network.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Network.o )
131Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/network-2.8.0.1-Hmt657UE3v349uYmvUXEvW
132Registering library for network-2.8.0.1..
diff --git a/.stack-work/logs/parallel-3.2.2.0.log b/.stack-work/logs/parallel-3.2.2.0.log
deleted file mode 100644
index ff71877..0000000
--- a/.stack-work/logs/parallel-3.2.2.0.log
+++ /dev/null
@@ -1,8 +0,0 @@
1Configuring parallel-3.2.2.0...
2Preprocessing library for parallel-3.2.2.0..
3Building library for parallel-3.2.2.0..
4[1 of 3] Compiling Control.Parallel ( Control/Parallel.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Parallel.o )
5[2 of 3] Compiling Control.Seq ( Control/Seq.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Seq.o )
6[3 of 3] Compiling Control.Parallel.Strategies ( Control/Parallel/Strategies.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Parallel/Strategies.o )
7Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/parallel-3.2.2.0-EGl5SOk48TWHAD161C93aQ
8Registering library for parallel-3.2.2.0..
diff --git a/.stack-work/logs/primitive-0.6.4.0.log b/.stack-work/logs/primitive-0.6.4.0.log
deleted file mode 100644
index ca7ec69..0000000
--- a/.stack-work/logs/primitive-0.6.4.0.log
+++ /dev/null
@@ -1,20 +0,0 @@
1Configuring primitive-0.6.4.0...
2Preprocessing library for primitive-0.6.4.0..
3Building library for primitive-0.6.4.0..
4[ 1 of 15] Compiling Control.Monad.Primitive ( Control/Monad/Primitive.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Primitive.o )
5[ 2 of 15] Compiling Data.Primitive.Internal.Compat ( Data/Primitive/Internal/Compat.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Primitive/Internal/Compat.o )
6[ 3 of 15] Compiling Data.Primitive.Array ( Data/Primitive/Array.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Primitive/Array.o )
7[ 4 of 15] Compiling Data.Primitive.MVar ( Data/Primitive/MVar.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Primitive/MVar.o )
8[ 5 of 15] Compiling Data.Primitive.MachDeps ( Data/Primitive/MachDeps.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Primitive/MachDeps.o )
9[ 6 of 15] Compiling Data.Primitive.Internal.Operations ( Data/Primitive/Internal/Operations.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Primitive/Internal/Operations.o )
10[ 7 of 15] Compiling Data.Primitive.MutVar ( Data/Primitive/MutVar.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Primitive/MutVar.o )
11[ 8 of 15] Compiling Data.Primitive.SmallArray ( Data/Primitive/SmallArray.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Primitive/SmallArray.o )
12[ 9 of 15] Compiling Data.Primitive.Types ( Data/Primitive/Types.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Primitive/Types.o )
13[10 of 15] Compiling Data.Primitive.ByteArray ( Data/Primitive/ByteArray.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Primitive/ByteArray.o )
14[11 of 15] Compiling Data.Primitive.PrimArray ( Data/Primitive/PrimArray.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Primitive/PrimArray.o )
15[12 of 15] Compiling Data.Primitive.Ptr ( Data/Primitive/Ptr.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Primitive/Ptr.o )
16[13 of 15] Compiling Data.Primitive.Addr ( Data/Primitive/Addr.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Primitive/Addr.o )
17[14 of 15] Compiling Data.Primitive.UnliftedArray ( Data/Primitive/UnliftedArray.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Primitive/UnliftedArray.o )
18[15 of 15] Compiling Data.Primitive ( Data/Primitive.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Primitive.o )
19Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/primitive-0.6.4.0-ILgywxtLpvnAOlEISPpP5b
20Registering library for primitive-0.6.4.0..
diff --git a/.stack-work/logs/profunctors-5.3.log b/.stack-work/logs/profunctors-5.3.log
deleted file mode 100644
index bb57208..0000000
--- a/.stack-work/logs/profunctors-5.3.log
+++ /dev/null
@@ -1,21 +0,0 @@
1Configuring profunctors-5.3...
2Preprocessing library for profunctors-5.3..
3Building library for profunctors-5.3..
4[ 1 of 16] Compiling Data.Profunctor.Unsafe ( src/Data/Profunctor/Unsafe.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Profunctor/Unsafe.o )
5[ 2 of 16] Compiling Data.Profunctor.Types ( src/Data/Profunctor/Types.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Profunctor/Types.o )
6[ 3 of 16] Compiling Data.Profunctor.Monad ( src/Data/Profunctor/Monad.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Profunctor/Monad.o )
7[ 4 of 16] Compiling Data.Profunctor.Adjunction ( src/Data/Profunctor/Adjunction.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Profunctor/Adjunction.o )
8[ 5 of 16] Compiling Data.Profunctor.Strong ( src/Data/Profunctor/Strong.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Profunctor/Strong.o )
9[ 6 of 16] Compiling Data.Profunctor.Closed ( src/Data/Profunctor/Closed.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Profunctor/Closed.o )
10[ 7 of 16] Compiling Data.Profunctor.Choice ( src/Data/Profunctor/Choice.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Profunctor/Choice.o )
11[ 8 of 16] Compiling Data.Profunctor.Traversing ( src/Data/Profunctor/Traversing.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Profunctor/Traversing.o )
12[ 9 of 16] Compiling Data.Profunctor.Mapping ( src/Data/Profunctor/Mapping.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Profunctor/Mapping.o )
13[10 of 16] Compiling Data.Profunctor ( src/Data/Profunctor.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Profunctor.o )
14[11 of 16] Compiling Data.Profunctor.Sieve ( src/Data/Profunctor/Sieve.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Profunctor/Sieve.o )
15[12 of 16] Compiling Data.Profunctor.Rep ( src/Data/Profunctor/Rep.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Profunctor/Rep.o )
16[13 of 16] Compiling Data.Profunctor.Composition ( src/Data/Profunctor/Composition.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Profunctor/Composition.o )
17[14 of 16] Compiling Data.Profunctor.Ran ( src/Data/Profunctor/Ran.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Profunctor/Ran.o )
18[15 of 16] Compiling Data.Profunctor.Cayley ( src/Data/Profunctor/Cayley.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Profunctor/Cayley.o )
19[16 of 16] Compiling Data.Profunctor.Yoneda ( src/Data/Profunctor/Yoneda.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Profunctor/Yoneda.o )
20Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/profunctors-5.3-IpGd709zs3V8sI6m3XgDzt
21Registering library for profunctors-5.3..
diff --git a/.stack-work/logs/random-1.1.log b/.stack-work/logs/random-1.1.log
deleted file mode 100644
index 91ce45f..0000000
--- a/.stack-work/logs/random-1.1.log
+++ /dev/null
@@ -1,14 +0,0 @@
1Warning: random.cabal:15:2: Tabs used as indentation at 15:2, 16:2, 17:2
2Configuring random-1.1...
3Preprocessing library for random-1.1..
4Building library for random-1.1..
5[1 of 1] Compiling System.Random ( System/Random.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/System/Random.o )
6
7System/Random.hs:43:1: warning: [-Wtabs]
8 Tab character found here, and in 74 further locations.
9 Please use spaces instead.
10 |
1143 | (
12 | ^^^^^^^^
13Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/random-1.1-3ypV4EIycgb35PKjTYYr5q
14Registering library for random-1.1..
diff --git a/.stack-work/logs/reflection-2.1.4.log b/.stack-work/logs/reflection-2.1.4.log
deleted file mode 100644
index 048e385..0000000
--- a/.stack-work/logs/reflection-2.1.4.log
+++ /dev/null
@@ -1,6 +0,0 @@
1Configuring reflection-2.1.4...
2Preprocessing library for reflection-2.1.4..
3Building library for reflection-2.1.4..
4[1 of 1] Compiling Data.Reflection ( fast/Data/Reflection.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Reflection.o )
5Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/reflection-2.1.4-E9VXTbXoqHZ5rulgGPZOrF
6Registering library for reflection-2.1.4..
diff --git a/.stack-work/logs/scientific-0.3.6.2.log b/.stack-work/logs/scientific-0.3.6.2.log
deleted file mode 100644
index bd8a63f..0000000
--- a/.stack-work/logs/scientific-0.3.6.2.log
+++ /dev/null
@@ -1,10 +0,0 @@
1Configuring scientific-0.3.6.2...
2Preprocessing library for scientific-0.3.6.2..
3Building library for scientific-0.3.6.2..
4[1 of 5] Compiling GHC.Integer.Compat ( src/GHC/Integer/Compat.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/GHC/Integer/Compat.o )
5[2 of 5] Compiling Utils ( src/Utils.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Utils.o )
6[3 of 5] Compiling Data.Scientific ( src/Data/Scientific.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Scientific.o )
7[4 of 5] Compiling Data.Text.Lazy.Builder.Scientific ( src/Data/Text/Lazy/Builder/Scientific.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Text/Lazy/Builder/Scientific.o )
8[5 of 5] Compiling Data.ByteString.Builder.Scientific ( src/Data/ByteString/Builder/Scientific.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/ByteString/Builder/Scientific.o )
9Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/scientific-0.3.6.2-Jh87LYpjAZH3EhMJkXeu1S
10Registering library for scientific-0.3.6.2..
diff --git a/.stack-work/logs/semigroupoids-5.3.2.log b/.stack-work/logs/semigroupoids-5.3.2.log
deleted file mode 100644
index 678b02b..0000000
--- a/.stack-work/logs/semigroupoids-5.3.2.log
+++ /dev/null
@@ -1,29 +0,0 @@
1[1 of 2] Compiling Main ( /tmp/stack14391/semigroupoids-5.3.2/Setup.lhs, /tmp/stack14391/semigroupoids-5.3.2/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/Main.o )
2[2 of 2] Compiling StackSetupShim ( /home/sv/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs, /tmp/stack14391/semigroupoids-5.3.2/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/StackSetupShim.o )
3Linking /tmp/stack14391/semigroupoids-5.3.2/.stack-work/dist/x86_64-linux/Cabal-2.4.0.1/setup/setup ...
4Configuring semigroupoids-5.3.2...
5Preprocessing library for semigroupoids-5.3.2..
6Building library for semigroupoids-5.3.2..
7[ 1 of 21] Compiling Data.Functor.Extend ( src/Data/Functor/Extend.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Extend.o )
8[ 2 of 21] Compiling Data.Functor.Bind.Class ( src/Data/Functor/Bind/Class.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Bind/Class.o )
9[ 3 of 21] Compiling Data.Functor.Apply ( src/Data/Functor/Apply.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Apply.o )
10[ 4 of 21] Compiling Data.Functor.Bind ( src/Data/Functor/Bind.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Bind.o )
11[ 5 of 21] Compiling Data.Functor.Bind.Trans ( src/Data/Functor/Bind/Trans.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Bind/Trans.o )
12[ 6 of 21] Compiling Data.Functor.Alt ( src/Data/Functor/Alt.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Alt.o )
13[ 7 of 21] Compiling Data.Bifunctor.Apply ( src/Data/Bifunctor/Apply.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Bifunctor/Apply.o )
14[ 8 of 21] Compiling Data.Functor.Plus ( src/Data/Functor/Plus.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Plus.o )
15[ 9 of 21] Compiling Data.Semigroupoid ( src/Data/Semigroupoid.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Semigroupoid.o )
16[10 of 21] Compiling Data.Semigroupoid.Dual ( src/Data/Semigroupoid/Dual.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Semigroupoid/Dual.o )
17[11 of 21] Compiling Data.Groupoid ( src/Data/Groupoid.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Groupoid.o )
18[12 of 21] Compiling Data.Isomorphism ( src/Data/Isomorphism.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Isomorphism.o )
19[13 of 21] Compiling Data.Semigroupoid.Ob ( src/Data/Semigroupoid/Ob.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Semigroupoid/Ob.o )
20[14 of 21] Compiling Data.Semigroupoid.Static ( src/Data/Semigroupoid/Static.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Semigroupoid/Static.o )
21[15 of 21] Compiling Data.Traversable.Instances ( src/Data/Traversable/Instances.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Traversable/Instances.o )
22[16 of 21] Compiling Data.Semigroup.Foldable.Class ( src/Data/Semigroup/Foldable/Class.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Semigroup/Foldable/Class.o )
23[17 of 21] Compiling Data.Semigroup.Bifoldable ( src/Data/Semigroup/Bifoldable.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Semigroup/Bifoldable.o )
24[18 of 21] Compiling Data.Semigroup.Foldable ( src/Data/Semigroup/Foldable.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Semigroup/Foldable.o )
25[19 of 21] Compiling Data.Semigroup.Traversable.Class ( src/Data/Semigroup/Traversable/Class.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Semigroup/Traversable/Class.o )
26[20 of 21] Compiling Data.Semigroup.Traversable ( src/Data/Semigroup/Traversable.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Semigroup/Traversable.o )
27[21 of 21] Compiling Data.Semigroup.Bitraversable ( src/Data/Semigroup/Bitraversable.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Semigroup/Bitraversable.o )
28Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/semigroupoids-5.3.2-Ka80fCBNMcd1Be50r62zFC
29Registering library for semigroupoids-5.3.2..
diff --git a/.stack-work/logs/semigroups-0.18.5.log b/.stack-work/logs/semigroups-0.18.5.log
deleted file mode 100644
index b35abd5..0000000
--- a/.stack-work/logs/semigroups-0.18.5.log
+++ /dev/null
@@ -1,6 +0,0 @@
1Configuring semigroups-0.18.5...
2Preprocessing library for semigroups-0.18.5..
3Building library for semigroups-0.18.5..
4[1 of 1] Compiling Data.Semigroup.Generic ( src/Data/Semigroup/Generic.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Semigroup/Generic.o )
5Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/semigroups-0.18.5-6T2lH5F6zyQIdwR3JYKMO3
6Registering library for semigroups-0.18.5..
diff --git a/.stack-work/logs/split-0.2.3.3.log b/.stack-work/logs/split-0.2.3.3.log
deleted file mode 100644
index 48331b9..0000000
--- a/.stack-work/logs/split-0.2.3.3.log
+++ /dev/null
@@ -1,7 +0,0 @@
1Configuring split-0.2.3.3...
2Preprocessing library for split-0.2.3.3..
3Building library for split-0.2.3.3..
4[1 of 2] Compiling Data.List.Split.Internals ( src/Data/List/Split/Internals.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/List/Split/Internals.o )
5[2 of 2] Compiling Data.List.Split ( src/Data/List/Split.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/List/Split.o )
6Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/split-0.2.3.3-6n1iQ0JLFvkeXvJXsAqQc
7Registering library for split-0.2.3.3..
diff --git a/.stack-work/logs/storable-complex-0.2.3.0.log b/.stack-work/logs/storable-complex-0.2.3.0.log
deleted file mode 100644
index 6ccdcf2..0000000
--- a/.stack-work/logs/storable-complex-0.2.3.0.log
+++ /dev/null
@@ -1,6 +0,0 @@
1Configuring storable-complex-0.2.3.0...
2Preprocessing library for storable-complex-0.2.3.0..
3Building library for storable-complex-0.2.3.0..
4[1 of 1] Compiling Foreign.Storable.Complex ( src/Foreign/Storable/Complex.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Foreign/Storable/Complex.o )
5Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/storable-complex-0.2.3.0-IqTssBZ2G90J9kRbLSMmF1
6Registering library for storable-complex-0.2.3.0..
diff --git a/.stack-work/logs/syb-0.7.log b/.stack-work/logs/syb-0.7.log
deleted file mode 100644
index d2aea34..0000000
--- a/.stack-work/logs/syb-0.7.log
+++ /dev/null
@@ -1,21 +0,0 @@
1Configuring syb-0.7...
2Preprocessing library for syb-0.7..
3Building library for syb-0.7..
4[ 1 of 16] Compiling Data.Generics.Aliases ( src/Data/Generics/Aliases.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Generics/Aliases.o )
5[ 2 of 16] Compiling Data.Generics.Basics ( src/Data/Generics/Basics.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Generics/Basics.o )
6[ 3 of 16] Compiling Data.Generics.Builders ( src/Data/Generics/Builders.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Generics/Builders.o )
7[ 4 of 16] Compiling Data.Generics.Instances ( src/Data/Generics/Instances.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Generics/Instances.o )
8[ 5 of 16] Compiling Data.Generics.Schemes ( src/Data/Generics/Schemes.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Generics/Schemes.o )
9[ 6 of 16] Compiling Data.Generics.Text ( src/Data/Generics/Text.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Generics/Text.o )
10[ 7 of 16] Compiling Data.Generics.Twins ( src/Data/Generics/Twins.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Generics/Twins.o )
11[ 8 of 16] Compiling Data.Generics ( src/Data/Generics.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Generics.o )
12[ 9 of 16] Compiling Generics.SYB ( src/Generics/SYB.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Generics/SYB.o )
13[10 of 16] Compiling Generics.SYB.Aliases ( src/Generics/SYB/Aliases.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Generics/SYB/Aliases.o )
14[11 of 16] Compiling Generics.SYB.Basics ( src/Generics/SYB/Basics.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Generics/SYB/Basics.o )
15[12 of 16] Compiling Generics.SYB.Builders ( src/Generics/SYB/Builders.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Generics/SYB/Builders.o )
16[13 of 16] Compiling Generics.SYB.Instances ( src/Generics/SYB/Instances.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Generics/SYB/Instances.o )
17[14 of 16] Compiling Generics.SYB.Schemes ( src/Generics/SYB/Schemes.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Generics/SYB/Schemes.o )
18[15 of 16] Compiling Generics.SYB.Text ( src/Generics/SYB/Text.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Generics/SYB/Text.o )
19[16 of 16] Compiling Generics.SYB.Twins ( src/Generics/SYB/Twins.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Generics/SYB/Twins.o )
20Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/syb-0.7-KRW1LCxdMiCJrmhxCvzo37
21Registering library for syb-0.7..
diff --git a/.stack-work/logs/tagged-0.8.6.log b/.stack-work/logs/tagged-0.8.6.log
deleted file mode 100644
index 94d06e5..0000000
--- a/.stack-work/logs/tagged-0.8.6.log
+++ /dev/null
@@ -1,7 +0,0 @@
1Configuring tagged-0.8.6...
2Preprocessing library for tagged-0.8.6..
3Building library for tagged-0.8.6..
4[1 of 2] Compiling Data.Proxy.TH ( src/Data/Proxy/TH.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Proxy/TH.o )
5[2 of 2] Compiling Data.Tagged ( src/Data/Tagged.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Tagged.o )
6Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/tagged-0.8.6-EiJ2F18RuD68LSMkg0Ly4r
7Registering library for tagged-0.8.6..
diff --git a/.stack-work/logs/th-abstraction-0.2.11.0.log b/.stack-work/logs/th-abstraction-0.2.11.0.log
deleted file mode 100644
index 6c97457..0000000
--- a/.stack-work/logs/th-abstraction-0.2.11.0.log
+++ /dev/null
@@ -1,7 +0,0 @@
1Configuring th-abstraction-0.2.11.0...
2Preprocessing library for th-abstraction-0.2.11.0..
3Building library for th-abstraction-0.2.11.0..
4[1 of 2] Compiling Language.Haskell.TH.Datatype.Internal ( src/Language/Haskell/TH/Datatype/Internal.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Language/Haskell/TH/Datatype/Internal.o )
5[2 of 2] Compiling Language.Haskell.TH.Datatype ( src/Language/Haskell/TH/Datatype.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Language/Haskell/TH/Datatype.o )
6Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/th-abstraction-0.2.11.0-DAhuCgi08HTBWsDjm9nrOq
7Registering library for th-abstraction-0.2.11.0..
diff --git a/.stack-work/logs/transformers-base-0.4.5.2.log b/.stack-work/logs/transformers-base-0.4.5.2.log
deleted file mode 100644
index 2c3a2bc..0000000
--- a/.stack-work/logs/transformers-base-0.4.5.2.log
+++ /dev/null
@@ -1,6 +0,0 @@
1Configuring transformers-base-0.4.5.2...
2Preprocessing library for transformers-base-0.4.5.2..
3Building library for transformers-base-0.4.5.2..
4[1 of 1] Compiling Control.Monad.Base ( src/Control/Monad/Base.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Base.o )
5Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/transformers-base-0.4.5.2-FZmnqdpGRpbAstl7i9dBCk
6Registering library for transformers-base-0.4.5.2..
diff --git a/.stack-work/logs/transformers-compat-0.6.5.log b/.stack-work/logs/transformers-compat-0.6.5.log
deleted file mode 100644
index 3b4d19c..0000000
--- a/.stack-work/logs/transformers-compat-0.6.5.log
+++ /dev/null
@@ -1,9 +0,0 @@
1Configuring transformers-compat-0.6.5...
2Preprocessing library for transformers-compat-0.6.5..
3Building library for transformers-compat-0.6.5..
4[1 of 4] Compiling Control.Monad.Trans.Instances ( src/Control/Monad/Trans/Instances.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Control/Monad/Trans/Instances.o )
5[2 of 4] Compiling Data.Functor.Classes.Generic.Internal ( generics/Data/Functor/Classes/Generic/Internal.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Classes/Generic/Internal.o )
6[3 of 4] Compiling Data.Functor.Classes.Generic ( generics/Data/Functor/Classes/Generic.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Functor/Classes/Generic.o )
7[4 of 4] Compiling Paths_transformers_compat ( .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/autogen/Paths_transformers_compat.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Paths_transformers_compat.o )
8Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/transformers-compat-0.6.5-JTHfwAgpAU6AqyWxijPF3Z
9Registering library for transformers-compat-0.6.5..
diff --git a/.stack-work/logs/unordered-containers-0.2.9.0.log b/.stack-work/logs/unordered-containers-0.2.9.0.log
deleted file mode 100644
index cdc1b08..0000000
--- a/.stack-work/logs/unordered-containers-0.2.9.0.log
+++ /dev/null
@@ -1,122 +0,0 @@
1Configuring unordered-containers-0.2.9.0...
2Preprocessing library for unordered-containers-0.2.9.0..
3Building library for unordered-containers-0.2.9.0..
4[1 of 8] Compiling Data.HashMap.List ( Data/HashMap/List.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/HashMap/List.o )
5[2 of 8] Compiling Data.HashMap.Unsafe ( Data/HashMap/Unsafe.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/HashMap/Unsafe.o )
6[3 of 8] Compiling Data.HashMap.Array ( Data/HashMap/Array.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/HashMap/Array.o )
7
8Data/HashMap/Array.hs:89:1-9: warning: [-Wmissing-signatures]
9 Top-level binding with no type signature:
10 newArray# :: ghc-prim-0.5.3:GHC.Prim.Int#
11 -> a
12 -> ghc-prim-0.5.3:GHC.Prim.State# d
13 -> (# ghc-prim-0.5.3:GHC.Prim.State# d, SmallMutableArray# d a #)
14 |
1589 | newArray# = newSmallArray#
16 | ^^^^^^^^^
17
18Data/HashMap/Array.hs:90:1-10: warning: [-Wmissing-signatures]
19 Top-level binding with no type signature:
20 readArray# :: SmallMutableArray# d a
21 -> ghc-prim-0.5.3:GHC.Prim.Int#
22 -> ghc-prim-0.5.3:GHC.Prim.State# d
23 -> (# ghc-prim-0.5.3:GHC.Prim.State# d, a #)
24 |
2590 | readArray# = readSmallArray#
26 | ^^^^^^^^^^
27
28Data/HashMap/Array.hs:91:1-11: warning: [-Wmissing-signatures]
29 Top-level binding with no type signature:
30 writeArray# :: SmallMutableArray# d a
31 -> ghc-prim-0.5.3:GHC.Prim.Int#
32 -> a
33 -> ghc-prim-0.5.3:GHC.Prim.State# d
34 -> ghc-prim-0.5.3:GHC.Prim.State# d
35 |
3691 | writeArray# = writeSmallArray#
37 | ^^^^^^^^^^^
38
39Data/HashMap/Array.hs:92:1-11: warning: [-Wmissing-signatures]
40 Top-level binding with no type signature:
41 indexArray# :: SmallArray# a
42 -> ghc-prim-0.5.3:GHC.Prim.Int# -> (# a #)
43 |
4492 | indexArray# = indexSmallArray#
45 | ^^^^^^^^^^^
46
47Data/HashMap/Array.hs:93:1-18: warning: [-Wmissing-signatures]
48 Top-level binding with no type signature:
49 unsafeFreezeArray# :: SmallMutableArray# d a
50 -> ghc-prim-0.5.3:GHC.Prim.State# d
51 -> (# ghc-prim-0.5.3:GHC.Prim.State# d, SmallArray# a #)
52 |
5393 | unsafeFreezeArray# = unsafeFreezeSmallArray#
54 | ^^^^^^^^^^^^^^^^^^
55
56Data/HashMap/Array.hs:94:1-16: warning: [-Wmissing-signatures]
57 Top-level binding with no type signature:
58 unsafeThawArray# :: SmallArray# a
59 -> ghc-prim-0.5.3:GHC.Prim.State# d
60 -> (# ghc-prim-0.5.3:GHC.Prim.State# d, SmallMutableArray# d a #)
61 |
6294 | unsafeThawArray# = unsafeThawSmallArray#
63 | ^^^^^^^^^^^^^^^^
64
65Data/HashMap/Array.hs:95:1-12: warning: [-Wmissing-signatures]
66 Top-level binding with no type signature:
67 sizeofArray# :: SmallArray# a -> ghc-prim-0.5.3:GHC.Prim.Int#
68 |
6995 | sizeofArray# = sizeofSmallArray#
70 | ^^^^^^^^^^^^
71
72Data/HashMap/Array.hs:96:1-10: warning: [-Wmissing-signatures]
73 Top-level binding with no type signature:
74 copyArray# :: SmallArray# a
75 -> ghc-prim-0.5.3:GHC.Prim.Int#
76 -> SmallMutableArray# d a
77 -> ghc-prim-0.5.3:GHC.Prim.Int#
78 -> ghc-prim-0.5.3:GHC.Prim.Int#
79 -> ghc-prim-0.5.3:GHC.Prim.State# d
80 -> ghc-prim-0.5.3:GHC.Prim.State# d
81 |
8296 | copyArray# = copySmallArray#
83 | ^^^^^^^^^^
84
85Data/HashMap/Array.hs:97:1-10: warning: [-Wmissing-signatures]
86 Top-level binding with no type signature:
87 thawArray# :: SmallArray# a
88 -> ghc-prim-0.5.3:GHC.Prim.Int#
89 -> ghc-prim-0.5.3:GHC.Prim.Int#
90 -> ghc-prim-0.5.3:GHC.Prim.State# d
91 -> (# ghc-prim-0.5.3:GHC.Prim.State# d, SmallMutableArray# d a #)
92 |
9397 | thawArray# = thawSmallArray#
94 | ^^^^^^^^^^
95
96Data/HashMap/Array.hs:98:1-19: warning: [-Wmissing-signatures]
97 Top-level binding with no type signature:
98 sizeofMutableArray# :: SmallMutableArray# d a
99 -> ghc-prim-0.5.3:GHC.Prim.Int#
100 |
10198 | sizeofMutableArray# = sizeofSmallMutableArray#
102 | ^^^^^^^^^^^^^^^^^^^
103
104Data/HashMap/Array.hs:99:1-17: warning: [-Wmissing-signatures]
105 Top-level binding with no type signature:
106 copyMutableArray# :: SmallMutableArray# d a
107 -> ghc-prim-0.5.3:GHC.Prim.Int#
108 -> SmallMutableArray# d a
109 -> ghc-prim-0.5.3:GHC.Prim.Int#
110 -> ghc-prim-0.5.3:GHC.Prim.Int#
111 -> ghc-prim-0.5.3:GHC.Prim.State# d
112 -> ghc-prim-0.5.3:GHC.Prim.State# d
113 |
11499 | copyMutableArray# = copySmallMutableArray#
115 | ^^^^^^^^^^^^^^^^^
116[4 of 8] Compiling Data.HashMap.UnsafeShift ( Data/HashMap/UnsafeShift.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/HashMap/UnsafeShift.o )
117[5 of 8] Compiling Data.HashMap.Base ( Data/HashMap/Base.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/HashMap/Base.o )
118[6 of 8] Compiling Data.HashMap.Strict ( Data/HashMap/Strict.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/HashMap/Strict.o )
119[7 of 8] Compiling Data.HashMap.Lazy ( Data/HashMap/Lazy.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/HashMap/Lazy.o )
120[8 of 8] Compiling Data.HashSet ( Data/HashSet.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/HashSet.o )
121Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/unordered-containers-0.2.9.0-BRWkoSTuML1cQdpep6Oin
122Registering library for unordered-containers-0.2.9.0..
diff --git a/.stack-work/logs/vector-0.12.0.3.log b/.stack-work/logs/vector-0.12.0.3.log
deleted file mode 100644
index 400d6a6..0000000
--- a/.stack-work/logs/vector-0.12.0.3.log
+++ /dev/null
@@ -1,26 +0,0 @@
1Configuring vector-0.12.0.3...
2Preprocessing library for vector-0.12.0.3..
3Building library for vector-0.12.0.3..
4[ 1 of 21] Compiling Data.Vector.Fusion.Util ( Data/Vector/Fusion/Util.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Fusion/Util.o )
5[ 2 of 21] Compiling Data.Vector.Fusion.Bundle.Size ( Data/Vector/Fusion/Bundle/Size.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Fusion/Bundle/Size.o )
6[ 3 of 21] Compiling Data.Vector.Generic.Mutable.Base ( Data/Vector/Generic/Mutable/Base.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Generic/Mutable/Base.o )
7[ 4 of 21] Compiling Data.Vector.Generic.Base ( Data/Vector/Generic/Base.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Generic/Base.o )
8[ 5 of 21] Compiling Data.Vector.Internal.Check ( Data/Vector/Internal/Check.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Internal/Check.o )
9[ 6 of 21] Compiling Data.Vector.Fusion.Stream.Monadic ( Data/Vector/Fusion/Stream/Monadic.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Fusion/Stream/Monadic.o )
10[ 7 of 21] Compiling Data.Vector.Fusion.Bundle.Monadic ( Data/Vector/Fusion/Bundle/Monadic.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Fusion/Bundle/Monadic.o )
11[ 8 of 21] Compiling Data.Vector.Fusion.Bundle ( Data/Vector/Fusion/Bundle.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Fusion/Bundle.o )
12[ 9 of 21] Compiling Data.Vector.Generic.Mutable ( Data/Vector/Generic/Mutable.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Generic/Mutable.o )
13[10 of 21] Compiling Data.Vector.Generic.New ( Data/Vector/Generic/New.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Generic/New.o )
14[11 of 21] Compiling Data.Vector.Generic ( Data/Vector/Generic.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Generic.o )
15[12 of 21] Compiling Data.Vector.Mutable ( Data/Vector/Mutable.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Mutable.o )
16[13 of 21] Compiling Data.Vector ( Data/Vector.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector.o )
17[14 of 21] Compiling Data.Vector.Primitive.Mutable ( Data/Vector/Primitive/Mutable.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Primitive/Mutable.o )
18[15 of 21] Compiling Data.Vector.Primitive ( Data/Vector/Primitive.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Primitive.o )
19[16 of 21] Compiling Data.Vector.Storable.Internal ( Data/Vector/Storable/Internal.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Storable/Internal.o )
20[17 of 21] Compiling Data.Vector.Storable.Mutable ( Data/Vector/Storable/Mutable.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Storable/Mutable.o )
21[18 of 21] Compiling Data.Vector.Storable ( Data/Vector/Storable.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Storable.o )
22[19 of 21] Compiling Data.Vector.Unboxed.Base ( Data/Vector/Unboxed/Base.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Unboxed/Base.o )
23[20 of 21] Compiling Data.Vector.Unboxed ( Data/Vector/Unboxed.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Unboxed.o )
24[21 of 21] Compiling Data.Vector.Unboxed.Mutable ( Data/Vector/Unboxed/Mutable.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Vector/Unboxed/Mutable.o )
25Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/vector-0.12.0.3-2LEYu9M2i7lERDtz76XG3n
26Registering library for vector-0.12.0.3..
diff --git a/.stack-work/logs/void-0.7.3.log b/.stack-work/logs/void-0.7.3.log
deleted file mode 100644
index e5121af..0000000
--- a/.stack-work/logs/void-0.7.3.log
+++ /dev/null
@@ -1,6 +0,0 @@
1Configuring void-0.7.3...
2Preprocessing library for void-0.7.3..
3Building library for void-0.7.3..
4[1 of 1] Compiling Data.Void.Unsafe ( src/Data/Void/Unsafe.hs, .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/Data/Void/Unsafe.o )
5Installing library in /home/sv/.stack/snapshots/x86_64-linux/lts-13.22/8.6.5/lib/x86_64-linux-ghc-8.6.5/void-0.7.3-5xXWQQsTYbKFlr3KfNvyL8
6Registering library for void-0.7.3..
diff --git a/8queens.cabal b/8queens.cabal
index be1e2b2..45f38f8 100644
--- a/8queens.cabal
+++ b/8queens.cabal
@@ -14,6 +14,7 @@ cabal-version: >=1.10
14extra-source-files: README.md 14extra-source-files: README.md
15 15
16executable 8queens 16executable 8queens
17 ghc-options: -O2 -W -Wall -threaded -rtsopts -with-rtsopts=-N
17 hs-source-dirs: src 18 hs-source-dirs: src
18 main-is: Main.hs 19 main-is: Main.hs
19 default-language: Haskell2010 20 default-language: Haskell2010