小编gar*_*lfo的帖子

Haskell新手的类型

我是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

9
推荐指数
2
解决办法
636
查看次数

标签 统计

haskell ×1