获取Int并返回列表的函数

时间:2016-02-28 15:45:48

标签: list haskell functional-programming

我在Haskell中进行了一个练习,我需要创建各种类型。第一种类型叫做Finite,其定义如下:

type Finite a = [a]

然后我需要返回一个像这样定义的单例

singleF :: a -> Finite a

所以我这样实现了它:

single n = [n]

然后我创建了另一种类型

type Enumeration a = Int -> Finite a

然后我需要重新实现单例函数

singleE :: a -> Enumeration a

根据我的理解,类型Enumeration是从Int到类型a列表的函数的同义词,但我无法理解我究竟能如何实现它。

从练习(前一种类型'有限'也称为'桶'):An enumeration is an infinite sequence of finite buckets, indexed by natural numbers

函数single:I suggest for simplicity that you put the sole item in bucket 0,所以我认为int是枚举中存储桶的索引

1 个答案:

答案 0 :(得分:5)

脱离我的头顶:

singleE :: a -> Enumeration a
singleE a 0 = singleF a
singleE _ _ = []

main :: IO ()
main = do
  let s=singleE 'a'
  print $ s 0
  print $ s 5

给出

"a"
""

singleE为您提供了一个函数,它接受一个I​​nt并返回一个有限元。如果传递0,则获得单元素的有限元素,否则为空元素。