gpt4 book ai didi

haskell - Haskell 中的流数据类型实现

转载 作者:行者123 更新时间:2023-12-04 00:12:29 25 4
gpt4 key购买 nike

我在大学开设了 Haskell 编程类(class)。而且我必须实现自己的数据类型“Stream”及其一些功能:

data Stream a = a :> Stream a

我在实现函数“streamToList”时遇到问题:

streamToList :: Stream a -> [a]

它必须接受一个“Stream”对象并返回一个无限列表。但我不知道如何获取这个对象的元素。如何获取此流的元素?

另外,我想问一下:这个数据类型的对象的初始化方法是什么?

最佳答案

您已将数据类型定义为

data Stream a = a :> Stream a

这是一个模式,一个如何使用的模板。 “使用”是指创建访问。换句话说,互动

可以使用定义中 = 左侧的模式访问此类型的值

foo (a :> restOfAs) = a : foo restOfAs

(这个函数的类型是什么?)

可以创建这种类型的值,将其用作定义中 = 右侧的代码模式,例如

bar i = i :> bar (i+1)

baz [x]    = x :> baz [x]
baz (x:xs) = x :> baz xs
baz [] = error "can't be empty"

quux x = xs  where  
xs = x :> xs

(这些函数有哪些类型?)

关于haskell - Haskell 中的流数据类型实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67950487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com