haskell-jp / questions #101 at 2022-08-02 08:57:01 +0900

すみません。
Data.Array.Unboxedの使い方で分からないことがあってteratailに質問しているのですが、回答が付かないので何かわかるかたがおられましたらアドバイス頂きたく。
https://teratail.com/questions/r7tsy92f3nildu
エラーメッセージを見ると、
/home/apo/doc/project/make/haskell/20220730_2/my-project/app/Main.hs:8:1: error:
    ~ Non type-variable argument in the constraint: IArray a Int
      (Use FlexibleContexts to permit this)

とあるので、とりあえず、Main.hs の先頭行に {-# LANGUAGE FlexibleContexts #-} を追加してみるとよいかも。
{-# LANGUAGE FlexibleContexts #-}

を追加したら動きました。ありがとうございます。
「Use FlexibleContexts to permit this」とはそういう意味だったのですね。
FlexibleContextsを使わない解決法として、func1に明示的に型注釈を与えるというやり方もあります。
func1 :: UArray Int Int -> IO ()

という感じで。Haskellではトップレベルの関数に明示的に型注釈を与えるのが良い慣習とされています。
言語拡張を削除して
func1 :: UArray Int Int -> IO ()

を追加しても動きました。
ありがとうございます。
teratailで2日間、回答が付かなかった問題が、このslackで1時間の内に2通りの回答が頂けてびっくりです。ありがとうございます。haskell-jpすごい。
通常ならteratailの質問はRSS経由で questions-feed-jp に流れるはずなんですが、止まっちゃってるっぽいですね... ちょっと誰か調べてくれませんか?体調不良で、パソコン版Slackを開くのが億劫な状況です。
と思ったらどちらにしても今teratail不調みたいですね :cold_sweat: 焦っても今できることはなさそう
https://twitter.com/teratail/status/1554028954524467201?s=20&t=ZpIIpArd1UoWC81-GinPKg