Namaran

Code daily. Without assist.

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を最後に書いたので一番大きくなり、直感的な「大きさ」の順序とはちょうど逆になります。