(GHCはcabalではないので、
cabal.project
や vector.cabal
を読まないのは当たり前っちゃあ当たり前で、問題はprecompiled packageがGHCからvisibleでないことだけなのですが)cabal.project
や vector.cabal
を読まないのは当たり前っちゃあ当たり前で、問題はprecompiled packageがGHCからvisibleでないことだけなのですが)stack build
-> stack ghc
でとりあえずうまくいきました! ただ, vector
は project root 直下に <projectroot>/src/Data/Vector
とあるのではなく <projectroot>/Data/Vector
とあるので,project rootでコンパイルしようとすると cabal
でも stack
でも失敗するのは盲点でした (これを改善しても cabal
だと失敗するのですが・・・.):show language
で出せるはずです:set
でも出る感じ。gitrev
パッケージって誰か使ったことのある方いらっしゃいます? Template Haskell 使って実行バイナリの中に Git revision hashを書き込んでくれる可愛いパッケージで、Option parser library (`<project root>/src/TheApplicationProject/OptionParser.hs` みたいなファイル)で --version
の実装に使っています。ですが、 <project root>
で git checkout
して stack build
しても stack exec executable -- --version
の Git revision hashが更新されないことが多数で、いちいち stack clean
しないといけなくて困っています。`gitrev` の実装では addDependentFile
を .git/HEAD
やらに対してちゃんと実行しているように見えるので、行き詰まってしまっているのですが、どなたかお心当たりのある方いらっしゃいます?GHC will happily infer the type g :: F a -> F a. But you can't write that type signature or, indeed, the more specific one above. (Arguably this behaviour, where GHC infers a type it can't check, is very confusing. I suppose we could make GHC reject both programs, with and without type signatures.)
gitrev
及び githash
共通の問題であることが発覚しました。 .git/HEAD
が コミットハッシュである際には addDependentFile ".git/HEAD"
されますが、 .git/HEAD
が ref: branch
の際には addDependentFile "branch"
のみが呼ばれ、 addDependentFile ".git/HEAD"
は呼ばれないため、 git checkout
では recompileはtriggerされない、という問題のようです。.git/HEAD
が ref: branch\n
であるところを drop 5
してブランチファイルを branch\n
として検索した結果「ブランチファイルが存在してない扱いになる」ことが判明しました。面白かったのでお知らせします。ABC
、`channelName` → ChannelName
)なのですが、Const'
を接頭(例:`ABC` → ABC
、`channelName` → Const'channelName
、`3270_Attn` → Const'3270_Attn
)しようという話になっています。'
は用いることができないものと思われる(C言語において識別子名に '
は用いることができない故 https://twitter.com/na4zagin3/status/1262012340339265536)ので、この方針は機能するものと思います。Const'
が着くのは若干気持ち悪さがあったりしますし、他の方法等思いつく方等いらっしゃいますか?C'
でよくない?という気はします。addDependentFile
でディレクトリでない存在するファイルの変更・削除の追跡ができるのはわかるのですが、ディレクトリに対するファイルの削除・追加とか、ファイルの新規作成の追跡ってできないものでしょうか・・・。この前お聞きした githash
だの gitrev
だのにpull requestを書きたいのですが、Gitブランチの参照先の変化がファイルの新規作成によって起こる可能性があって、困り果てています。 https://haskell-jp.slack.com/archives/C5666B6BB/p1589353829140500C'
で良いと思いますし、実質的に IBus バウンディングにしか影響が無いようなので、 C'
にしてもらいましたstack new
なりを実行してプロジェクトを作って、そのプロジェクトを開いてエラーが起きないことを確認するのが一番でしょう。Note: loading of 'Setup.hs' is not supported.
2020-05-25 15:46:04.67934 [ThreadId 4] - run entered for hie-wrapper(hie-wrapper) Version 1.2, Git revision ee5b98c6bd3610ff90cb5373608a09c5813dcb69 (3829 commits) x86_64 ghc-8.8.2 2020-05-25 15:46:04.680157 [ThreadId 4] - Current directory:/Users/kent 2020-05-25 15:46:04.680199 [ThreadId 4] - Operating system:darwin 2020-05-25 15:46:04.680228 [ThreadId 4] - args:["path/to/Module.hs"] 2020-05-25 15:46:04.682433 [ThreadId 4] - Could not find a Project for file: /Users/kent/File.hs 2020-05-25 15:46:04.68252 [ThreadId 4] - Module "/Users/kent/File.hs" is loaded by Cradle: Cradle {cradleRootDir = "/Users/kent", cradleOptsProg = CradleAction: Direct} 2020-05-25 15:46:04.682561 [ThreadId 4] - Cradle directory:/Users/kent 2020-05-25 15:46:04.682781 [ThreadId 4] - Executing GHC on path with args: --numeric-version 2020-05-25 15:46:04.779279 [ThreadId 4] - Project GHC version:8.8.3 2020-05-25 15:46:04.779462 [ThreadId 4] - hie exe candidates :["hie-8.8.3","hie-8.8","hie"] 2020-05-25 15:46:04.779869 [ThreadId 4] - found hie exe at:/Users/kent/.local/bin/hie-8.8 2020-05-25 15:46:04.779931 [ThreadId 4] - args:["path/to/Module.hs"] 2020-05-25 15:46:04.779992 [ThreadId 4] - launching .... Running HIE(hie-8.8) Version 1.2, Git revision ee5b98c6bd3610ff90cb5373608a09c5813dcb69 (3829 commits) x86_64 ghc-8.8.2 To run as a LSP server on stdio, provide the '--lsp' argument Current directory:/Users/kent args:["path/to/Module.hs"] Looking for project config cradle... 2020-05-25 15:46:04.807328 [ThreadId 4] - Could not find a Project for file: /Users/kent/File.hs 2020-05-25 15:46:04.807789 [ThreadId 4] - Module "/Users/kent/File.hs" is loaded by Cradle: Cradle {cradleRootDir = "/Users/kent", cradleOptsProg = CradleAction: Direct} 2020-05-25 15:46:04.808 [ThreadId 4] - Executing GHC on path with args: --numeric-version 2020-05-25 15:46:04.940545 [ThreadId 4] - Executing GHC on path with args: --print-libdir ################################################### Cradle: GHC session Project Ghc version: 8.8.3 Libdir: Just "/usr/local/Cellar/ghc/8.8.3/lib/ghc-8.8.3" Searching for Haskell source files... Found 0 Haskell source files. ################################################### Found the following files: Load them all now. This may take a very long time. ################################################### ################################################### Dumping diagnostics: Note: loading of 'Setup.hs' is not supported. 2020-05-25 15:46:05.313744 [ThreadId 4] - done
print $ parseFoo "x"
を Right "good" に変える方法はありますか……??