我想编写一个与List monad类似的Set monad。但是,由于Set要求对其类型进行排序,因此无法执行此操作。有没有办法创建一个只在特定类型类(例如,Ord)中获取值的monad?我想写的代码是
instance Monad Set.Set where
return a = Set.singleton a
-- set α, function (α -> set β)
xs >>= f = Set.fold
(\x s -> Set.union s (f x))
Set.empty
xs
提前致谢!