I started reading Parallel and Concurrent Programming in Haskell by Simon Marlow, which has example code in parconc-examples. At the moment, it will only build with ghc 8.2.2, but it was easy enough to point
stack at an older LTS version that used 8.2.2.
parconc-examples is not set up like a Stack project, because individual source code files each have their own
main function. This causes
stack ghci to complain about the ambiguity:
The main module to load is ambiguous. Candidates are: 1. Package `parconc-examples' component parconc-examples:exe:GenSamples with main-is file: /Users/shaun/workspace/parconc-examples-0.4.7/kmeans/GenSamples.hs .. [~ 80 more examples here]
stack exec ghci works just fine.
Now the problem is getting
haskell-mode to use
stack exec ghci instead of the default
.dir-local file at the root of the
parconc-examples directory seemed like the right thing to do to keep the setup from messing with other parts of the setup. This looks like:
((haskell-mode . ((haskell-process-path-stack . ("stack" "exec")) (haskell-process-args-stack-ghci . ("--" "-ferror-spans")) (dante-repl-command-line . ("stack" "exec" "ghci")))))
The documentation says that this is a list mapping major modes to variables. dante is a minor mode, so the
dante-repl-command-line variable goes under the list of