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是枚举中桶的索引
脱离我的头顶:
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为您提供一个函数,它接受一个Int并返回一个有限元.如果传递0,则获得单个元素的有限元素,否则为空元素.