Haskell Quiz No.11

難易度: λ

以下のプログラムの実行結果はどうなるでしょうか?

#!/usr/bin/env stack
-- stack script --resolver lts-11.17
import Data.Char

main :: IO ()
main = do
  print $ isUpper 'あ'
  print $ isAsciiUpper 'あ'

答えは次回

はじめに

前回の問題と答えは以下の通りです。

問題

難易度: λ

以下の実行結果はどうなるでしょう!

#!/usr/bin/env stack
-- stack script --resolver lts-11.17
import Conduit

main :: IO ()
main = runConduit $ yieldMany [1..10] .| iterMC print .| return ()

こたえ

何も表示されない。

$ ./Quiz10.hs

解説

yieldMany 関数があるので iterMC print によって 1 〜 10 が表示されるように思うかもしれません。

しかし、最後のパイプが return () となっているため、何も起きません。

まとめ

  • Conduit は値が上流から自然に流れてくるのではなく、必要な時に下流から引っ張っているイメージで考えると良い。

以上です。