haskell-jp / beginners #4

hieのバージョンは以下でした。

% hie --version
Version 1.0.0.0, Git revision 22c69c620b2707119194bb33c4ae15427e46f0a2 (3578 commits) x86_64 ghc-8.6.5
ありがとうございます!hie の出力ログって見れますか?
例えば僕の環境だと、こんな感じで Cradle set succesfully と表示されます。
ありがとうございます。
出力には何も表示されていませんでした。
右の「タスク」っていうところをクリックすると Haskell HIE って選択できます?
こんな感じです
@yaza_ta has joined the channel
手元の環境でも、たぶん再現しました。

この issue っぽいです。
HIE doesn’t work after build. “haskell-lsp: Failed to parse message header” error #1499
https://github.com/haskell/haskell-ide-engine/issues/1499

プロジェクト作ってから、一度 stack build すると直るかもしれません。(その後一応vscodeを再起動した方が良いかも)

$ stack new testproj
$ cd testproj
$ stack build
また、プロジェクトのトップに以下の内容で hie.yaml というファイルを作成することでも直るようです。

cradle:
  stack:

hie.yaml を追加する場合はこんな感じ
@kagilinn has joined the channel
ありがとうございます。
一度 stack build することで解決しました。
どうもお騒がせしました。今後ともよろしくお願いします。
@stegeman has joined the channel
@stefan_pavikevik has joined the channel
@unno.hideyuki has joined the channel
@baldurpet has joined the channel
@fujiy has joined the channel
@motohiro686 has joined the channel
@shiketai.35 has joined the channel
@syani4732 has joined the channel
@koyama has joined the channel
@kafu.h1998 has joined the channel
@takuo has joined the channel
ghci上にて、data宣言で型を定義し、その値を表示させようとすると、以下のエラーとなります。どこが間違っていますか? [連載QA]

Prelude> data Signal = Red | Yellow | Blue

Prelude> Red
<interactive>:3:1: error:
    • No instance for (Show Signal) arising from a use of 'print'
    • In a stmt of an interactive GHCi command: print it

data宣言で定義した型の値を表示するためには、その型が Show クラスのインスタンスになっている必要があります。
次のように、`deriving Show`をつけることで、簡単に、Showクラスのインスタンスに出来ます。

Prelude> data Signal = Red | Yellow | Blue deriving Show

Prelude> Red
Red

derivingや、Show については、以下の記事が参考になります。

https://employment.en-japan.com/engineerhub/entry/2017/09/11/110000#deriving%E3%81%A7%E5%9E%8B%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%AB%E5%B1%9E%E3%81%99%E3%82%8B%E5%9E%8B%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%82%92%E8%87%AA%E5%8B%95%E3%81%A7%E5%AE%9A%E7%BE%A9%E3%81%99%E3%82%8B
@ap.gr.le has joined the channel
@yahiru1121 has joined the channel
@masa1023tora has joined the channel
@hitoshi has joined the channel
@hayato.daikichi has joined the channel
@alex has joined the channel
Reminder:
beginnersチャンネルは、新しい人がスムーズにHaskellに慣れるための質問を歓迎するチャンネルです。
Haskell-Beginners ML や IRCの#haskell-beginners や RedditのMonthly Hask Anythingのような位置づけを意図しています。

beginnersチャンネルでの回答側は、以下の左側のような応答を厳禁とする運用です。
• それはくだらない質問だ → くだらない質問など無い
• その質問は以前にもあった → 質問者はそんなこと知らない
• Google検索せよ → 検索できないから質問している
beginnersチャンネルでは、例えば以下のレベルの質問から歓迎します。
: とは何のことですか。
• タプルとは何ですか。
@benibana2001 has joined the channel
@liveinwood has joined the channel
@fujino has joined the channel
@restartsugar has joined the channel
@charlie.51749 has joined the channel
@smalltalker74 has joined the channel
@omura.cre has joined the channel
@t.takeuchi.a has joined the channel
@t-mishima has joined the channel
@uhryks has joined the channel
@taku2011katagiri has joined the channel
@ozaki.ryushi has joined the channel
@yohta.kimura has joined the channel
@p.y.on1.3 has joined the channel
@s.okuda.0728 has joined the channel
はじめまして。はじめて関数型言語を触ろうとしています…が、Stack 2.1.3をインストールすると、GHC 8.8.2とCabal 3.0.1.0がインストールされてしまいました。メッセージによるとテストされていないとのことですので、8.6と2.4にしたいと思いました。そこで
stack ghci --resolver ghc-8.6.5
はしてみたのですが、Cabalはどうすればよいのか検索で見つけることができませんでした。またダウングレードしても全てのバージョンは残るとのことなのですが、どのバージョンで実行するのか、どうやったら指定できるのか、お手数ですがお時間のあるときに教えていただけましたら幸いです。

参考にしたページ


stackコマンド経由で実行する限りにおいては、プロジェクトのバージョンに合ったcabalが使われるので、あんまり気にする必要はないです。cabalを直呼びするのは少し難しいので、慣れるまでは常にstackを使うやり方を検索するようにすれば、そうそうハマらないと思います