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 を追加する場合はこんな感じ
@ has joined the channel
ありがとうございます。
一度 stack build することで解決しました。
どうもお騒がせしました。今後ともよろしくお願いします。
Luite Stegeman
@Luite Stegeman has joined the channel
profunctorial95
@profunctorial95 has joined the channel
@ has joined the channel
Baldur Blöndal
@Baldur Blöndal has joined the channel
@fujiy has joined the channel
@moto has joined the channel
@Shin has joined the channel
@ has joined the channel
@koyama41 has joined the channel
@kafu 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
@iwataka has joined the channel
@y_ahiru has joined the channel
@ has joined the channel
@Daikichi has joined the channel
@ちくわ has joined the channel
@Alex Sayers has joined the channel
Reminder:
beginnersチャンネルは、新しい人がスムーズにHaskellに慣れるための質問を歓迎するチャンネルです。
Haskell-Beginners ML や IRCの#haskell-beginners や RedditのMonthly Hask Anythingのような位置づけを意図しています。

beginnersチャンネルでの回答側は、以下の左側のような応答を厳禁とする運用です。
• それはくだらない質問だ → くだらない質問など無い
• その質問は以前にもあった → 質問者はそんなこと知らない
• Google検索せよ → 検索できないから質問している
beginnersチャンネルでは、例えば以下のレベルの質問から歓迎します。
: とは何のことですか。
• タプルとは何ですか。
@iwase has joined the channel
@liveinwood has joined the channel
@fujino has joined the channel
@ has joined the channel
@y-tsune has joined the channel
@kanmo has joined the channel
@ has joined the channel
@ has joined the channel
@t.mishima has joined the channel
@prsdta has joined the channel
@ has joined the channel
@rozaki has joined the channel
@木村洋太 has joined the channel
@py0n has joined the channel
@Sotaro OKUDA 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を使うやり方を検索するようにすれば、そうそうハマらないと思います