2026-08-27
Increment.hs
main :: IO ()
main = do
print (succ 5)
print (succ 'y')
print (map succ [1, 2, 3])
これは何を出力するでしょうか?
Answer
6、'z'、[2,3,4] — 1行ずつ。succはEnum型クラスのメソッドで、Haskellにおける汎用的な「次の値」を表します。C系言語の++/--のような、変数を書き換える専用構文はHaskellにはありません(値は不変なので、そもそも「変数をインクリメントする」という発想になじみません)。IntでもCharでも同じsuccが使え、ユーザー定義のEnum型でも同様です。ちなみに++というトークンはHaskellにも存在しますが、意味はまったく別物で、リストの連結演算子([1,2] ++ [3,4])です。