とても簡単な質問があります。bind 演算子を使用するコード ブロックの後に where 句を使用したいのですが、コンパイル エラーが発生します。
簡単な例を次に示します。
main =
putStrLn "where clause test:" >>
return [1..10] >>= \list ->
print list'
where list' = reverse list -- test1.hs:5:28: Not in scope: `list'
次のように、list' に let 句を使用できます。
main =
putStrLn "where clause test:" >>
return [1..10] >>= \list ->
let list' = reverse list -- works of course
in print list'
しかし、where句を使用できれば本当にいいのですが...
私もdo表記で試しました
main = do
putStrLn "where clause test:"
list <- return [1..10]
print list'
where list' = reverse list --test3.hs:5:30: Not in scope: `list'
同じ問題。このような状況で where 句を使用できますか?