2026-08-25
SizeOrder.hs
import Data.List (sort)
data Size = Large | Medium | Small deriving (Eq, Ord, Show)
main :: IO ()
main = print (sort [Small, Large, Medium])
これは何を出力するでしょうか?
Answer
[Large,Medium,Small](その後に改行)。deriveされたOrdは、data宣言で構築子を書いた順番をそのまま大小関係にします。名前の意味とは無関係です。ここではLargeを最初に書いたので一番小さく、Smallを最後に書いたので一番大きくなり、直感的な「大きさ」の順序とはちょうど逆になります。