この質問がよく考えられていないように思われる場合は申し訳ありませんが、Haskell で次のようなものに対して一貫したセマンティクスを定義できるかどうか疑問に思っていました。
derive Num String from Int where
get = read
set = show
derive Ord Bool from Integer where
get = fromEnum
set = toEnum
derive (Monad, Functor) Maybe from [] where
get (Just x) = [x]
get Nothing = [ ]
set [x] = Just x
set [ ] = Nothing
そうしない理由はわかりません。状況によってはボイラープレートを削減するように思えますが、これを実装できるかどうか (もしそうなら、どれほど簡単か) はわかりません。
編集:
私の意図は、たとえば最初の例を次のようなものに置き換えることです。
instance Num String where
get = read :: String -> Int
set = show :: Int -> String
a + b = set $ get a + get b
a * b = set $ get a * get b
...