我是Haskell的新手(更常见的是函数式编程),所以请原谅我这是非常基本的东西.为了获得更多的品味,我尝试在Haskell中实现一些我正在研究的算法.我有一个简单的模块Interval,在线上实现间隔.它包含类型
data Interval t = Interval t t
Run Code Online (Sandbox Code Playgroud)
辅助功能
makeInterval :: (Ord t) => t -> t -> Interval t
makeInterval l r | l <= r = Interval l r
| otherwise = error "bad interval"
Run Code Online (Sandbox Code Playgroud)
和一些关于间隔的效用函数.
在这里,我的兴趣在于多维间隔(d间隔),那些由d间隔组成的对象.我想分别考虑d-区间,它是线上d个不相交区间(多个区间)与d个单独线条(轨道区间)上d区间的并集的联合.考虑到不同的算法处理,我认为有两种不同的类型(即使两者都是这里的间隔列表)会很好,例如
import qualified Interval as I
-- Multilple interval
newtype MInterval t = MInterval [I.Interval t]
-- Track interval
newtype TInterval t = TInterval [I.Interval t]
Run Code Online (Sandbox Code Playgroud)
允许进行不同的健全性检查,例如
makeMInterval :: (Ord t) => [I.Interval t] -> MInterval t
makeMInterval is = …Run Code Online (Sandbox Code Playgroud) haskell ×1