获取Int并返回列表的函数

Eli*_*kiy -2 haskell functional-programming list

我在Haskell中进行了练习,我需要创建各种类型.第一种类型称为有限,它定义如下:

type Finite a = [a]
Run Code Online (Sandbox Code Playgroud)

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

singleF :: a -> Finite a
Run Code Online (Sandbox Code Playgroud)

所以我这样实现它:

single n = [n]
Run Code Online (Sandbox Code Playgroud)

然后我创建另一种类型

type Enumeration a = Int -> Finite a
Run Code Online (Sandbox Code Playgroud)

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

singleE :: a -> Enumeration a
Run Code Online (Sandbox Code Playgroud)

在我的理解中,类型Enumeration是从Int到类型列表的函数的同义词a,但我无法理解我是如何实现它的.

从锻炼(以前的类型"有限"也被称为"桶"): An enumeration is an infinite sequence of finite buckets, indexed by natural numbers.

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

JP *_*mau 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
Run Code Online (Sandbox Code Playgroud)

"a"
""
Run Code Online (Sandbox Code Playgroud)

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

  • 哦,我想我现在明白了!我可以这样替换`singleE :: a - > Int - > Finite a`,这意味着我现在也可以得到`Int`!非常感谢! (2认同)