File tree Expand file tree Collapse file tree 1 file changed +1
-1
lines changed
preprocessed-site/posts/2020 Expand file tree Collapse file tree 1 file changed +1
-1
lines changed Original file line number Diff line number Diff line change @@ -146,7 +146,7 @@ addAction x y = PureAction (\_ -> x + y)
146
146
()
147
147
```
148
148
149
- もし、さっきの ` putStrLn "str" ` がちゃんと計算されていたなら、今回は ` something happened! ` というエラーが見れるはずだ。ところが、全く何の問題もなく式の実行は終わり、` () ` が出力されてしまった。Haskell は遅延評価により、最終結果に本当に必要な部分しか計算してくれないので、` putStrLn "str" ` の部分は計算されず無視されてしまっていただけのようだ。では、ちゃんと修正してみよう。修正は、` seq ` という魔法の関数を使うことで可能だ。` seq :: a -> b -> b ` は一番最初に渡された引数を計算し、その後2番目の引数に与えられたものを返す関数だ 。この関数を使うと、次のように修正が可能だ:
149
+ もし、さっきの ` putStrLn "str" ` がちゃんと計算されていたなら、今回は ` something happened! ` というエラーが見れるはずだ。ところが、全く何の問題もなく式の実行は終わり、` () ` が出力されてしまった。Haskell は遅延評価により、最終結果に本当に必要な部分しか計算してくれないので、` putStrLn "str" ` の部分は計算されず無視されてしまっていただけのようだ。では、ちゃんと修正してみよう。修正は、` seq ` という魔法の関数を使うことで可能だ。` seq :: a -> b -> b ` は一番最初に渡された引数を (必要かどうかに関わらず、強制的に) 計算し、その後2番目の引数を返す関数だ 。この関数を使うと、次のように修正が可能だ:
150
150
151
151
``` haskell
152
152
>>> putStrLn " str" `seq` ()
You can’t perform that action at this time.
0 commit comments