返回

带有haskell的k维Ord类型类

发布时间:2022-02-22 02:51:35 404

我想实现一个函数,它包含两个对象,我只想知道这些对象,它们可以被认为是向量,我想比较相应的字段。(无论字段及其类型如何)

所以我想实现polymothic函数c,它有两个相同多态类型的值,每个值有N个字段,相应的字段有相同的类型,而且所有字段都是Ord的实例。所以我想比较相应的字段,并建立一个布尔值列表

c :: KD o => o -> o -> [Bool]
c o1 o2 = (\n -> (kth o1 n) == (kth o2 n) ) <$> [1..dimensions o1]

class KD c where
  dimensions :: c -> Int
  kth :: (Ord ?) => c -> Int -> ?
  
-- for example pair can be used as object with 2 dimensions 
instance (Ord a, Ord b, Show a, Show b) => KD (a,b) where
    dimensions _ = 2
    kth (a,_) 1 = undefined -- "I want a here"
    kth (_,b) 2 = undefined -- "I want b here"

我对KD typeclass和实例实现感到厌倦,如何在Haskell中实现这一点?

另外,我正在考虑将每个对象映射到一个整数列表,然后处理比较整数,但我不知道我能不能为任何类型(如字符串、列表等)实现这样的映射。。

class KDI c where
  map_ :: c -> [Integer]
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像
相关帖子